1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use chacha20poly1305::aead::generic_array::GenericArray; use chacha20poly1305::aead::{self, Aead, NewAead}; use chacha20poly1305::ChaCha20Poly1305; pub(crate) fn aead_encrypt(key: &[u8; 32], plaintext: &[u8]) -> Vec<u8> { let key = GenericArray::clone_from_slice(key); let aead = ChaCha20Poly1305::new(key); let nonce = GenericArray::from_slice(&[0; 12]); aead.encrypt(nonce, plaintext.as_ref()) .expect("we won't overflow the ChaCha20 block counter") } pub(crate) fn aead_decrypt(key: &[u8; 32], ciphertext: &[u8]) -> Result<Vec<u8>, aead::Error> { let key = GenericArray::clone_from_slice(key); let aead = ChaCha20Poly1305::new(key); let nonce = GenericArray::from_slice(&[0; 12]); aead.decrypt(nonce, ciphertext.as_ref()) }