diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 42 |
1 files changed, 42 insertions, 0 deletions
@@ -891,6 +891,48 @@ fn split_key(key: &Key) -> (Block, Block, Block) { ) } +/// Access to the primitive AEZ functions `aez_prf`, `aez_hash`, `encipher`, `decipher` and `e`. +/// +/// Note that this is a low-level API, not intended for general use. +/// +/// Note further that this API is exempt from semver guarantees and might break. +#[cfg(feature = "primitives")] +pub mod primitives { + use super::{Aez, Block}; + + pub fn encipher<A: AsRef<[u8]>, T: IntoIterator<Item = A>>( + aez: &Aez, + tweaks: T, + message: &mut [u8], + ) { + super::encipher(aez, tweaks, message) + } + + pub fn decipher<A: AsRef<[u8]>, T: IntoIterator<Item = A>>( + aez: &Aez, + tweaks: T, + message: &mut [u8], + ) { + super::decipher(aez, tweaks, message) + } + + pub fn aez_hash<A: AsRef<[u8]>, T: IntoIterator<Item = A>>(aez: &Aez, tweaks: T) -> [u8; 16] { + super::aez_hash(aez, tweaks).bytes() + } + + pub fn aez_prf<A: AsRef<[u8]>, T: IntoIterator<Item = A>>( + aez: &Aez, + tweaks: T, + buffer: &mut [u8], + ) { + super::aez_prf(aez, tweaks, buffer) + } + + pub fn e(j: i32, i: u32, aez: &Aez, block: [u8; 16]) -> [u8; 16] { + super::e(j, i, aez, Block::from(block)).bytes() + } +} + #[cfg(all(test, feature = "std"))] mod test { use super::*; |