pub struct PmacCore<C, const LC_SIZE: usize>{ /* private fields */ }
Expand description
Generic PMAC instance
LC_SIZE
regulates size of pre-computed table used in PMAC computation.
With LC_SIZE = 20
and for 128-bit block cipher the table is sufficient
for 16*2^20 = 16 MiB of input data. For longer messages the l
value will
be computed on the fly from the last table value, which will be a bit less
efficient.
Trait Implementations§
Source§impl<C, const LC_SIZE: usize> AlgorithmName for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> AlgorithmName for PmacCore<C, LC_SIZE>
Source§fn write_alg_name(f: &mut Formatter<'_>) -> Result
fn write_alg_name(f: &mut Formatter<'_>) -> Result
Write algorithm name into
f
.Source§impl<C, const LC_SIZE: usize> BlockSizeUser for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> BlockSizeUser for PmacCore<C, LC_SIZE>
Source§type BlockSize = <C as BlockSizeUser>::BlockSize
type BlockSize = <C as BlockSizeUser>::BlockSize
Size of the block in bytes.
Source§fn block_size() -> usize
fn block_size() -> usize
Return block size in bytes.
Source§impl<C, const LC_SIZE: usize> BufferKindUser for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> BufferKindUser for PmacCore<C, LC_SIZE>
Source§type BufferKind = Lazy
type BufferKind = Lazy
Block buffer kind over which type operates.
Source§impl<C, const LC_SIZE: usize> FixedOutputCore for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> FixedOutputCore for PmacCore<C, LC_SIZE>
Source§fn finalize_fixed_core(
&mut self,
buffer: &mut Buffer<Self>,
out: &mut Output<Self>,
)
fn finalize_fixed_core( &mut self, buffer: &mut Buffer<Self>, out: &mut Output<Self>, )
Finalize state using remaining data stored in the provided block buffer,
write result into provided array and leave
self
in a dirty state.Source§impl<C, const LC_SIZE: usize> InnerInit for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> InnerInit for PmacCore<C, LC_SIZE>
Source§fn inner_init(cipher: C) -> Self
fn inner_init(cipher: C) -> Self
Initialize value from the
inner
.Source§impl<C, const LC_SIZE: usize> OutputSizeUser for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> OutputSizeUser for PmacCore<C, LC_SIZE>
Source§type OutputSize = <C as BlockSizeUser>::BlockSize
type OutputSize = <C as BlockSizeUser>::BlockSize
Size of the output in bytes.
Source§fn output_size() -> usize
fn output_size() -> usize
Return output size in bytes.
Source§impl<C, const LC_SIZE: usize> UpdateCore for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> UpdateCore for PmacCore<C, LC_SIZE>
Source§fn update_blocks(&mut self, blocks: &[Block<Self>])
fn update_blocks(&mut self, blocks: &[Block<Self>])
Update state using the provided data blocks.
impl<C, const LC_SIZE: usize> MacMarker for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> ZeroizeOnDrop for PmacCore<C, LC_SIZE>where
C: BlockCipher + BlockEncryptMut + Clone + ZeroizeOnDrop,
Block<C>: Dbl,
C::BlockSize: IsLess<U256>,
Le<C::BlockSize, U256>: NonZero,
Auto Trait Implementations§
impl<C, const LC_SIZE: usize> Freeze for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> RefUnwindSafe for PmacCore<C, LC_SIZE>where
C: RefUnwindSafe,
<<C as BlockSizeUser>::BlockSize as ArrayLength<u8>>::ArrayType: RefUnwindSafe,
impl<C, const LC_SIZE: usize> Send for PmacCore<C, LC_SIZE>where
C: Send,
impl<C, const LC_SIZE: usize> Sync for PmacCore<C, LC_SIZE>where
C: Sync,
impl<C, const LC_SIZE: usize> Unpin for PmacCore<C, LC_SIZE>
impl<C, const LC_SIZE: usize> UnwindSafe for PmacCore<C, LC_SIZE>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> KeyInit for T
impl<T> KeyInit for T
Source§fn new(key: &GenericArray<u8, <T as KeySizeUser>::KeySize>) -> T
fn new(key: &GenericArray<u8, <T as KeySizeUser>::KeySize>) -> T
Create new value from fixed size key.
Source§fn new_from_slice(key: &[u8]) -> Result<T, InvalidLength>
fn new_from_slice(key: &[u8]) -> Result<T, InvalidLength>
Create new value from variable size key.