feat: add example
This commit is contained in:
@@ -62,7 +62,7 @@ impl $module {
|
||||
let message_buffer_slice = self.message_buffer.as_slice();
|
||||
let message_buffer_len = message_buffer_slice.len();
|
||||
if message_buffer_len < 32 {
|
||||
return vec![];
|
||||
return Vec::with_capacity(0);
|
||||
}
|
||||
let blocks_count = (message_buffer_len / 16) - 1;
|
||||
let mut plaintext_message = Vec::with_capacity(blocks_count * 16);
|
||||
@@ -91,7 +91,7 @@ impl $module {
|
||||
// last block and this block len is less than 128 bits
|
||||
self.encryption_nonce = inc_32(self.encryption_nonce);
|
||||
let mut ctr = self.encryption_nonce.to_be_bytes();
|
||||
let block = Block::<Aes128>::from_mut_slice(&mut ctr);
|
||||
let block = Block::<$aesn>::from_mut_slice(&mut ctr);
|
||||
self.crypto.encrypt_block(block);
|
||||
|
||||
let chunk = &self.message_buffer[0..message_buffer_len - 16];
|
||||
|
||||
@@ -62,14 +62,14 @@ impl $module {
|
||||
let message_buffer_slice = self.message_buffer.as_slice();
|
||||
let message_buffer_len = message_buffer_slice.len();
|
||||
if message_buffer_len < 16 {
|
||||
return vec![];
|
||||
return Vec::with_capacity(0);
|
||||
}
|
||||
let blocks_count = message_buffer_len / 16;
|
||||
let mut encrypted_message = Vec::with_capacity(blocks_count * 16);
|
||||
for i in 0..blocks_count {
|
||||
self.encryption_nonce = inc_32(self.encryption_nonce);
|
||||
let mut ctr = self.encryption_nonce.to_be_bytes();
|
||||
let block = Block::<Aes128>::from_mut_slice(&mut ctr);
|
||||
let block = Block::<$aesn>::from_mut_slice(&mut ctr);
|
||||
self.crypto.encrypt_block(block);
|
||||
let chunk = &message_buffer_slice[i * 16..(i + 1) * 16];
|
||||
let y = u8to128(chunk) ^ u8to128(&block.as_slice());
|
||||
@@ -90,7 +90,7 @@ impl $module {
|
||||
// last block and this block len is less than 128 bits
|
||||
self.encryption_nonce = inc_32(self.encryption_nonce);
|
||||
let mut ctr = self.encryption_nonce.to_be_bytes();
|
||||
let block = Block::<Aes128>::from_mut_slice(&mut ctr);
|
||||
let block = Block::<$aesn>::from_mut_slice(&mut ctr);
|
||||
self.crypto.encrypt_block(block);
|
||||
|
||||
let chunk = self.message_buffer.as_slice();
|
||||
|
||||
@@ -44,6 +44,7 @@ pub(crate) fn normalize_nonce(ghash_key: u128, nonce_bytes: &[u8]) -> (u128, u12
|
||||
(ghash_key, normalized_nonce)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn u8to128(bytes: &[u8]) -> u128 {
|
||||
bytes.iter().rev().enumerate().fold(0, |acc, (i, &byte)| {
|
||||
acc | (byte as u128) << (i * 8)
|
||||
@@ -62,6 +63,7 @@ pub(crate) fn msb_s(s: usize, bytes: &[u8]) -> Vec<u8> {
|
||||
}
|
||||
|
||||
// incs(X)=MSBlen(X)-s(X) || [int(LSBs(X))+1 mod 2^s]s
|
||||
#[inline]
|
||||
pub(crate) fn inc_32(bits: u128) -> u128 {
|
||||
let msb = bits >> 32;
|
||||
let mut lsb = (bits & 0xffffffff) as u32;
|
||||
|
||||
Reference in New Issue
Block a user