2025-12-01 10:25:18 -05:00
|
|
|
#![cfg(hkdf)]
|
|
|
|
|
|
2025-12-12 15:23:45 -05:00
|
|
|
use wolfssl_wolfcrypt::hkdf::*;
|
|
|
|
|
use wolfssl_wolfcrypt::hmac::HMAC;
|
|
|
|
|
use wolfssl_wolfcrypt::sha::SHA256;
|
2025-10-23 09:41:12 -04:00
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn test_hkdf_extract_expand() {
|
|
|
|
|
let ikm = b"MyPassword0";
|
|
|
|
|
let salt = b"12345678ABCDEFGH";
|
2025-10-23 16:24:09 -04:00
|
|
|
let mut extract_out = [0u8; SHA256::DIGEST_SIZE];
|
2025-10-23 09:41:12 -04:00
|
|
|
hkdf_extract(HMAC::TYPE_SHA256, Some(salt), ikm, &mut extract_out).expect("Error with hkdf_extract()");
|
2025-11-06 10:56:09 -05:00
|
|
|
hkdf_extract_ex(HMAC::TYPE_SHA256, Some(salt), ikm, &mut extract_out, None, None).expect("Error with hkdf_extract_ex()");
|
2025-10-23 09:41:12 -04:00
|
|
|
|
|
|
|
|
let info = b"0";
|
|
|
|
|
let mut expand_out = [0u8; 16];
|
|
|
|
|
hkdf_expand(HMAC::TYPE_SHA256, &extract_out, Some(info), &mut expand_out).expect("Error with hkdf_expand()");
|
2025-11-06 10:56:09 -05:00
|
|
|
hkdf_expand_ex(HMAC::TYPE_SHA256, &extract_out, Some(info), &mut expand_out, None, None).expect("Error with hkdf_expand_ex()");
|
2025-10-23 09:41:12 -04:00
|
|
|
|
|
|
|
|
let expected_key = [
|
|
|
|
|
0x17, 0x5F, 0x24, 0xB3, 0x18, 0x20, 0xF3, 0xD4,
|
|
|
|
|
0x71, 0x97, 0x8A, 0x98, 0x9E, 0xB2, 0xC1, 0x35
|
|
|
|
|
];
|
|
|
|
|
assert_eq!(expand_out, expected_key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn test_hkdf_one_shot() {
|
|
|
|
|
let ikm = b"MyPassword0";
|
|
|
|
|
let salt = b"12345678ABCDEFGH";
|
|
|
|
|
let info = b"0";
|
|
|
|
|
let mut out = [0u8; 16];
|
|
|
|
|
hkdf(HMAC::TYPE_SHA256, ikm, Some(salt), Some(info), &mut out).expect("Error with hkdf()");
|
|
|
|
|
|
|
|
|
|
let expected_out = [
|
|
|
|
|
0x17, 0x5F, 0x24, 0xB3, 0x18, 0x20, 0xF3, 0xD4,
|
|
|
|
|
0x71, 0x97, 0x8A, 0x98, 0x9E, 0xB2, 0xC1, 0x35
|
|
|
|
|
];
|
|
|
|
|
assert_eq!(out, expected_out);
|
|
|
|
|
}
|