pub struct HashAlg {
pub is_sha512: bool,
pub digest_len: usize,
pub derive_block_len: usize,
pub hash_block_len: usize,
}Expand description
DPAPI hash-algorithm parameters. Re-exported from forensicnomicon, the fleet
knowledge crate that owns the impacket ALGORITHMS_DATA block-size facts;
this crate owns only the parsing + crypto that consume them.
Two distinct block sizes are in play and must not be conflated:
derive_block_lenis the table’s salt/block field used byderiveKey(impacket index[4]): 64 for SHA1 andCALG_HMAC(0x8009), 128 forCALG_SHA_512(0x800e).hash_block_lenis the underlying hash module’s block size used by the integrity check (SHA1.block_size=64,SHA512.block_size=128). Parameters of a DPAPI hash algorithm, mirroring impacket’sALGORITHMS_DATA.
Two distinct block sizes are in play and must not be conflated:
derive_block_lenis the salt/block field used byderiveKey(impacket index[4]): 64 for SHA-1 andCALG_HMAC, 128 forCALG_SHA_512.hash_block_lenis the underlying hash module’s block size used by the integrity check (SHA-1 = 64, SHA-512 = 128).
For CALG_HMAC (0x8009) these differ (64 vs 128), so both are tracked.
Fields§
§is_sha512: boolSHA-512 hash module if true, SHA-1 if false.
digest_len: usizeOutput digest length in bytes (20 for SHA-1, 64 for SHA-512).
derive_block_len: usizederiveKey salt/block field (impacket ALGORITHMS_DATA[..][4]).
hash_block_len: usizeUnderlying hash module block size (used by the integrity HMAC).
Trait Implementations§
Source§impl Clone for HashAlgInfo
impl Clone for HashAlgInfo
Source§fn clone(&self) -> HashAlgInfo
fn clone(&self) -> HashAlgInfo
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for HashAlgInfo
Source§impl Debug for HashAlgInfo
impl Debug for HashAlgInfo
impl Eq for HashAlgInfo
Source§impl PartialEq for HashAlgInfo
impl PartialEq for HashAlgInfo
Source§fn eq(&self, other: &HashAlgInfo) -> bool
fn eq(&self, other: &HashAlgInfo) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for HashAlgInfo
Auto Trait Implementations§
impl Freeze for HashAlgInfo
impl RefUnwindSafe for HashAlgInfo
impl Send for HashAlgInfo
impl Sync for HashAlgInfo
impl Unpin for HashAlgInfo
impl UnsafeUnpin for HashAlgInfo
impl UnwindSafe for HashAlgInfo
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