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>
§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>
§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>
§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>
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 ArraySize>::ArrayType<u8>: 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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)source§impl<T> KeyInit for T
impl<T> KeyInit for T
source§fn new(key: &Array<u8, <T as KeySizeUser>::KeySize>) -> T
fn new(key: &Array<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.