mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
Add in ASYNC_CRYPTO_SW checks
This commit is contained in:
63
configure.ac
63
configure.ac
@@ -6988,7 +6988,7 @@ AC_ARG_WITH([cavium-v],
|
|||||||
ENABLED_CAVIUM_V=yes
|
ENABLED_CAVIUM_V=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
ENABLED_CAVIUM_=no
|
ENABLED_CAVIUM=no
|
||||||
ENABLED_CAVIUM_V=no
|
ENABLED_CAVIUM_V=no
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@@ -7762,6 +7762,30 @@ then
|
|||||||
AC_MSG_ERROR([please use --with-libz if enabling mcapi.])
|
AC_MSG_ERROR([please use --with-libz if enabling mcapi.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# cryptodev is old name, replaced with cryptocb
|
||||||
|
AC_ARG_ENABLE([cryptodev],
|
||||||
|
[AS_HELP_STRING([--enable-cryptodev],[DEPRECATED, use cryptocb instead])],
|
||||||
|
[ ENABLED_CRYPTOCB=$enableval ],[ ENABLED_CRYPTOCB=no ])
|
||||||
|
|
||||||
|
# Support for crypto callbacks
|
||||||
|
AC_ARG_ENABLE([cryptocb],
|
||||||
|
[AS_HELP_STRING([--enable-cryptocb],[Enable crypto callbacks (default: disabled)])],
|
||||||
|
[ ENABLED_CRYPTOCB=$enableval ],
|
||||||
|
[ ENABLED_CRYPTOCB=no ]
|
||||||
|
)
|
||||||
|
|
||||||
|
if test "x$ENABLED_PKCS11" = "xyes" || test "x$ENABLED_WOLFTPM" = "xyes" || test "$ENABLED_CAAM" != "no"
|
||||||
|
then
|
||||||
|
ENABLED_CRYPTOCB=yes
|
||||||
|
fi
|
||||||
|
if test "$ENABLED_CRYPTOCB" = "yes"
|
||||||
|
then
|
||||||
|
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Asynchronous Crypto
|
# Asynchronous Crypto
|
||||||
AC_ARG_ENABLE([asynccrypt],
|
AC_ARG_ENABLE([asynccrypt],
|
||||||
[AS_HELP_STRING([--enable-asynccrypt],[Enable Asynchronous Crypto (default: disabled)])],
|
[AS_HELP_STRING([--enable-asynccrypt],[Enable Asynchronous Crypto (default: disabled)])],
|
||||||
@@ -7784,6 +7808,7 @@ fi
|
|||||||
|
|
||||||
if test "$ENABLED_ASYNCCRYPT" = "yes"
|
if test "$ENABLED_ASYNCCRYPT" = "yes"
|
||||||
then
|
then
|
||||||
|
AC_MSG_NOTICE([Enabling asynchronous support])
|
||||||
if ! test -f ${srcdir}/wolfcrypt/src/async.c || ! test -f ${srcdir}/wolfssl/wolfcrypt/async.h
|
if ! test -f ${srcdir}/wolfcrypt/src/async.c || ! test -f ${srcdir}/wolfssl/wolfcrypt/async.h
|
||||||
then
|
then
|
||||||
AC_MSG_ERROR([--enable-asynccrypt requested, but WOLFSSL_ASYNC_CRYPT source files are missing.])
|
AC_MSG_ERROR([--enable-asynccrypt requested, but WOLFSSL_ASYNC_CRYPT source files are missing.])
|
||||||
@@ -7793,15 +7818,14 @@ then
|
|||||||
|
|
||||||
# If no async backend (hardware or software) has been explicitly enabled,
|
# If no async backend (hardware or software) has been explicitly enabled,
|
||||||
# use the software backend for testing.
|
# use the software backend for testing.
|
||||||
if test "x$ENABLED_CAVIUM" = "xno" && test "x$ENABLED_INTEL_QA" = "xno" &&
|
if test "x$ENABLED_CAVIUM" != "xyes" && test "x$ENABLED_INTEL_QA" != "xyes" && test "x$ENABLED_CRYPTOCB" != "xyes" && test "x$ENABLED_PKCALLBACKS" != "xyes" && test "x$ENABLED_ASYNCCRYPT_SW" != "xyes"
|
||||||
test "x$ENABLED_ASYNCCRYPT_SW" = "xno"
|
|
||||||
then
|
then
|
||||||
# Async threading is Linux specific
|
AC_MSG_NOTICE([Enabling asynchronous software simulator])
|
||||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ASYNC_CRYPT_SW"
|
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ASYNC_CRYPT_SW"
|
||||||
|
ENABLED_ASYNCCRYPT_SW=yes
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# check for async if using Intel QuckAssist or Cavium
|
# check for async if using Intel QuckAssist or Cavium
|
||||||
if test "x$ENABLED_INTEL_QA" = "xyes" || test "x$ENABLED_CAVIUM" = "xyes" ; then
|
if test "x$ENABLED_INTEL_QA" = "xyes" || test "x$ENABLED_CAVIUM" = "xyes" ; then
|
||||||
if test "x$ENABLED_ASYNCCRYPT" = "xno" ; then
|
if test "x$ENABLED_ASYNCCRYPT" = "xno" ; then
|
||||||
@@ -7809,8 +7833,7 @@ if test "x$ENABLED_INTEL_QA" = "xyes" || test "x$ENABLED_CAVIUM" = "xyes" ; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Asynchronous threading (Linux specific)
|
||||||
# Asynchronous threading
|
|
||||||
AC_ARG_ENABLE([asyncthreads],
|
AC_ARG_ENABLE([asyncthreads],
|
||||||
[AS_HELP_STRING([--enable-asyncthreads],[Enable Asynchronous Threading (default: enabled)])],
|
[AS_HELP_STRING([--enable-asyncthreads],[Enable Asynchronous Threading (default: enabled)])],
|
||||||
[ ENABLED_ASYNCTHREADS=$enableval ],
|
[ ENABLED_ASYNCTHREADS=$enableval ],
|
||||||
@@ -7833,28 +7856,6 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# cryptodev is old name, replaced with cryptocb
|
|
||||||
AC_ARG_ENABLE([cryptodev],
|
|
||||||
[AS_HELP_STRING([--enable-cryptodev],[DEPRECATED, use cryptocb instead])],
|
|
||||||
[ ENABLED_CRYPTOCB=$enableval ],[ ENABLED_CRYPTOCB=no ])
|
|
||||||
|
|
||||||
# Support for crypto callbacks
|
|
||||||
AC_ARG_ENABLE([cryptocb],
|
|
||||||
[AS_HELP_STRING([--enable-cryptocb],[Enable crypto callbacks (default: disabled)])],
|
|
||||||
[ ENABLED_CRYPTOCB=$enableval ],
|
|
||||||
[ ENABLED_CRYPTOCB=no ]
|
|
||||||
)
|
|
||||||
|
|
||||||
if test "x$ENABLED_PKCS11" = "xyes" || test "x$ENABLED_WOLFTPM" = "xyes" || test "$ENABLED_CAAM" != "no"
|
|
||||||
then
|
|
||||||
ENABLED_CRYPTOCB=yes
|
|
||||||
fi
|
|
||||||
if test "$ENABLED_CRYPTOCB" = "yes"
|
|
||||||
then
|
|
||||||
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Session Export
|
# Session Export
|
||||||
AC_ARG_ENABLE([sessionexport],
|
AC_ARG_ENABLE([sessionexport],
|
||||||
[AS_HELP_STRING([--enable-sessionexport],[Enable export and import of sessions (default: disabled)])],
|
[AS_HELP_STRING([--enable-sessionexport],[Enable export and import of sessions (default: disabled)])],
|
||||||
@@ -9473,7 +9474,8 @@ echo " * Stack sizes in tests: $ENABLED_STACKSIZE"
|
|||||||
echo " * Heap stats in tests: $ENABLED_TRACKMEMORY"
|
echo " * Heap stats in tests: $ENABLED_TRACKMEMORY"
|
||||||
echo " * User Crypto: $ENABLED_USER_CRYPTO"
|
echo " * User Crypto: $ENABLED_USER_CRYPTO"
|
||||||
echo " * Fast RSA: $ENABLED_FAST_RSA"
|
echo " * Fast RSA: $ENABLED_FAST_RSA"
|
||||||
echo " * Async Crypto: $ENABLED_ASYNCCRYPT"
|
echo " * Asynchronous Crypto: $ENABLED_ASYNCCRYPT"
|
||||||
|
echo " * Asynchronous Crypto (sim): $ENABLED_ASYNCCRYPT_SW"
|
||||||
echo " * PKCS#8: $ENABLED_PKCS8"
|
echo " * PKCS#8: $ENABLED_PKCS8"
|
||||||
echo " * PKCS#11: $ENABLED_PKCS11"
|
echo " * PKCS#11: $ENABLED_PKCS11"
|
||||||
echo " * PKCS#12: $ENABLED_PKCS12"
|
echo " * PKCS#12: $ENABLED_PKCS12"
|
||||||
@@ -9494,6 +9496,7 @@ echo " * Inline Code: $ENABLED_INLINE"
|
|||||||
echo " * Linux AF_ALG: $ENABLED_AFALG"
|
echo " * Linux AF_ALG: $ENABLED_AFALG"
|
||||||
echo " * Linux KCAPI: $ENABLED_KCAPI"
|
echo " * Linux KCAPI: $ENABLED_KCAPI"
|
||||||
echo " * Linux devcrypto: $ENABLED_DEVCRYPTO"
|
echo " * Linux devcrypto: $ENABLED_DEVCRYPTO"
|
||||||
|
echo " * PK callbacks: $ENABLED_PKCALLBACKS"
|
||||||
echo " * Crypto callbacks: $ENABLED_CRYPTOCB"
|
echo " * Crypto callbacks: $ENABLED_CRYPTOCB"
|
||||||
echo " * i.MX CAAM: $ENABLED_CAAM"
|
echo " * i.MX CAAM: $ENABLED_CAAM"
|
||||||
echo " * IoT-Safe: $ENABLED_IOTSAFE"
|
echo " * IoT-Safe: $ENABLED_IOTSAFE"
|
||||||
|
@@ -4037,7 +4037,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
|||||||
return IntelQaSymAesCbcEncrypt(&aes->asyncDev, out, in, sz,
|
return IntelQaSymAesCbcEncrypt(&aes->asyncDev, out, in, sz,
|
||||||
(const byte*)aes->devKey, aes->keylen,
|
(const byte*)aes->devKey, aes->keylen,
|
||||||
(byte*)aes->reg, AES_BLOCK_SIZE);
|
(byte*)aes->reg, AES_BLOCK_SIZE);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_CBC_ENCRYPT)) {
|
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_CBC_ENCRYPT)) {
|
||||||
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
||||||
sw->aes.aes = aes;
|
sw->aes.aes = aes;
|
||||||
@@ -4173,7 +4173,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
|||||||
return IntelQaSymAesCbcDecrypt(&aes->asyncDev, out, in, sz,
|
return IntelQaSymAesCbcDecrypt(&aes->asyncDev, out, in, sz,
|
||||||
(const byte*)aes->devKey, aes->keylen,
|
(const byte*)aes->devKey, aes->keylen,
|
||||||
(byte*)aes->reg, AES_BLOCK_SIZE);
|
(byte*)aes->reg, AES_BLOCK_SIZE);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_CBC_DECRYPT)) {
|
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_CBC_DECRYPT)) {
|
||||||
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
||||||
sw->aes.aes = aes;
|
sw->aes.aes = aes;
|
||||||
@@ -6715,7 +6715,7 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
|||||||
return IntelQaSymAesGcmEncrypt(&aes->asyncDev, out, in, sz,
|
return IntelQaSymAesGcmEncrypt(&aes->asyncDev, out, in, sz,
|
||||||
(const byte*)aes->devKey, aes->keylen, iv, ivSz,
|
(const byte*)aes->devKey, aes->keylen, iv, ivSz,
|
||||||
authTag, authTagSz, authIn, authInSz);
|
authTag, authTagSz, authIn, authInSz);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_GCM_ENCRYPT)) {
|
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_GCM_ENCRYPT)) {
|
||||||
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
||||||
sw->aes.aes = aes;
|
sw->aes.aes = aes;
|
||||||
@@ -7275,7 +7275,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
|||||||
return IntelQaSymAesGcmDecrypt(&aes->asyncDev, out, in, sz,
|
return IntelQaSymAesGcmDecrypt(&aes->asyncDev, out, in, sz,
|
||||||
(const byte*)aes->devKey, aes->keylen, iv, ivSz,
|
(const byte*)aes->devKey, aes->keylen, iv, ivSz,
|
||||||
authTag, authTagSz, authIn, authInSz);
|
authTag, authTagSz, authIn, authInSz);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_GCM_DECRYPT)) {
|
if (wc_AsyncSwInit(&aes->asyncDev, ASYNC_SW_AES_GCM_DECRYPT)) {
|
||||||
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
WC_ASYNC_SW* sw = &aes->asyncDev.sw;
|
||||||
sw->aes.aes = aes;
|
sw->aes.aes = aes;
|
||||||
|
@@ -1616,7 +1616,7 @@
|
|||||||
#elif defined(HAVE_INTEL_QA)
|
#elif defined(HAVE_INTEL_QA)
|
||||||
return IntelQaSymDes3CbcEncrypt(&des->asyncDev, out, in, sz,
|
return IntelQaSymDes3CbcEncrypt(&des->asyncDev, out, in, sz,
|
||||||
(const byte*)des->devKey, DES3_KEYLEN, (byte*)des->reg, DES3_IVLEN);
|
(const byte*)des->devKey, DES3_KEYLEN, (byte*)des->reg, DES3_IVLEN);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&des->asyncDev, ASYNC_SW_DES3_CBC_ENCRYPT)) {
|
if (wc_AsyncSwInit(&des->asyncDev, ASYNC_SW_DES3_CBC_ENCRYPT)) {
|
||||||
WC_ASYNC_SW* sw = &des->asyncDev.sw;
|
WC_ASYNC_SW* sw = &des->asyncDev.sw;
|
||||||
sw->des.des = des;
|
sw->des.des = des;
|
||||||
@@ -1667,7 +1667,7 @@
|
|||||||
#elif defined(HAVE_INTEL_QA)
|
#elif defined(HAVE_INTEL_QA)
|
||||||
return IntelQaSymDes3CbcDecrypt(&des->asyncDev, out, in, sz,
|
return IntelQaSymDes3CbcDecrypt(&des->asyncDev, out, in, sz,
|
||||||
(const byte*)des->devKey, DES3_KEYLEN, (byte*)des->reg, DES3_IVLEN);
|
(const byte*)des->devKey, DES3_KEYLEN, (byte*)des->reg, DES3_IVLEN);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&des->asyncDev, ASYNC_SW_DES3_CBC_DECRYPT)) {
|
if (wc_AsyncSwInit(&des->asyncDev, ASYNC_SW_DES3_CBC_DECRYPT)) {
|
||||||
WC_ASYNC_SW* sw = &des->asyncDev.sw;
|
WC_ASYNC_SW* sw = &des->asyncDev.sw;
|
||||||
sw->des.des = des;
|
sw->des.des = des;
|
||||||
|
@@ -1433,7 +1433,7 @@ static int wc_DhGenerateKeyPair_Async(DhKey* key, WC_RNG* rng,
|
|||||||
#elif defined(HAVE_CAVIUM)
|
#elif defined(HAVE_CAVIUM)
|
||||||
/* TODO: Not implemented - use software for now */
|
/* TODO: Not implemented - use software for now */
|
||||||
|
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_DH_GEN)) {
|
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_DH_GEN)) {
|
||||||
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
||||||
sw->dhGen.key = key;
|
sw->dhGen.key = key;
|
||||||
@@ -2207,7 +2207,7 @@ static int wc_DhAgree_Async(DhKey* key, byte* agree, word32* agreeSz,
|
|||||||
#elif defined(HAVE_CAVIUM)
|
#elif defined(HAVE_CAVIUM)
|
||||||
/* TODO: Not implemented - use software for now */
|
/* TODO: Not implemented - use software for now */
|
||||||
|
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_DH_AGREE)) {
|
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_DH_AGREE)) {
|
||||||
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
||||||
sw->dhAgree.key = key;
|
sw->dhAgree.key = key;
|
||||||
|
@@ -5495,7 +5495,7 @@ static int _ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key,
|
|||||||
/* TODO: Not implemented */
|
/* TODO: Not implemented */
|
||||||
#elif defined(HAVE_INTEL_QA)
|
#elif defined(HAVE_INTEL_QA)
|
||||||
/* Implemented in ecc_make_pub_ex for the pub calc */
|
/* Implemented in ecc_make_pub_ex for the pub calc */
|
||||||
#else
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_ECC_MAKE)) {
|
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_ECC_MAKE)) {
|
||||||
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
||||||
sw->eccMake.rng = rng;
|
sw->eccMake.rng = rng;
|
||||||
|
@@ -2745,7 +2745,10 @@ static int wc_RsaFunctionSync(const byte* in, word32 inLen, byte* out,
|
|||||||
#endif /* WOLF_CRYPTO_CB_ONLY_RSA */
|
#endif /* WOLF_CRYPTO_CB_ONLY_RSA */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_RSA)
|
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_RSA) && \
|
||||||
|
(defined(HAVE_CAVIUM) || defined(HAVE_INTEL_QA) || \
|
||||||
|
defined(WOLFSSL_ASYNC_CRYPT_SW))
|
||||||
|
#define WC_ENABLE_ASYNC_RSA_INTERNAL /* internal marker */
|
||||||
static int wc_RsaFunctionAsync(const byte* in, word32 inLen, byte* out,
|
static int wc_RsaFunctionAsync(const byte* in, word32 inLen, byte* out,
|
||||||
word32* outLen, int type, RsaKey* key, WC_RNG* rng)
|
word32* outLen, int type, RsaKey* key, WC_RNG* rng)
|
||||||
{
|
{
|
||||||
@@ -2767,7 +2770,7 @@ static int wc_RsaFunctionAsync(const byte* in, word32 inLen, byte* out,
|
|||||||
}
|
}
|
||||||
#endif /* WOLFSSL_ASYNC_CRYPT_SW */
|
#endif /* WOLFSSL_ASYNC_CRYPT_SW */
|
||||||
|
|
||||||
switch(type) {
|
switch (type) {
|
||||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||||
case RSA_PRIVATE_DECRYPT:
|
case RSA_PRIVATE_DECRYPT:
|
||||||
case RSA_PRIVATE_ENCRYPT:
|
case RSA_PRIVATE_ENCRYPT:
|
||||||
@@ -2789,7 +2792,7 @@ static int wc_RsaFunctionAsync(const byte* in, word32 inLen, byte* out,
|
|||||||
&key->u.raw,
|
&key->u.raw,
|
||||||
out, outLen);
|
out, outLen);
|
||||||
#endif
|
#endif
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
ret = wc_RsaFunctionSync(in, inLen, out, outLen, type, key, rng);
|
ret = wc_RsaFunctionSync(in, inLen, out, outLen, type, key, rng);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
@@ -2807,7 +2810,7 @@ static int wc_RsaFunctionAsync(const byte* in, word32 inLen, byte* out,
|
|||||||
ret = IntelQaRsaPublic(&key->asyncDev, in, inLen,
|
ret = IntelQaRsaPublic(&key->asyncDev, in, inLen,
|
||||||
&key->e.raw, &key->n.raw,
|
&key->e.raw, &key->n.raw,
|
||||||
out, outLen);
|
out, outLen);
|
||||||
#else /* WOLFSSL_ASYNC_CRYPT_SW */
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
ret = wc_RsaFunctionSync(in, inLen, out, outLen, type, key, rng);
|
ret = wc_RsaFunctionSync(in, inLen, out, outLen, type, key, rng);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
@@ -2884,7 +2887,11 @@ int wc_RsaDirect(byte* in, word32 inLen, byte* out, word32* outSz,
|
|||||||
key->dataLen = *outSz;
|
key->dataLen = *outSz;
|
||||||
|
|
||||||
ret = wc_RsaFunction(in, inLen, out, &key->dataLen, type, key, rng);
|
ret = wc_RsaFunction(in, inLen, out, &key->dataLen, type, key, rng);
|
||||||
if (ret >= 0 || ret == WC_PENDING_E) {
|
if (ret >= 0
|
||||||
|
#ifdef WC_ENABLE_ASYNC_RSA_INTERNAL
|
||||||
|
|| ret == WC_PENDING_E
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
key->state = (type == RSA_PRIVATE_ENCRYPT ||
|
key->state = (type == RSA_PRIVATE_ENCRYPT ||
|
||||||
type == RSA_PUBLIC_ENCRYPT) ? RSA_STATE_ENCRYPT_RES:
|
type == RSA_PUBLIC_ENCRYPT) ? RSA_STATE_ENCRYPT_RES:
|
||||||
RSA_STATE_DECRYPT_RES;
|
RSA_STATE_DECRYPT_RES;
|
||||||
@@ -3112,7 +3119,7 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
|
|||||||
#endif /* !WOLFSSL_RSA_VERIFY_ONLY && !TEST_UNPAD_CONSTANT_TIME && \
|
#endif /* !WOLFSSL_RSA_VERIFY_ONLY && !TEST_UNPAD_CONSTANT_TIME && \
|
||||||
* !NO_RSA_BOUNDS_CHECK */
|
* !NO_RSA_BOUNDS_CHECK */
|
||||||
|
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_RSA)
|
#ifdef WC_ENABLE_ASYNC_RSA_INTERNAL
|
||||||
if (key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_RSA &&
|
if (key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_RSA &&
|
||||||
key->n.raw.len > 0) {
|
key->n.raw.len > 0) {
|
||||||
ret = wc_RsaFunctionAsync(in, inLen, out, outLen, type, key, rng);
|
ret = wc_RsaFunctionAsync(in, inLen, out, outLen, type, key, rng);
|
||||||
@@ -3299,7 +3306,11 @@ static int RsaPublicEncryptEx(const byte* in, word32 inLen, byte* out,
|
|||||||
ret = wc_RsaFunction(out, (word32)sz, out, &key->dataLen, rsa_type, key,
|
ret = wc_RsaFunction(out, (word32)sz, out, &key->dataLen, rsa_type, key,
|
||||||
rng);
|
rng);
|
||||||
|
|
||||||
if (ret >= 0 || ret == WC_PENDING_E) {
|
if (ret >= 0
|
||||||
|
#ifdef WC_ENABLE_ASYNC_RSA_INTERNAL
|
||||||
|
|| ret == WC_PENDING_E
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
key->state = RSA_STATE_ENCRYPT_RES;
|
key->state = RSA_STATE_ENCRYPT_RES;
|
||||||
}
|
}
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@@ -3480,7 +3491,11 @@ static int RsaPrivateDecryptEx(const byte* in, word32 inLen, byte* out,
|
|||||||
rng, pad_type != WC_RSA_OAEP_PAD);
|
rng, pad_type != WC_RSA_OAEP_PAD);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ret >= 0 || ret == WC_PENDING_E) {
|
if (ret >= 0
|
||||||
|
#ifdef WC_ENABLE_ASYNC_RSA_INTERNAL
|
||||||
|
|| ret == WC_PENDING_E
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
key->state = RSA_STATE_DECRYPT_UNPAD;
|
key->state = RSA_STATE_DECRYPT_UNPAD;
|
||||||
}
|
}
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@@ -4726,7 +4741,7 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WOLF_CRYPTO_CB_ONLY_RSA
|
#ifndef WOLF_CRYPTO_CB_ONLY_RSA
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_RSA) && \
|
#if defined(WC_ENABLE_ASYNC_RSA_INTERNAL) && \
|
||||||
defined(WC_ASYNC_ENABLE_RSA_KEYGEN)
|
defined(WC_ASYNC_ENABLE_RSA_KEYGEN)
|
||||||
if (key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_RSA) {
|
if (key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_RSA) {
|
||||||
#ifdef HAVE_CAVIUM
|
#ifdef HAVE_CAVIUM
|
||||||
@@ -4734,7 +4749,7 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
|||||||
#elif defined(HAVE_INTEL_QA)
|
#elif defined(HAVE_INTEL_QA)
|
||||||
err = IntelQaRsaKeyGen(&key->asyncDev, key, size, e, rng);
|
err = IntelQaRsaKeyGen(&key->asyncDev, key, size, e, rng);
|
||||||
goto out;
|
goto out;
|
||||||
#else
|
#elif defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_RSA_MAKE)) {
|
if (wc_AsyncSwInit(&key->asyncDev, ASYNC_SW_RSA_MAKE)) {
|
||||||
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
WC_ASYNC_SW* sw = &key->asyncDev.sw;
|
||||||
sw->rsaMake.rng = rng;
|
sw->rsaMake.rng = rng;
|
||||||
@@ -4744,6 +4759,8 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
|||||||
err = WC_PENDING_E;
|
err = WC_PENDING_E;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#error "Not implemented"
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -2473,6 +2473,7 @@ extern void uITRON4_free(void *p) ;
|
|||||||
/* Asynchronous Crypto */
|
/* Asynchronous Crypto */
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||||
#if !defined(HAVE_CAVIUM) && !defined(HAVE_INTEL_QA) && \
|
#if !defined(HAVE_CAVIUM) && !defined(HAVE_INTEL_QA) && \
|
||||||
|
!defined(WOLF_CRYPTO_CB) && !defined(HAVE_PK_CALLBACKS) && \
|
||||||
!defined(WOLFSSL_ASYNC_CRYPT_SW)
|
!defined(WOLFSSL_ASYNC_CRYPT_SW)
|
||||||
#error No async backend defined with WOLFSSL_ASYNC_CRYPT!
|
#error No async backend defined with WOLFSSL_ASYNC_CRYPT!
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user