summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Scurrell <[email protected]>2026-05-25 16:32:39 +0100
committerGitHub <[email protected]>2026-05-25 11:32:39 -0400
commit2b1f6bdc1c2e32e0a5dd22c217caeb6f88fff7a0 (patch)
tree5eab46a22d4d2935d209b33efd8a1e9931193a33
parent17d3abf227d9be925fd0559366e8ac91a7504e4c (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.c2
-rw-r--r--test/regression/nx_secure_test/nx_secure_hkdf_test.c5
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),