pub struct BlockBuffer<BlockSize, Kind>where
BlockSize: ArrayLength<u8> + IsLess<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>>,
<BlockSize as IsLess<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>>>::Output: NonZero,
Kind: BufferKind,{ /* private fields */ }Expand description
Buffer for block processing of data.
Implementations§
Source§impl<BlockSize, Kind> BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> BlockBuffer<BlockSize, Kind>
Sourcepub fn new(buf: &[u8]) -> BlockBuffer<BlockSize, Kind>
pub fn new(buf: &[u8]) -> BlockBuffer<BlockSize, Kind>
Sourcepub fn try_new(buf: &[u8]) -> Result<BlockBuffer<BlockSize, Kind>, Error>
pub fn try_new(buf: &[u8]) -> Result<BlockBuffer<BlockSize, Kind>, Error>
Create new buffer from slice.
Returns an error if slice length is not valid for used buffer kind.
Sourcepub fn digest_blocks(
&mut self,
input: &[u8],
compress: impl FnMut(&[GenericArray<u8, BlockSize>]),
)
pub fn digest_blocks( &mut self, input: &[u8], compress: impl FnMut(&[GenericArray<u8, BlockSize>]), )
Digest data in input in blocks of size BlockSize using
the compress function, which accepts slice of blocks.
Sourcepub fn pad_with_zeros(&mut self) -> &mut GenericArray<u8, BlockSize>
pub fn pad_with_zeros(&mut self) -> &mut GenericArray<u8, BlockSize>
Pad remaining data with zeros and return resulting block.
Sourcepub fn set(&mut self, buf: GenericArray<u8, BlockSize>, pos: usize)
pub fn set(&mut self, buf: GenericArray<u8, BlockSize>, pos: usize)
Source§impl<BlockSize> BlockBuffer<BlockSize, Eager>
impl<BlockSize> BlockBuffer<BlockSize, Eager>
Sourcepub fn set_data(
&mut self,
data: &mut [u8],
process_blocks: impl FnMut(&mut [GenericArray<u8, BlockSize>]),
)
pub fn set_data( &mut self, data: &mut [u8], process_blocks: impl FnMut(&mut [GenericArray<u8, BlockSize>]), )
Set data to generated blocks.
Sourcepub fn digest_pad(
&mut self,
delim: u8,
suffix: &[u8],
compress: impl FnMut(&GenericArray<u8, BlockSize>),
)
pub fn digest_pad( &mut self, delim: u8, suffix: &[u8], compress: impl FnMut(&GenericArray<u8, BlockSize>), )
Compress remaining data after padding it with delim, zeros and
the suffix bytes. If there is not enough unused space, compress
will be called twice.
§Panics
If suffix length is bigger than block size.
Sourcepub fn len64_padding_be(
&mut self,
data_len: u64,
compress: impl FnMut(&GenericArray<u8, BlockSize>),
)
pub fn len64_padding_be( &mut self, data_len: u64, compress: impl FnMut(&GenericArray<u8, BlockSize>), )
Pad message with 0x80, zeros and 64-bit message length using big-endian byte order.
Sourcepub fn len64_padding_le(
&mut self,
data_len: u64,
compress: impl FnMut(&GenericArray<u8, BlockSize>),
)
pub fn len64_padding_le( &mut self, data_len: u64, compress: impl FnMut(&GenericArray<u8, BlockSize>), )
Pad message with 0x80, zeros and 64-bit message length using little-endian byte order.
Sourcepub fn len128_padding_be(
&mut self,
data_len: u128,
compress: impl FnMut(&GenericArray<u8, BlockSize>),
)
pub fn len128_padding_be( &mut self, data_len: u128, compress: impl FnMut(&GenericArray<u8, BlockSize>), )
Pad message with 0x80, zeros and 128-bit message length using big-endian byte order.
Trait Implementations§
Source§impl<BlockSize, Kind> Clone for BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> Clone for BlockBuffer<BlockSize, Kind>
Source§fn clone(&self) -> BlockBuffer<BlockSize, Kind>
fn clone(&self) -> BlockBuffer<BlockSize, Kind>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<BlockSize, Kind> Debug for BlockBuffer<BlockSize, Kind>where
BlockSize: Debug + ArrayLength<u8> + IsLess<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>>,
Kind: Debug + BufferKind,
<BlockSize as IsLess<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>>>::Output: NonZero,
impl<BlockSize, Kind> Debug for BlockBuffer<BlockSize, Kind>where
BlockSize: Debug + ArrayLength<u8> + IsLess<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>>,
Kind: Debug + BufferKind,
<BlockSize as IsLess<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>, B0>, B0>>>::Output: NonZero,
Source§impl<BlockSize, Kind> Default for BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> Default for BlockBuffer<BlockSize, Kind>
Source§fn default() -> BlockBuffer<BlockSize, Kind>
fn default() -> BlockBuffer<BlockSize, Kind>
Auto Trait Implementations§
impl<BlockSize, Kind> Freeze for BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> RefUnwindSafe for BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> Send for BlockBuffer<BlockSize, Kind>where
Kind: Send,
impl<BlockSize, Kind> Sync for BlockBuffer<BlockSize, Kind>where
Kind: Sync,
impl<BlockSize, Kind> Unpin for BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> UnsafeUnpin for BlockBuffer<BlockSize, Kind>
impl<BlockSize, Kind> UnwindSafe for BlockBuffer<BlockSize, Kind>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A> DynCastExt for A
impl<A> DynCastExt for A
Source§fn dyn_cast<T>(
self,
) -> Result<<A as DynCastExtHelper<T>>::Target, <A as DynCastExtHelper<T>>::Source>where
A: DynCastExtHelper<T>,
T: ?Sized,
fn dyn_cast<T>(
self,
) -> Result<<A as DynCastExtHelper<T>>::Target, <A as DynCastExtHelper<T>>::Source>where
A: DynCastExtHelper<T>,
T: ?Sized,
Source§fn dyn_upcast<T>(self) -> <A as DynCastExtAdvHelper<T, T>>::Target
fn dyn_upcast<T>(self) -> <A as DynCastExtAdvHelper<T, T>>::Target
Source§fn dyn_cast_adv<F, T>(
self,
) -> Result<<A as DynCastExtAdvHelper<F, T>>::Target, <A as DynCastExtAdvHelper<F, T>>::Source>
fn dyn_cast_adv<F, T>( self, ) -> Result<<A as DynCastExtAdvHelper<F, T>>::Target, <A as DynCastExtAdvHelper<F, T>>::Source>
Source§fn dyn_cast_with_config<C>(
self,
) -> Result<<A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Target, <A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Source>where
C: DynCastConfig,
A: DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>,
fn dyn_cast_with_config<C>(
self,
) -> Result<<A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Target, <A as DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>>::Source>where
C: DynCastConfig,
A: DynCastExtAdvHelper<<C as DynCastConfig>::Source, <C as DynCastConfig>::Target>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more