[−][src]Crate chacha20poly1305
ChaCha20Poly1305
(RFC 8439) is an
Authenticated Encryption with Associated Data (AEAD)
cipher amenable to fast, constant-time implementations in software, based on
the ChaCha20 stream cipher and Poly1305 universal hash function.
This crate also contains an implementation of XChaCha20Poly1305
-
a variant of ChaCha20Poly1305 with an extended 192-bit (24-byte) nonce.
Security Warning
No security audits of this crate have ever been performed, and it has not been thoroughly assessed to ensure its operation is constant-time on common CPU architectures.
Where possible the implementation uses constant-time hardware intrinsics, or otherwise falls back to an implementation which contains no secret-dependent branches or table lookups, however it's possible LLVM may insert such operations in certain scenarios.
Usage
use chacha20poly1305::ChaCha20Poly1305; use aead::{Aead, NewAead, generic_array::GenericArray}; let key = GenericArray::clone_from_slice(b"an example very very secret key."); // 32-bytes let aead = ChaCha20Poly1305::new(key); let nonce = GenericArray::from_slice(b"unique nonce"); // 12-bytes; unique per message let ciphertext = aead.encrypt(nonce, b"plaintext message".as_ref()).expect("encryption failure!"); let plaintext = aead.decrypt(nonce, ciphertext.as_ref()).expect("decryption failure!"); assert_eq!(&plaintext, b"plaintext message");
Re-exports
pub use aead; |
Structs
ChaCha20Poly1305 | ChaCha20Poly1305 Authenticated Encryption with Additional Data (AEAD). |
XChaCha20Poly1305 | XChaCha20Poly1305 is a ChaCha20Poly1305 variant with an extended
192-bit (24-byte) nonce. The |
Type Definitions
Tag | Poly1305 tags |