use crate::proto::frame::frame;
use hkdf::Hkdf;
use sha2::Sha256;
use zeroize::Zeroizing;
pub const SALT: &[u8] = b"galata-vault/v1";
#[allow(clippy::expect_used)]
pub(crate) fn derive32(ikm: &[u8], info: &[u8]) -> Zeroizing<[u8; 32]> {
let hk = Hkdf::<Sha256>::new(Some(SALT), ikm);
let mut okm = Zeroizing::new([0u8; 32]);
hk.expand(info, okm.as_mut_slice())
.expect("32 bytes is a valid HKDF-SHA256 output length");
okm
}
pub(crate) fn info(label: &str, data: &[u8]) -> Vec<u8> {
frame(label, &[data])
}