@@ -27901,8 +27901,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hkdf_test(void)
2790127901 L = (int)sizeof(okm1);
2790227902
2790327903#ifndef NO_SHA
27904+ #if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || FIPS_VERSION_GE(7,0))
27905+ ret = wc_HKDF_ex(WC_SHA, ikm1, (word32)sizeof(ikm1), NULL, 0, NULL, 0,
27906+ okm1, (word32)L, HEAP_HINT, devId);
27907+ #else
2790427908 ret = wc_HKDF(WC_SHA, ikm1, (word32)sizeof(ikm1), NULL, 0, NULL, 0,
27905- okm1, (word32)L);
27909+ okm1, (word32)L);
27910+ #endif
2790627911 if (ret != 0)
2790727912 return WC_TEST_RET_ENC_EC(ret);
2790827913
@@ -27912,8 +27917,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hkdf_test(void)
2791227917#ifndef HAVE_FIPS
2791327918 /* fips can't have key size under 14 bytes, salt is key too */
2791427919 L = (int)sizeof(okm1);
27915- ret = wc_HKDF(WC_SHA, ikm1, 11, salt1, (word32)sizeof(salt1),
27916- info1, (word32)sizeof(info1), okm1, (word32)L);
27920+ #if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || FIPS_VERSION_GE(7,0))
27921+ ret = wc_HKDF_ex(WC_SHA, ikm1, 11, salt1, (word32)sizeof(salt1), info1,
27922+ (word32)sizeof(info1), okm1, (word32)L, HEAP_HINT, devId);
27923+ #else
27924+ ret = wc_HKDF(WC_SHA, ikm1, 11, salt1, (word32)sizeof(salt1), info1,
27925+ (word32)sizeof(info1), okm1, (word32)L);
27926+ #endif
2791727927 if (ret != 0)
2791827928 return WC_TEST_RET_ENC_EC(ret);
2791927929
@@ -27923,8 +27933,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hkdf_test(void)
2792327933#endif /* !NO_SHA */
2792427934
2792527935#ifndef NO_SHA256
27936+ #if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || FIPS_VERSION_GE(7,0))
27937+ ret = wc_HKDF_ex(WC_SHA256, ikm1, (word32)sizeof(ikm1), NULL, 0, NULL, 0,
27938+ okm1, (word32)L, HEAP_HINT, devId);
27939+ #else
2792627940 ret = wc_HKDF(WC_SHA256, ikm1, (word32)sizeof(ikm1), NULL, 0, NULL, 0,
27927- okm1, (word32)L);
27941+ okm1, (word32)L);
27942+ #endif
2792827943 if (ret != 0)
2792927944 return WC_TEST_RET_ENC_EC(ret);
2793027945
@@ -27933,8 +27948,15 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hkdf_test(void)
2793327948
2793427949#ifndef HAVE_FIPS
2793527950 /* fips can't have key size under 14 bytes, salt is key too */
27936- ret = wc_HKDF(WC_SHA256, ikm1, (word32)sizeof(ikm1),
27937- salt1, (word32)sizeof(salt1), info1, (word32)sizeof(info1), okm1, (word32)L);
27951+ #if !defined(HAVE_SELFTEST)
27952+ ret = wc_HKDF_ex(WC_SHA256, ikm1, (word32)sizeof(ikm1),
27953+ salt1, (word32)sizeof(salt1), info1, (word32)sizeof(info1), okm1,
27954+ (word32)L, HEAP_HINT, devId);
27955+ #else
27956+ ret = wc_HKDF(WC_SHA256, ikm1, (word32)sizeof(ikm1), salt1,
27957+ (word32)sizeof(salt1), info1, (word32)sizeof(info1), okm1,
27958+ (word32)L);
27959+ #endif
2793827960 if (ret != 0)
2793927961 return WC_TEST_RET_ENC_EC(ret);
2794027962
@@ -60809,6 +60831,28 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
6080960831 info->cmac.cmac->devId = devIdArg;
6081060832 }
6081160833#endif /* WOLFSSL_CMAC && !(NO_AES) && WOLFSSL_AES_DIRECT */
60834+ #if defined(HAVE_HKDF) && !defined(NO_HMAC)
60835+ else if (info->algo_type == WC_ALGO_TYPE_KDF) {
60836+ if (info->kdf.type == WC_KDF_TYPE_HKDF) {
60837+ /* Redirect to software implementation for testing */
60838+
60839+ #if !defined(HAVE_SELFTEST) && (!defined(HAVE_FIPS) || FIPS_VERSION_GE(7,0))
60840+ ret = wc_HKDF_ex(info->kdf.hkdf.hashType,
60841+ info->kdf.hkdf.inKey, info->kdf.hkdf.inKeySz,
60842+ info->kdf.hkdf.salt, info->kdf.hkdf.saltSz,
60843+ info->kdf.hkdf.info, info->kdf.hkdf.infoSz,
60844+ info->kdf.hkdf.out, info->kdf.hkdf.outSz,
60845+ NULL, INVALID_DEVID);
60846+ #else
60847+ ret = wc_HKDF(info->kdf.hkdf.hashType,
60848+ info->kdf.hkdf.inKey, info->kdf.hkdf.inKeySz,
60849+ info->kdf.hkdf.salt, info->kdf.hkdf.saltSz,
60850+ info->kdf.hkdf.info, info->kdf.hkdf.infoSz,
60851+ info->kdf.hkdf.out, info->kdf.hkdf.outSz);
60852+ #endif
60853+ }
60854+ }
60855+ #endif /* HAVE_HKDF && !NO_HMAC */
6081260856
6081360857 (void)devIdArg;
6081460858 (void)myCtx;
@@ -60960,6 +61004,10 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cryptocb_test(void)
6096061004 ret = hmac_sha3_test();
6096161005 #endif
6096261006#endif
61007+ #if defined(HAVE_HKDF) && !defined(NO_HMAC)
61008+ if (ret == 0)
61009+ ret = hkdf_test();
61010+ #endif
6096361011#ifndef NO_PWDBASED
6096461012 #if defined(HAVE_PBKDF2) && !defined(NO_SHA256) && !defined(NO_HMAC)
6096561013 PRIVATE_KEY_UNLOCK();
0 commit comments