Merge pull request #7186 from douzzer/20240129-fix-wc_RsaFunction_ex

20240129-fix-wc_RsaFunction_ex
This commit is contained in:
Sean Parkinson
2024-01-30 23:14:52 +10:00
committed by GitHub
2 changed files with 30 additions and 54 deletions

View File

@ -4570,20 +4570,15 @@ int wc_ecc_shared_secret(ecc_key* private_key, ecc_key* public_key, byte* out,
#endif #endif
{ {
err = wc_CryptoCb_Ecdh(private_key, public_key, out, outlen); err = wc_CryptoCb_Ecdh(private_key, public_key, out, outlen);
#ifndef WOLF_CRYPTO_CB_ONLY_ECC
if (err != CRYPTOCB_UNAVAILABLE) if (err != CRYPTOCB_UNAVAILABLE)
return err; return err;
/* fall-through when unavailable */ /* fall-through when unavailable */
#endif
#ifdef WOLF_CRYPTO_CB_ONLY_ECC
if (err == CRYPTOCB_UNAVAILABLE) {
err = NO_VALID_DEVID;
}
#endif
} }
#endif #endif
#ifndef WOLF_CRYPTO_CB_ONLY_ECC #ifdef WOLF_CRYPTO_CB_ONLY_ECC
return NO_VALID_DEVID;
#else /* !WOLF_CRYPTO_CB_ONLY_ECC */
/* type valid? */ /* type valid? */
if (private_key->type != ECC_PRIVATEKEY && if (private_key->type != ECC_PRIVATEKEY &&
private_key->type != ECC_PRIVATEKEY_ONLY) { private_key->type != ECC_PRIVATEKEY_ONLY) {
@ -4632,7 +4627,7 @@ int wc_ecc_shared_secret(ecc_key* private_key, ecc_key* public_key, byte* out,
#else #else
err = wc_ecc_shared_secret_ex(private_key, &public_key->pubkey, out, outlen); err = wc_ecc_shared_secret_ex(private_key, &public_key->pubkey, out, outlen);
#endif /* WOLFSSL_ATECC508A */ #endif /* WOLFSSL_ATECC508A */
#endif /* WOLF_CRYPTO_CB_ONLY_ECC */ #endif /* !WOLF_CRYPTO_CB_ONLY_ECC */
return err; return err;
} }
@ -5529,21 +5524,15 @@ static int _ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key,
#endif #endif
{ {
err = wc_CryptoCb_MakeEccKey(rng, keysize, key, curve_id); err = wc_CryptoCb_MakeEccKey(rng, keysize, key, curve_id);
#ifndef WOLF_CRYPTO_CB_ONLY_ECC
if (err != CRYPTOCB_UNAVAILABLE) if (err != CRYPTOCB_UNAVAILABLE)
return err; return err;
/* fall-through when unavailable */ /* fall-through when unavailable */
#endif
#ifdef WOLF_CRYPTO_CB_ONLY_ECC
if (err == CRYPTOCB_UNAVAILABLE) {
return NO_VALID_DEVID;
}
return err;
#endif
} }
#endif #endif
#ifndef WOLF_CRYPTO_CB_ONLY_ECC #ifdef WOLF_CRYPTO_CB_ONLY_ECC
return NO_VALID_DEVID;
#else /* !WOLF_CRYPTO_CB_ONLY_ECC */
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC) #if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC)
if (key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_ECC) { if (key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_ECC) {
#ifdef HAVE_CAVIUM #ifdef HAVE_CAVIUM
@ -5859,7 +5848,7 @@ static int _ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key,
#endif /* HAVE_ECC_MAKE_PUB */ #endif /* HAVE_ECC_MAKE_PUB */
return err; return err;
#endif /* WOLF_CRYPTO_CB_ONLY_ECC */ #endif /* !WOLF_CRYPTO_CB_ONLY_ECC */
} }
@ -6563,20 +6552,20 @@ int wc_ecc_sign_hash(const byte* in, word32 inlen, byte* out, word32 *outlen,
#endif #endif
{ {
err = wc_CryptoCb_EccSign(in, inlen, out, outlen, rng, key); err = wc_CryptoCb_EccSign(in, inlen, out, outlen, rng, key);
#ifndef WOLF_CRYPTO_CB_ONLY_ECC
if (err != CRYPTOCB_UNAVAILABLE) if (err != CRYPTOCB_UNAVAILABLE)
return err; return err;
/* fall-through when unavailable */ /* fall-through when unavailable */
#endif
#ifdef WOLF_CRYPTO_CB_ONLY_ECC
if (err == CRYPTOCB_UNAVAILABLE) {
err = NO_VALID_DEVID;
}
#endif
} }
#endif #endif
#ifndef WOLF_CRYPTO_CB_ONLY_ECC #ifdef WOLF_CRYPTO_CB_ONLY_ECC
(void)rng;
(void)inlen;
(void)s;
(void)r;
(void)err;
return NO_VALID_DEVID;
#else /* !WOLF_CRYPTO_CB_ONLY_ECC */
if (rng == NULL) { if (rng == NULL) {
WOLFSSL_MSG("ECC sign RNG missing"); WOLFSSL_MSG("ECC sign RNG missing");
return ECC_BAD_ARG_E; return ECC_BAD_ARG_E;
@ -6640,15 +6629,8 @@ int wc_ecc_sign_hash(const byte* in, word32 inlen, byte* out, word32 *outlen,
FREE_MP_INT_SIZE(s, key->heap, DYNAMIC_TYPE_ECC); FREE_MP_INT_SIZE(s, key->heap, DYNAMIC_TYPE_ECC);
FREE_MP_INT_SIZE(r, key->heap, DYNAMIC_TYPE_ECC); FREE_MP_INT_SIZE(r, key->heap, DYNAMIC_TYPE_ECC);
#endif /* WOLFSSL_ASYNC_CRYPT */ #endif /* WOLFSSL_ASYNC_CRYPT */
#else
(void)rng;
(void)inlen;
(void)s;
(void)r;
(void)err;
#endif /* WOLF_CRYPTO_CB_ONLY_ECC */
return err; return err;
#endif /* !WOLF_CRYPTO_CB_ONLY_ECC */
} }
#endif /* !NO_ASN */ #endif /* !NO_ASN */
@ -8289,21 +8271,20 @@ int wc_ecc_verify_hash(const byte* sig, word32 siglen, const byte* hash,
#endif #endif
{ {
err = wc_CryptoCb_EccVerify(sig, siglen, hash, hashlen, res, key); err = wc_CryptoCb_EccVerify(sig, siglen, hash, hashlen, res, key);
#ifndef WOLF_CRYPTO_CB_ONLY_ECC
if (err != CRYPTOCB_UNAVAILABLE) if (err != CRYPTOCB_UNAVAILABLE)
return err; return err;
/* fall-through when unavailable */ /* fall-through when unavailable */
#endif
#ifdef WOLF_CRYPTO_CB_ONLY_ECC
if (err == CRYPTOCB_UNAVAILABLE) {
err = NO_VALID_DEVID;
}
#endif
} }
#endif #endif
#ifndef WOLF_CRYPTO_CB_ONLY_ECC #ifdef WOLF_CRYPTO_CB_ONLY_ECC
(void)siglen;
(void)hashlen;
(void)s;
(void)r;
(void)err;
return NO_VALID_DEVID;
#else /* !WOLF_CRYPTO_CB_ONLY_ECC */
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC) #if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC)
err = wc_ecc_alloc_async(key); err = wc_ecc_alloc_async(key);
if (err != 0) if (err != 0)
@ -8415,15 +8396,8 @@ int wc_ecc_verify_hash(const byte* sig, word32 siglen, const byte* hash,
/* make sure required variables are reset */ /* make sure required variables are reset */
wc_ecc_reset(key); wc_ecc_reset(key);
#else
(void)siglen;
(void)hashlen;
(void)s;
(void)r;
(void)err;
#endif /* WOLF_CRYPTO_CB_ONLY_ECC */
return err; return err;
#endif /* !WOLF_CRYPTO_CB_ONLY_ECC */
} }
#endif /* !NO_ASN */ #endif /* !NO_ASN */

View File

@ -3141,7 +3141,9 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
} }
#endif #endif
#ifndef WOLF_CRYPTO_CB_ONLY_RSA #ifdef WOLF_CRYPTO_CB_ONLY_RSA
return NO_VALID_DEVID;
#else /* !WOLF_CRYPTO_CB_ONLY_RSA */
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
#if !defined(WOLFSSL_RSA_VERIFY_ONLY) && !defined(TEST_UNPAD_CONSTANT_TIME) && \ #if !defined(WOLFSSL_RSA_VERIFY_ONLY) && !defined(TEST_UNPAD_CONSTANT_TIME) && \
@ -3192,7 +3194,7 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
wc_RsaCleanup(key); wc_RsaCleanup(key);
} }
return ret; return ret;
#endif /* WOLF_CRYPTO_CB_ONLY_RSA */ #endif /* !WOLF_CRYPTO_CB_ONLY_RSA */
} }
int wc_RsaFunction(const byte* in, word32 inLen, byte* out, int wc_RsaFunction(const byte* in, word32 inLen, byte* out,