@@ -9491,14 +9491,15 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
94919491 if (rsa == NULL)
94929492 return MEMORY_E;
94939493
9494- wc_InitRsaKey(rsa, heap);
9495- if (wc_RsaPrivateKeyDecode(key, &tmpIdx, rsa, keySz) == 0) {
9496- *algoID = RSAk;
9497- }
9498- else {
9499- WOLFSSL_MSG("Not RSA DER key");
9494+ if (wc_InitRsaKey(rsa, heap) == 0) {
9495+ if (wc_RsaPrivateKeyDecode(key, &tmpIdx, rsa, keySz) == 0) {
9496+ *algoID = RSAk;
9497+ }
9498+ else {
9499+ WOLFSSL_MSG("Not RSA DER key");
9500+ }
9501+ wc_FreeRsaKey(rsa);
95009502 }
9501- wc_FreeRsaKey(rsa);
95029503 XFREE(rsa, heap, DYNAMIC_TYPE_TMP_BUFFER);
95039504 }
95049505 #endif /* !NO_RSA && !NO_ASN_CRYPT */
@@ -9509,22 +9510,23 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
95099510 return MEMORY_E;
95109511
95119512 tmpIdx = 0;
9512- wc_ecc_init_ex(ecc, heap, INVALID_DEVID);
9513- if (wc_EccPrivateKeyDecode(key, &tmpIdx, ecc, keySz) == 0) {
9514- *algoID = ECDSAk;
9515-
9516- /* now find oid */
9517- if (wc_ecc_get_oid(ecc->dp->oidSum, curveOID, oidSz) < 0) {
9518- WOLFSSL_MSG("Error getting ECC curve OID");
9519- wc_ecc_free(ecc);
9520- XFREE(ecc, heap, DYNAMIC_TYPE_TMP_BUFFER);
9521- return BAD_FUNC_ARG;
9513+ if (wc_ecc_init_ex(ecc, heap, INVALID_DEVID) == 0) {
9514+ if (wc_EccPrivateKeyDecode(key, &tmpIdx, ecc, keySz) == 0) {
9515+ *algoID = ECDSAk;
9516+
9517+ /* now find oid */
9518+ if (wc_ecc_get_oid(ecc->dp->oidSum, curveOID, oidSz) < 0) {
9519+ WOLFSSL_MSG("Error getting ECC curve OID");
9520+ wc_ecc_free(ecc);
9521+ XFREE(ecc, heap, DYNAMIC_TYPE_TMP_BUFFER);
9522+ return BAD_FUNC_ARG;
9523+ }
95229524 }
9525+ else {
9526+ WOLFSSL_MSG("Not ECC DER key either");
9527+ }
9528+ wc_ecc_free(ecc);
95239529 }
9524- else {
9525- WOLFSSL_MSG("Not ECC DER key either");
9526- }
9527- wc_ecc_free(ecc);
95289530 XFREE(ecc, heap, DYNAMIC_TYPE_TMP_BUFFER);
95299531 }
95309532#endif /* HAVE_ECC && !NO_ASN_CRYPT */
0 commit comments