cryptimitives/kdf/
sha256.rs1use cryptraits::kdf::Kdf as KdfTrait;
4use hkdf::Hkdf;
5use sha2::Sha256;
6use zeroize::Zeroize;
7
8use crate::errors::KdfError;
9
10#[derive(Zeroize)]
11#[zeroize(drop)]
12pub struct Kdf(#[zeroize(skip)] Hkdf<Sha256>);
13
14impl KdfTrait for Kdf {
15 type E = KdfError;
16
17 fn new(salt: Option<&[u8]>, data: &[u8]) -> Self {
18 Self(Hkdf::<Sha256>::new(salt, data))
19 }
20
21 fn expand(&self, info: &[u8], okm: &mut [u8]) -> Result<(), Self::E> {
22 self.0.expand(info, okm).or(Err(KdfError::InvalidLength))
23 }
24}