Skip to content

Commit c9c6906

Browse files
committed
test: update test vectors
upstream bug was closed
1 parent 9af7405 commit c9c6906

File tree

3 files changed

+48
-43
lines changed

3 files changed

+48
-43
lines changed

src/crypto/key_derivation.rs

+12-15
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,14 @@ pub fn get_hkdf_salt_expand_info(key_id: u64) -> Vec<u8> {
3131

3232
const SFRAME_LABEL: &[u8] = b"SFrame 1.0 ";
3333

34-
// For the current test vectors different labels than specified were used
35-
// see https://github.com/sframe-wg/sframe/issues/137
36-
cfg_if::cfg_if! {
37-
if #[cfg(test)] {
38-
const SFRAME_HKDF_KEY_EXPAND_INFO: &[u8] = b"key ";
39-
const SFRAME_HDKF_SALT_EXPAND_INFO: &[u8] = b"salt ";
40-
} else {
41-
const SFRAME_HKDF_KEY_EXPAND_INFO: &[u8] = b"Secret key ";
42-
const SFRAME_HDKF_SALT_EXPAND_INFO: &[u8] = b"Secret salt ";
43-
}
44-
}
34+
const SFRAME_HKDF_KEY_EXPAND_INFO: &[u8] = b"Secret key ";
35+
const SFRAME_HDKF_SALT_EXPAND_INFO: &[u8] = b"Secret salt ";
4536

4637
cfg_if::cfg_if! {
4738
if #[cfg(feature = "openssl")] {
4839
pub fn get_hkdf_aead_label(tag_len: usize) -> Vec<u8> {
4940
// for current platforms there is no issue casting from usize to u64
50-
return [SFRAME_HDKF_SUB_AEAD_LABEL, &(tag_len).to_be_bytes()].concat()
41+
[SFRAME_HDKF_SUB_AEAD_LABEL, &(tag_len).to_be_bytes()].concat()
5142
}
5243

5344
pub const SFRAME_HDKF_SUB_AEAD_LABEL: &[u8] = b"SFrame 1.0 AES CTR AEAD ";
@@ -56,7 +47,6 @@ cfg_if::cfg_if! {
5647
}
5748
}
5849

59-
#[cfg(feature = "openssl")]
6050
#[cfg(test)]
6151
mod test {
6252
use super::KeyDerivation;
@@ -66,7 +56,7 @@ mod test {
6656
use crate::{crypto::cipher_suite::CipherSuiteVariant, util::test::assert_bytes_eq};
6757

6858
mod aes_gcm {
69-
use crate::crypto::key_derivation::SFRAME_LABEL;
59+
use crate::crypto::key_derivation::{get_hkdf_key_expand_info, get_hkdf_salt_expand_info};
7060

7161
use super::*;
7262

@@ -78,7 +68,14 @@ mod test {
7868
fn derive_correct_base_keys(variant: CipherSuiteVariant) {
7969
let test_vec = get_sframe_test_vector(&variant.to_string());
8070

81-
assert_bytes_eq(SFRAME_LABEL, &test_vec.sframe_label);
71+
assert_bytes_eq(
72+
&get_hkdf_key_expand_info(test_vec.key_id),
73+
&test_vec.sframe_key_label,
74+
);
75+
assert_bytes_eq(
76+
&get_hkdf_salt_expand_info(test_vec.key_id),
77+
&test_vec.sframe_salt_label,
78+
);
8279

8380
let secret = Secret::expand_from(
8481
&CipherSuite::from(variant),

src/test_vectors/mod.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ pub fn get_header_test_vectors() -> &'static Vec<HeaderTest> {
1717
}
1818

1919
pub fn get_aes_ctr_test_vector(cipher_suite_variant: &str) -> &'static AesCtrHmacTest {
20-
&TEST_VECTORS
20+
TEST_VECTORS
2121
.aes_ctr_hmac
2222
.iter()
2323
.find(|v| v.cipher_suite_variant == cipher_suite_variant)
2424
.unwrap()
2525
}
2626

2727
pub fn get_sframe_test_vector(cipher_suite_variant: &str) -> &'static SframeTest {
28-
&TEST_VECTORS
28+
TEST_VECTORS
2929
.sframe
3030
.iter()
3131
.find(|v| v.cipher_suite_variant == cipher_suite_variant)
@@ -111,7 +111,10 @@ pub struct SframeTest {
111111
pub key_material: Vec<u8>,
112112

113113
#[serde(deserialize_with = "vec_from_hex_str")]
114-
pub sframe_label: Vec<u8>,
114+
pub sframe_key_label: Vec<u8>,
115+
116+
#[serde(deserialize_with = "vec_from_hex_str")]
117+
pub sframe_salt_label: Vec<u8>,
115118

116119
#[serde(deserialize_with = "vec_from_hex_str")]
117120
pub sframe_secret: Vec<u8>,

src/test_vectors/test-vectors.json

+30-25
Original file line numberDiff line numberDiff line change
@@ -1490,75 +1490,80 @@
14901490
"kid": 291,
14911491
"ctr": 17767,
14921492
"base_key": "000102030405060708090a0b0c0d0e0f",
1493-
"sframe_label": "534672616d6520312e3020",
1493+
"sframe_key_label": "534672616d6520312e3020536563726574206b6579200000000000000123",
1494+
"sframe_salt_label": "534672616d6520312e30205365637265742073616c74200000000000000123",
14941495
"sframe_secret": "d926952ca8b7ec4a95941d1ada3a5203ceff8cceee34f574d23909eb314c40c0",
1495-
"sframe_key": "52cef96e29191912a6be442a9651c43a",
1496-
"sframe_salt": "9655c98fdad276683deb279c",
1496+
"sframe_key": "73bb177a9fe6c02597132fe430ca2d99",
1497+
"sframe_salt": "55582aa5aaced36a74544d91",
14971498
"metadata": "4945544620534672616d65205747",
1498-
"nonce": "9655c98fdad276683deb62fb",
1499+
"nonce": "55582aa5aaced36a745408f6",
14991500
"aad": "19012345674945544620534672616d65205747",
15001501
"pt": "64726166742d696574662d736672616d652d656e63",
1501-
"ct": "1901234567b6a27b2d24f1f06d49cffe6c82af5a96e0d89443a7a93a8700f96fdda3e43c"
1502+
"ct": "190123456740043f25262c0ca52e9374b070f24b02764715c2e303388c9495324037d043"
15021503
},
15031504
{
15041505
"cipher_suite": 2,
15051506
"kid": 291,
15061507
"ctr": 17767,
15071508
"base_key": "000102030405060708090a0b0c0d0e0f",
1508-
"sframe_label": "534672616d6520312e3020",
1509+
"sframe_key_label": "534672616d6520312e3020536563726574206b6579200000000000000123",
1510+
"sframe_salt_label": "534672616d6520312e30205365637265742073616c74200000000000000123",
15091511
"sframe_secret": "d926952ca8b7ec4a95941d1ada3a5203ceff8cceee34f574d23909eb314c40c0",
1510-
"sframe_key": "52cef96e29191912a6be442a9651c43a",
1511-
"sframe_salt": "9655c98fdad276683deb279c",
1512+
"sframe_key": "73bb177a9fe6c02597132fe430ca2d99",
1513+
"sframe_salt": "55582aa5aaced36a74544d91",
15121514
"metadata": "4945544620534672616d65205747",
1513-
"nonce": "9655c98fdad276683deb62fb",
1515+
"nonce": "55582aa5aaced36a745408f6",
15141516
"aad": "19012345674945544620534672616d65205747",
15151517
"pt": "64726166742d696574662d736672616d652d656e63",
1516-
"ct": "190123456728b1faac3515d5ca29f3db9c52f27789c5ec8386ff0b570853ebcf721c"
1518+
"ct": "1901234567729eef4910d734abfd392cdff0f67d2a8d06041eef5f895e4cecc03a6d"
15171519
},
15181520
{
15191521
"cipher_suite": 3,
15201522
"kid": 291,
15211523
"ctr": 17767,
15221524
"base_key": "000102030405060708090a0b0c0d0e0f",
1523-
"sframe_label": "534672616d6520312e3020",
1525+
"sframe_key_label": "534672616d6520312e3020536563726574206b6579200000000000000123",
1526+
"sframe_salt_label": "534672616d6520312e30205365637265742073616c74200000000000000123",
15241527
"sframe_secret": "d926952ca8b7ec4a95941d1ada3a5203ceff8cceee34f574d23909eb314c40c0",
1525-
"sframe_key": "52cef96e29191912a6be442a9651c43a",
1526-
"sframe_salt": "9655c98fdad276683deb279c",
1528+
"sframe_key": "73bb177a9fe6c02597132fe430ca2d99",
1529+
"sframe_salt": "55582aa5aaced36a74544d91",
15271530
"metadata": "4945544620534672616d65205747",
1528-
"nonce": "9655c98fdad276683deb62fb",
1531+
"nonce": "55582aa5aaced36a745408f6",
15291532
"aad": "19012345674945544620534672616d65205747",
15301533
"pt": "64726166742d696574662d736672616d652d656e63",
1531-
"ct": "190123456754719dcfbe065e1606068cb6b6b5f1a9a371e633ff088485e7"
1534+
"ct": "190123456717fd0a325fdcd5f0d68089ee5bd17df6296b69b6b0e70c8d73"
15321535
},
15331536
{
15341537
"cipher_suite": 4,
15351538
"kid": 291,
15361539
"ctr": 17767,
15371540
"base_key": "000102030405060708090a0b0c0d0e0f",
1538-
"sframe_label": "534672616d6520312e3020",
1541+
"sframe_key_label": "534672616d6520312e3020536563726574206b6579200000000000000123",
1542+
"sframe_salt_label": "534672616d6520312e30205365637265742073616c74200000000000000123",
15391543
"sframe_secret": "d926952ca8b7ec4a95941d1ada3a5203ceff8cceee34f574d23909eb314c40c0",
1540-
"sframe_key": "52cef96e29191912a6be442a9651c43a",
1541-
"sframe_salt": "9655c98fdad276683deb279c",
1544+
"sframe_key": "73bb177a9fe6c02597132fe430ca2d99",
1545+
"sframe_salt": "55582aa5aaced36a74544d91",
15421546
"metadata": "4945544620534672616d65205747",
1543-
"nonce": "9655c98fdad276683deb62fb",
1547+
"nonce": "55582aa5aaced36a745408f6",
15441548
"aad": "19012345674945544620534672616d65205747",
15451549
"pt": "64726166742d696574662d736672616d652d656e63",
1546-
"ct": "1901234567d4dfcd537dbd054dcf4bdab53bf451826843325838178391f63dc15b9475d6081b59c776a5"
1550+
"ct": "1901234567b8bf87709717f709a35b4e91b2109e5c1ca4f76179415f8bb15d70a9be7eb89c7adb76d300"
15471551
},
15481552
{
15491553
"cipher_suite": 5,
15501554
"kid": 291,
15511555
"ctr": 17767,
15521556
"base_key": "000102030405060708090a0b0c0d0e0f",
1553-
"sframe_label": "534672616d6520312e3020",
1557+
"sframe_key_label": "534672616d6520312e3020536563726574206b6579200000000000000123",
1558+
"sframe_salt_label": "534672616d6520312e30205365637265742073616c74200000000000000123",
15541559
"sframe_secret": "0fc3ea6de6aac97a35f194cf9bed94d4b5230f1cb45a785c9fe5dce9c188938ab6ba005bc4c0a19181599e9d1bcf7b74aca48b60bf5e254e546d809313e083a3",
1555-
"sframe_key": "5f3f7c1b277d9cad86b906da39702c3fcdf720902817977ae99bd10f2e5ad56a",
1556-
"sframe_salt": "a653f558a8018877314fb8d9",
1560+
"sframe_key": "e9e405efb7cd325030760935bf49fd5669d7c19eb84ca74b419a1487cf835107",
1561+
"sframe_salt": "11007b537a1cf728a4c544c1",
15571562
"metadata": "4945544620534672616d65205747",
1558-
"nonce": "a653f558a8018877314ffdbe",
1563+
"nonce": "11007b537a1cf728a4c501a6",
15591564
"aad": "19012345674945544620534672616d65205747",
15601565
"pt": "64726166742d696574662d736672616d652d656e63",
1561-
"ct": "19012345672f55e5feb46d118576dc715566003f4becf5252149c839aea7dd5434bf8eceb8b4d59bbfb2"
1566+
"ct": "19012345671e11c62748536fd55fdbc9560daea4825bfecbb05489cd41cb7a1556e001989a4485e8a02f"
15621567
}
15631568
]
15641569
}

0 commit comments

Comments
 (0)