6 releases
| 0.2.0 | Sep 15, 2022 |
|---|---|
| 0.1.4 | May 9, 2022 |
| 0.1.2 | Jan 24, 2022 |
| 0.1.1 | Oct 31, 2021 |
#2345 in Cryptography
755 downloads per month
39KB
938 lines
aead-io
Provides a wrapper around a Write/Read object and a
StreamPrimitive to provide an easy interface for doing
correct encryption.
let key = b"my very super super secret key!!".into();
let plaintext = b"hello world!";
let ciphertext = {
let mut ciphertext = Vec::default();
let mut writer = EncryptBE32BufWriter::<ChaCha20Poly1305, _, _>::new(
key,
&Default::default(), // please use a better nonce ;)
Vec::with_capacity(128),
&mut ciphertext,
)
.unwrap();
writer.write_all(plaintext)?;
writer.flush()?;
ciphertext
};
let decrypted = {
let mut reader = DecryptBE32BufReader::<ChaCha20Poly1305, _, _>::new(
key,
Vec::with_capacity(256),
ciphertext.as_slice(),
)
.unwrap();
let mut out = Vec::new();
let _ = reader.read_to_end(&mut out).unwrap();
out
};
assert_eq!(decrypted, plaintext);
#
no_std
This package is compatible with no_std environments. Just disable the default features, and
implement the Buffer, CappedBuffer,
ResizeBuffer, Write and
Read accordingly. There should be some default implementations for Vec<u8>
and byte slices
License: MIT OR Apache-2.0
Dependencies
~620KB
~15K SLoC