diff options
| author | Simon Scurrell <[email protected]> | 2026-05-25 16:32:39 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-05-25 11:32:39 -0400 |
| commit | 2b1f6bdc1c2e32e0a5dd22c217caeb6f88fff7a0 (patch) | |
| tree | 5eab46a22d4d2935d209b33efd8a1e9931193a33 | |
| parent | 17d3abf227d9be925fd0559366e8ac91a7504e4c (diff) | |
Fixed key_size_in_bits shift direction in _nx_crypto_method_hkdf_init (#265)
* key_size_in_bits should be shifted right to convert to bytes
* Add HKDF init length regression coverage
---------
Co-authored-by: Frédéric Desbiens <[email protected]>
| -rw-r--r-- | crypto_libraries/src/nx_crypto_hkdf.c | 2 | ||||
| -rw-r--r-- | test/regression/nx_secure_test/nx_secure_hkdf_test.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/crypto_libraries/src/nx_crypto_hkdf.c b/crypto_libraries/src/nx_crypto_hkdf.c index d2020465..9c1bc811 100644 --- a/crypto_libraries/src/nx_crypto_hkdf.c +++ b/crypto_libraries/src/nx_crypto_hkdf.c @@ -94,7 +94,7 @@ NX_CRYPTO_KEEP UINT _nx_crypto_method_hkdf_init(struct NX_CRYPTO_METHOD_STRUCT /* Initialize IKM with key data. */ hkdf->nx_crypto_hkdf_ikm = key; - hkdf->nx_crypto_hkdf_ikm_length = (key_size_in_bits << 3); + hkdf->nx_crypto_hkdf_ikm_length = (key_size_in_bits >> 3); /* Initialize HMAC and HASH methods. */ hkdf->nx_crypto_hmac_method = NX_CRYPTO_NULL; diff --git a/test/regression/nx_secure_test/nx_secure_hkdf_test.c b/test/regression/nx_secure_test/nx_secure_hkdf_test.c index 9133ecaf..4d280eba 100644 --- a/test/regression/nx_secure_test/nx_secure_hkdf_test.c +++ b/test/regression/nx_secure_test/nx_secure_hkdf_test.c @@ -42,6 +42,7 @@ static VOID thread_0_entry(ULONG thread_input) UINT i; NX_CRYPTO_METHOD *method_hkdf; NX_CRYPTO_METHOD *method_hash; +NX_CRYPTO_HKDF *hkdf; /* Print out test information banner. */ printf("NetX Secure Test: HKDF Test.........................................."); @@ -72,6 +73,10 @@ NX_CRYPTO_METHOD *method_hash; method_hkdf->nx_crypto_init(method_hkdf, (UCHAR*)(hkdf_test_data[i].ikm), hkdf_test_data[i].ikm_len << 3, NX_NULL, hkdf_metadata, sizeof(hkdf_metadata)); + hkdf = (NX_CRYPTO_HKDF *)hkdf_metadata; + EXPECT_EQ((UCHAR *)hkdf_test_data[i].ikm, hkdf->nx_crypto_hkdf_ikm); + EXPECT_EQ(hkdf_test_data[i].ikm_len, hkdf->nx_crypto_hkdf_ikm_length); + method_hkdf->nx_crypto_operation(NX_CRYPTO_HKDF_SET_HMAC, NX_NULL, &crypto_method_hmac, NX_NULL, 0,NX_NULL, 0, NX_NULL, NX_NULL, 0, &hkdf_metadata, sizeof(hkdf_metadata), |
