pub struct PmacCore<C, const LC_SIZE: usize> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl, { /* 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
sourceimpl<C, const LC_SIZE: usize> AlgorithmName for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone + AlgorithmName,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> AlgorithmName for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone + AlgorithmName,
Block<C>: Dbl,
sourcefn write_alg_name(f: &mut Formatter<'_>) -> Result
fn write_alg_name(f: &mut Formatter<'_>) -> Result
Write algorithm name into f
.
sourceimpl<C, const LC_SIZE: usize> BlockSizeUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> BlockSizeUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
sourcefn block_size() -> usize
fn block_size() -> usize
Return block size in bytes.
sourceimpl<C, const LC_SIZE: usize> BufferKindUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> BufferKindUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
type BufferKind = Lazy
type BufferKind = Lazy
Block buffer kind over which type operates.
sourceimpl<C: Clone, const LC_SIZE: usize> Clone for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
C::BlockSize: Clone,
impl<C: Clone, const LC_SIZE: usize> Clone for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
C::BlockSize: Clone,
sourceimpl<C, const LC_SIZE: usize> Debug for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone + AlgorithmName,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> Debug for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone + AlgorithmName,
Block<C>: Dbl,
sourceimpl<C, const LC_SIZE: usize> FixedOutputCore for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
C::BlockSize: IsLess<U256>,
Le<C::BlockSize, U256>: NonZero,
impl<C, const LC_SIZE: usize> FixedOutputCore for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
C::BlockSize: IsLess<U256>,
Le<C::BlockSize, U256>: NonZero,
sourcefn 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. Read more
sourceimpl<C, const LC_SIZE: usize> InnerInit for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> InnerInit for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
sourcefn inner_init(cipher: C) -> Self
fn inner_init(cipher: C) -> Self
Initialize value from the inner
.
sourceimpl<C, const LC_SIZE: usize> InnerUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> InnerUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
type Inner = C
type Inner = C
Inner type.
sourceimpl<C, const LC_SIZE: usize> OutputSizeUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> OutputSizeUser for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
type OutputSize = C::BlockSize
type OutputSize = C::BlockSize
Size of the output in bytes.
sourcefn output_size() -> usize
fn output_size() -> usize
Return output size in bytes.
sourceimpl<C, const LC_SIZE: usize> Reset for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> Reset for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
sourceimpl<C, const LC_SIZE: usize> UpdateCore for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
impl<C, const LC_SIZE: usize> UpdateCore for PmacCore<C, LC_SIZE> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
sourcefn 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> where
C: BlockCipher + BlockEncryptMut + Clone,
Block<C>: Dbl,
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> 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> where
C: Unpin,
<<C as BlockSizeUser>::BlockSize as ArrayLength<u8>>::ArrayType: Unpin,
impl<C, const LC_SIZE: usize> UnwindSafe for PmacCore<C, LC_SIZE> where
C: UnwindSafe,
<<C as BlockSizeUser>::BlockSize as ArrayLength<u8>>::ArrayType: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> KeyInit for T where
T: InnerInit,
<T as InnerUser>::Inner: KeyInit,
impl<T> KeyInit for T where
T: InnerInit,
<T as InnerUser>::Inner: KeyInit,
sourcepub fn new(key: &GenericArray<u8, <T as KeySizeUser>::KeySize>) -> T
pub fn new(key: &GenericArray<u8, <T as KeySizeUser>::KeySize>) -> T
Create new value from fixed size key.
sourcepub fn new_from_slice(key: &[u8]) -> Result<T, InvalidLength>
pub fn new_from_slice(key: &[u8]) -> Result<T, InvalidLength>
Create new value from variable size key.
sourceimpl<T> KeySizeUser for T where
T: InnerUser,
<T as InnerUser>::Inner: KeySizeUser,
impl<T> KeySizeUser for T where
T: InnerUser,
<T as InnerUser>::Inner: KeySizeUser,
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more