Crates.io | kbkdf |
lib.rs | kbkdf |
version | 0.1.0-pre.0 |
created_at | 2025-02-04 13:59:59.684524+00 |
updated_at | 2025-03-07 14:44:08.67338+00 |
description | Key Derivation Using Pseudorandom Function (KBKDF) |
homepage | https://github.com/RustCrypto/KDFs/tree/master/kbkdf |
repository | https://github.com/RustCrypto/KDFs/ |
max_upload_size | |
id | 1541954 |
size | 26,940 |
Pure Rust implementation of the Key Based Key Derivation Function (KBKDF). This function is described in section 4 of NIST SP 800-108r1, Recommendation for Key Derivation Using Pseudorandom Functions.
The most common way to use KBKDF is as follows: you generate a shared secret with other party (e.g. via Diffie-Hellman algorithm) and use key derivation function to derive a shared key.
use hex_literal::hex;
use hmac::Hmac;
use kbkdf::{Counter, Kbkdf, Params};
use sha2::Sha256;
type HmacSha256 = Hmac<Sha256>;
let counter = Counter::<HmacSha256, HmacSha256>::default();
let key = counter
.derive(Params::builder(b"secret").with_label(b"label").build())
.unwrap();
assert_eq!(
key,
hex!(
"ff6a1e505e0f2546eae8f1e11ab95ff6"
"47b78bb2182a835c7c1f8054ae7cfea5"
"8182da6b978c411fa840326ebbe07bfc"
"aaef01c090bb6f8e9c1da9dedf40bc3e"
)
);
Licensed under either of:
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.