pub struct Pbkdf2<H: HashFunction + Clone, const S: usize = 16> { /* private fields */ }
Expand description
PBKDF2 implementation using any HMAC-based PRF
PBKDF2 can be used with any pseudorandom function, but this implementation uses HMAC with a configurable hash function.
Implementations§
Source§impl<H: HashFunction + Clone, const S: usize> Pbkdf2<H, S>
impl<H: HashFunction + Clone, const S: usize> Pbkdf2<H, S>
Sourcepub fn pbkdf2(
password: &[u8],
salt: &[u8],
iterations: u32,
key_length: usize,
) -> Result<Zeroizing<Vec<u8>>>
pub fn pbkdf2( password: &[u8], salt: &[u8], iterations: u32, key_length: usize, ) -> Result<Zeroizing<Vec<u8>>>
Internal PBKDF2 implementation with secure key handling
This implements the core PBKDF2 algorithm as defined in RFC 8018 Section 5.2 with enhanced security for key material handling.
§Arguments
password
- The password to derive the key fromsalt
- The salt valueiterations
- The number of iterationskey_length
- The length of the derived key in bytes
§Returns
The derived key of length key_length bytes
Trait Implementations§
Source§impl<H: HashFunction + Clone, const S: usize> KeyDerivationFunction for Pbkdf2<H, S>where
Salt<S>: Pbkdf2Compatible,
impl<H: HashFunction + Clone, const S: usize> KeyDerivationFunction for Pbkdf2<H, S>where
Salt<S>: Pbkdf2Compatible,
Source§type Algorithm = Pbkdf2Algorithm<H>
type Algorithm = Pbkdf2Algorithm<H>
The algorithm this KDF implements
Source§fn derive_key(
&self,
input: &[u8],
salt: Option<&[u8]>,
_info: Option<&[u8]>,
length: usize,
) -> Result<Vec<u8>>
fn derive_key( &self, input: &[u8], salt: Option<&[u8]>, _info: Option<&[u8]>, length: usize, ) -> Result<Vec<u8>>
Derives a key using the KDF parameters Read more
Source§fn builder(&self) -> impl KdfOperation<'_, Self::Algorithm>
fn builder(&self) -> impl KdfOperation<'_, Self::Algorithm>
Creates a builder for fluent API usage - FIXED: Elided lifetime
Source§fn generate_salt<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Salt
fn generate_salt<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Salt
Generate a random salt with appropriate size
Source§fn security_level() -> SecurityLevel
fn security_level() -> SecurityLevel
Returns the security level of the KDF in bits
Source§impl<H: HashFunction + Clone, const S: usize> ParamProvider for Pbkdf2<H, S>
impl<H: HashFunction + Clone, const S: usize> ParamProvider for Pbkdf2<H, S>
Source§type Params = Pbkdf2Params<S>
type Params = Pbkdf2Params<S>
The parameter type associated with this algorithm
Source§fn with_params(params: Self::Params) -> Self
fn with_params(params: Self::Params) -> Self
Creates a new instance with the specified parameters
Source§fn set_params(&mut self, params: Self::Params)
fn set_params(&mut self, params: Self::Params)
Updates the parameters
Source§impl<H: HashFunction + Clone, const S: usize> PasswordHashFunction for Pbkdf2<H, S>where
Salt<S>: Pbkdf2Compatible,
impl<H: HashFunction + Clone, const S: usize> PasswordHashFunction for Pbkdf2<H, S>where
Salt<S>: Pbkdf2Compatible,
Source§type Password = SecretBytes<32>
type Password = SecretBytes<32>
Password type with zeroizing
Source§fn hash_password(&self, password: &Self::Password) -> Result<PasswordHash>
fn hash_password(&self, password: &Self::Password) -> Result<PasswordHash>
Hashes a password with the configured parameters
Source§fn verify(&self, password: &Self::Password, hash: &PasswordHash) -> Result<bool>
fn verify(&self, password: &Self::Password, hash: &PasswordHash) -> Result<bool>
Verifies a password against a hash
Source§fn recommended_params(target_duration: Duration) -> Self::Params
fn recommended_params(target_duration: Duration) -> Self::Params
Recommends parameters based on a target duration
Auto Trait Implementations§
impl<H, const S: usize> Freeze for Pbkdf2<H, S>
impl<H, const S: usize> RefUnwindSafe for Pbkdf2<H, S>where
H: RefUnwindSafe,
impl<H, const S: usize> Send for Pbkdf2<H, S>where
H: Send,
impl<H, const S: usize> Sync for Pbkdf2<H, S>where
H: Sync,
impl<H, const S: usize> Unpin for Pbkdf2<H, S>where
H: Unpin,
impl<H, const S: usize> UnwindSafe for Pbkdf2<H, S>where
H: UnwindSafe,
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