From d4ad1672404745c68096c700edc0816051f6db3f Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Tue, 8 Apr 2025 22:08:05 +0200 Subject: add documentation --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..f4d867b --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# zears + +Implementation of [AEZ v5](https://www.cs.ucdavis.edu/~rogaway/aez/index.html) in Rust. Works without hardware AES support. + +## ☣️ Cryptographic hazmat ☣️ + +This crate is not battle tested and not audited. It exists as a learning exercise. Use it at your own risk. + +## AEZ encryption + +From the AEZ website: + +> AEZ is an authenticated-encryption (AE) scheme optimized for ease of correct use ("AE made EZ"). It was invented by Viet Tung Hoang, Ted Krovetz, and Phillip Rogaway. The algorithm encrypts a plaintext by appending to it a fixed authentication block (some zero bits) and then enciphering the resulting string with an arbitrary-input-length blockcipher, this tweaked by the nonce, AD, and authenticator length. The approach results in strong security and usability properties, including nonce-reuse misuse resistance, automatic exploitation of decryption-verified redundancy, and arbitrary, user-selectable length expansion. + +## Example use + +This crate provides an easy-to-use interface for AEZ: + +```rust +use zears::Aez; +let aez = Aez::new(b"my key"); +let ciphertext = aez.encrypt(b"nonce", &[b"associated data"], 16, b"message"); +let plaintext = aez.decrypt(b"nonce", &["associated data"], 16, &ciphertext); +assert_eq!(plaintext.unwrap(), b"message"); +``` + +## License + +This crate is licensed under the terms of the MIT license. You can find the full license text in LICENSE. -- cgit v1.2.3