@@ -13843,7 +13843,9 @@ int wc_ecc_encrypt_ex(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
1384313843 ret = wc_ecc_shared_secret(privKey, pubKey, sharedSecret + pubKeySz,
1384413844 &sharedSz);
1384513845 #endif
13846- } while (ret == WC_PENDING_E);
13846+ }
13847+ while (ret == WC_PENDING_E);
13848+
1384713849 if (ret == 0) {
1384813850 #ifdef WOLFSSL_ECIES_ISO18033
1384913851 /* KDF data is encoded public key and secret. */
@@ -13855,6 +13857,30 @@ int wc_ecc_encrypt_ex(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
1385513857 ctx->kdfSaltSz, ctx->kdfInfo, ctx->kdfInfoSz,
1385613858 keys, (word32)keysLen);
1385713859 break;
13860+ case ecHKDF_SHA1 :
13861+ ret = wc_HKDF(WC_SHA, sharedSecret, sharedSz, ctx->kdfSalt,
13862+ ctx->kdfSaltSz, ctx->kdfInfo, ctx->kdfInfoSz,
13863+ keys, (word32)keysLen);
13864+ break;
13865+ #if defined(HAVE_X963_KDF) && !defined(NO_HASH_WRAPPER)
13866+ case ecKDF_X963_SHA1 :
13867+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA, sharedSecret, sharedSz,
13868+ ctx->kdfInfo, ctx->kdfInfoSz, keys, (word32)keysLen);
13869+ break;
13870+ case ecKDF_X963_SHA256 :
13871+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA256, sharedSecret, sharedSz,
13872+ ctx->kdfInfo, ctx->kdfInfoSz, keys, (word32)keysLen);
13873+ break;
13874+ case ecKDF_SHA1 :
13875+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA, sharedSecret, sharedSz,
13876+ NULL, 0, keys, (word32)keysLen);
13877+ break;
13878+ case ecKDF_SHA256 :
13879+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA256, sharedSecret, sharedSz,
13880+ NULL, 0, keys, (word32)keysLen);
13881+ break;
13882+ #endif
13883+
1385813884
1385913885 default:
1386013886 ret = BAD_FUNC_ARG;
@@ -14250,6 +14276,29 @@ int wc_ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
1425014276 ctx->kdfSaltSz, ctx->kdfInfo, ctx->kdfInfoSz,
1425114277 keys, (word32)keysLen);
1425214278 break;
14279+ case ecHKDF_SHA1 :
14280+ ret = wc_HKDF(WC_SHA, sharedSecret, sharedSz, ctx->kdfSalt,
14281+ ctx->kdfSaltSz, ctx->kdfInfo, ctx->kdfInfoSz,
14282+ keys, (word32)keysLen);
14283+ break;
14284+ #if defined(HAVE_X963_KDF) && !defined(NO_HASH_WRAPPER)
14285+ case ecKDF_X963_SHA1 :
14286+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA, sharedSecret, sharedSz,
14287+ ctx->kdfInfo, ctx->kdfInfoSz, keys, (word32)keysLen);
14288+ break;
14289+ case ecKDF_X963_SHA256 :
14290+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA256, sharedSecret, sharedSz,
14291+ ctx->kdfInfo, ctx->kdfInfoSz, keys, (word32)keysLen);
14292+ break;
14293+ case ecKDF_SHA1 :
14294+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA, sharedSecret, sharedSz,
14295+ NULL, 0, keys, (word32)keysLen);
14296+ break;
14297+ case ecKDF_SHA256 :
14298+ ret = wc_X963_KDF(WC_HASH_TYPE_SHA256, sharedSecret, sharedSz,
14299+ NULL, 0, keys, (word32)keysLen);
14300+ break;
14301+ #endif
1425314302
1425414303 default:
1425514304 ret = BAD_FUNC_ARG;
0 commit comments