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 |
#1576 in Cryptography
76 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
~325KB