From 31ad59b67d3bdf356d91cb97d7a97615cf8e80b7 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Sat, 7 Nov 2026 14:56:08 +1100 Subject: [PATCH] * now using HKDF for derive_key() --- src/Utils.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Utils.cpp b/src/Utils.cpp index 978185683..b0339d712 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -1,6 +1,7 @@ #include "Utils.h" #include #include +#include #ifdef USE_CC310_HW_CRYPTO #include @@ -174,11 +175,12 @@ int Utils::MACThenDecrypt(const uint8_t* shared_secret, uint8_t* dest, const uin return 0; // invalid HMAC } -static void derive_key(uint8_t* derived_key, const uint8_t* key, int key_len, const uint8_t* iv, int iv_len) { - // TODO: look into HKDF - for (int i = 0; i < 32; i++) { - derived_key[i] = key[i % key_len] ^ iv[i % iv_len]; - } +// Derive a key with HKDF-SHA256 +static void derive_key(uint8_t* out, const uint8_t* key, size_t key_len, const uint8_t* iv, size_t iv_len) { + hkdf(out, key_len, + key, key_len, // IKM + nullptr, 0, // salt + iv, iv_len); // info } int Utils::encryptThenMAC(const uint8_t* shared_secret, const uint8_t* iv, int iv_len, uint8_t* dest, const uint8_t* src, int src_len) {