Add pbkdf2_cmac to key derivation setup
Signed-off-by: Kusumit Ghoderao <Kusumit.Ghoderao@silabs.com>
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 4d8979c..f29d1ab 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -6143,6 +6143,11 @@
return 1;
}
#endif
+#if defined(MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_AES_CMAC_PRF_128)
+ if (kdf_alg == PSA_ALG_PBKDF2_AES_CMAC_PRF_128) {
+ return 1;
+ }
+#endif
return 0;
}
@@ -6168,10 +6173,14 @@
}
/* All currently supported key derivation algorithms (apart from
- * ecjpake to pms) are based on a hash algorithm. */
+ * ecjpake to pms and pbkdf2_aes_cmac_128) are based on a hash algorithm. */
psa_algorithm_t hash_alg = PSA_ALG_HKDF_GET_HASH(kdf_alg);
size_t hash_size = PSA_HASH_LENGTH(hash_alg);
- if (kdf_alg != PSA_ALG_TLS12_ECJPAKE_TO_PMS) {
+ if (kdf_alg == PSA_ALG_TLS12_ECJPAKE_TO_PMS) {
+ hash_size = PSA_HASH_LENGTH(PSA_ALG_SHA_256);
+ } else if (kdf_alg == PSA_ALG_PBKDF2_AES_CMAC_PRF_128) {
+ hash_size = AES_CMAC_PRF_128_OUTPUT_SIZE;
+ } else {
if (hash_size == 0) {
return PSA_ERROR_NOT_SUPPORTED;
}
@@ -6183,8 +6192,6 @@
if (status != PSA_SUCCESS) {
return status;
}
- } else {
- hash_size = PSA_HASH_LENGTH(PSA_ALG_SHA_256);
}
if ((PSA_ALG_IS_TLS12_PRF(kdf_alg) ||