mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-05 11:50:52 +02:00
Merge pull request #10563 from douzzer/20260528-pk-vector-regs
20260528-pk-vector-regs
This commit is contained in:
@@ -741,10 +741,10 @@ WOLFSSL_CONTIKI
|
||||
WOLFSSL_CRL_ALLOW_MISSING_CDP
|
||||
WOLFSSL_DISABLE_EARLY_SANITY_CHECKS
|
||||
WOLFSSL_DRBG_SHA256
|
||||
WOLFSSL_DTLS13_ECHO_LEGACY_SESSION_ID
|
||||
WOLFSSL_DTLS_DISALLOW_FUTURE
|
||||
WOLFSSL_DTLS_RECORDS_CAN_SPAN_DATAGRAMS
|
||||
WOLFSSL_DTLS_RESEND_ONLY_TIMEOUT
|
||||
WOLFSSL_DTLS13_ECHO_LEGACY_SESSION_ID
|
||||
WOLFSSL_DUMP_MEMIO_STREAM
|
||||
WOLFSSL_DUP_CERTPOL
|
||||
WOLFSSL_EARLY_DATA_NO_ANTI_REPLAY
|
||||
|
||||
+2
-2
@@ -1513,6 +1513,7 @@ then
|
||||
test "$enable_hkdf" = "" && enable_hkdf=yes
|
||||
test "$enable_eccencrypt" = "" && test "$enable_ecc" != "no" && enable_eccencrypt=yes
|
||||
test "$enable_fpecc" = "" && test "$enable_ecc" != "no" && enable_fpecc=yes
|
||||
test "$enable_eccsi" = "" && test "$enable_ecc" != "no" && enable_eccsi=yes
|
||||
test "$enable_psk" = "" && enable_psk=yes
|
||||
test "$enable_cmac" = "" && enable_cmac=yes
|
||||
test "$enable_cmac_kdf" = "" && enable_cmac_kdf=yes
|
||||
@@ -1580,13 +1581,12 @@ then
|
||||
test "$enable_aessiv" = "" && enable_aessiv=yes
|
||||
# AFALG lacks AES-EAX
|
||||
test "$enable_aeseax" = "" && test "$enable_afalg" != "yes" && enable_aeseax=yes
|
||||
test "$enable_sakke" = "" && test "$enable_ecc" != "no" && enable_sakke=yes
|
||||
|
||||
if test "$KERNEL_MODE_DEFAULTS" != "yes"
|
||||
then
|
||||
test "$enable_cryptocb" = "" && enable_cryptocb=yes
|
||||
test "$enable_pkcallbacks" = "" && enable_pkcallbacks=yes
|
||||
test "$enable_eccsi" = "" && test "$enable_ecc" != "no" && enable_eccsi=yes
|
||||
test "$enable_sakke" = "" && test "$enable_ecc" != "no" && enable_sakke=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
+15
-12
@@ -89,37 +89,40 @@
|
||||
#include <crypto/dh.h>
|
||||
|
||||
#define WOLFKM_DH_NAME ("dh")
|
||||
#define WOLFKM_DH_DRIVER ("dh" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
|
||||
#if defined(WOLFSSL_SP_X86_64_ASM) && !defined(NO_AVX2_SUPPORT)
|
||||
#define WOLFKM_DH_DRIVER_ISA_EXT "-avx2"
|
||||
#else
|
||||
#define WOLFKM_DH_DRIVER_ISA_EXT ""
|
||||
#endif
|
||||
#define WOLFKM_DH_DRIVER_SUFFIX WOLFKM_DH_DRIVER_ISA_EXT \
|
||||
WOLFKM_DRIVER_SUFFIX_BASE
|
||||
|
||||
#define WOLFKM_DH_DRIVER ("dh" WOLFKM_DH_DRIVER_SUFFIX)
|
||||
|
||||
#ifdef HAVE_FFDHE_2048
|
||||
#define WOLFKM_FFDHE2048_NAME ("ffdhe2048(dh)")
|
||||
#define WOLFKM_FFDHE2048_DRIVER ("ffdhe2048" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_FFDHE2048_DRIVER ("ffdhe2048" WOLFKM_DH_DRIVER_SUFFIX)
|
||||
#endif /* HAVE_FFDHE_2048 */
|
||||
|
||||
#ifdef HAVE_FFDHE_3072
|
||||
#define WOLFKM_FFDHE3072_NAME ("ffdhe3072(dh)")
|
||||
#define WOLFKM_FFDHE3072_DRIVER ("ffdhe3072" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_FFDHE3072_DRIVER ("ffdhe3072" WOLFKM_DH_DRIVER_SUFFIX)
|
||||
#endif /* HAVE_FFDHE_3072 */
|
||||
|
||||
#ifdef HAVE_FFDHE_4096
|
||||
#define WOLFKM_FFDHE4096_NAME ("ffdhe4096(dh)")
|
||||
#define WOLFKM_FFDHE4096_DRIVER ("ffdhe4096" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_FFDHE4096_DRIVER ("ffdhe4096" WOLFKM_DH_DRIVER_SUFFIX)
|
||||
#endif /* HAVE_FFDHE_4096 */
|
||||
|
||||
#ifdef HAVE_FFDHE_6144
|
||||
#define WOLFKM_FFDHE6144_NAME ("ffdhe6144(dh)")
|
||||
#define WOLFKM_FFDHE6144_DRIVER ("ffdhe6144" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_FFDHE6144_DRIVER ("ffdhe6144" WOLFKM_DH_DRIVER_SUFFIX)
|
||||
#endif /* HAVE_FFDHE_6144 */
|
||||
|
||||
#ifdef HAVE_FFDHE_8192
|
||||
#define WOLFKM_FFDHE8192_NAME ("ffdhe8192(dh)")
|
||||
#define WOLFKM_FFDHE8192_DRIVER ("ffdhe8192" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_FFDHE8192_DRIVER ("ffdhe8192" WOLFKM_DH_DRIVER_SUFFIX)
|
||||
#endif /* HAVE_FFDHE_8192 */
|
||||
|
||||
static int linuxkm_test_kpp_driver(const char * driver,
|
||||
|
||||
@@ -63,19 +63,24 @@
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
#include <crypto/ecdh.h>
|
||||
|
||||
#define WOLFKM_ECDH_DRIVER ("ecdh-wolfcrypt")
|
||||
#if defined(WOLFSSL_SP_X86_64_ASM) && !defined(NO_AVX2_SUPPORT)
|
||||
#define WOLFKM_ECDH_DRIVER_ISA_EXT "-avx2"
|
||||
#else
|
||||
#define WOLFKM_ECDH_DRIVER_ISA_EXT ""
|
||||
#endif
|
||||
#define WOLFKM_ECDH_DRIVER_SUFFIX WOLFKM_ECDH_DRIVER_ISA_EXT \
|
||||
WOLFKM_DRIVER_SUFFIX_BASE
|
||||
|
||||
#define WOLFKM_ECDH_DRIVER ("ecdh" WOLFKM_ECDH_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDH_P192_NAME ("ecdh-nist-p192")
|
||||
#define WOLFKM_ECDH_P192_DRIVER ("ecdh-nist-p192" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDH_P192_DRIVER ("ecdh-nist-p192" WOLFKM_ECDH_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDH_P256_NAME ("ecdh-nist-p256")
|
||||
#define WOLFKM_ECDH_P256_DRIVER ("ecdh-nist-p256" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDH_P256_DRIVER ("ecdh-nist-p256" WOLFKM_ECDH_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDH_P384_NAME ("ecdh-nist-p384")
|
||||
#define WOLFKM_ECDH_P384_DRIVER ("ecdh-nist-p384" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDH_P384_DRIVER ("ecdh-nist-p384" WOLFKM_ECDH_DRIVER_SUFFIX)
|
||||
|
||||
static int linuxkm_test_ecdh_nist_driver(const char * driver,
|
||||
const byte * b_pub,
|
||||
|
||||
@@ -82,23 +82,27 @@
|
||||
#include <wolfssl/wolfcrypt/asn.h>
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
|
||||
#define WOLFKM_ECDSA_DRIVER ("ecdsa-wolfcrypt")
|
||||
#if defined(WOLFSSL_SP_X86_64_ASM) && !defined(NO_AVX2_SUPPORT)
|
||||
#define WOLFKM_ECDSA_DRIVER_ISA_EXT "-avx2"
|
||||
#else
|
||||
#define WOLFKM_ECDSA_DRIVER_ISA_EXT ""
|
||||
#endif
|
||||
#define WOLFKM_ECDSA_DRIVER_SUFFIX WOLFKM_ECDSA_DRIVER_ISA_EXT \
|
||||
WOLFKM_DRIVER_SUFFIX_BASE
|
||||
|
||||
#define WOLFKM_ECDSA_DRIVER ("ecdsa" WOLFKM_ECDSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDSA_P192_NAME ("ecdsa-nist-p192")
|
||||
#define WOLFKM_ECDSA_P192_DRIVER ("ecdsa-nist-p192" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDSA_P192_DRIVER ("ecdsa-nist-p192" WOLFKM_ECDSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDSA_P256_NAME ("ecdsa-nist-p256")
|
||||
#define WOLFKM_ECDSA_P256_DRIVER ("ecdsa-nist-p256" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDSA_P256_DRIVER ("ecdsa-nist-p256" WOLFKM_ECDSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDSA_P384_NAME ("ecdsa-nist-p384")
|
||||
#define WOLFKM_ECDSA_P384_DRIVER ("ecdsa-nist-p384" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDSA_P384_DRIVER ("ecdsa-nist-p384" WOLFKM_ECDSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_ECDSA_P521_NAME ("ecdsa-nist-p521")
|
||||
#define WOLFKM_ECDSA_P521_DRIVER ("ecdsa-nist-p521" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt")
|
||||
#define WOLFKM_ECDSA_P521_DRIVER ("ecdsa-nist-p521" WOLFKM_ECDSA_DRIVER_SUFFIX)
|
||||
|
||||
|
||||
static int linuxkm_test_ecdsa_nist_driver(const char * driver,
|
||||
|
||||
+19
-18
@@ -99,45 +99,46 @@
|
||||
#include <wolfssl/wolfcrypt/rsa.h>
|
||||
|
||||
#define WOLFKM_RSA_NAME ("rsa")
|
||||
#define WOLFKM_RSA_DRIVER ("rsa" WOLFKM_DRIVER_FIPS "-wolfcrypt")
|
||||
|
||||
#if defined(WOLFSSL_SP_X86_64_ASM) && !defined(NO_AVX2_SUPPORT)
|
||||
#define WOLFKM_RSA_DRIVER_ISA_EXT "-avx2"
|
||||
#else
|
||||
#define WOLFKM_RSA_DRIVER_ISA_EXT ""
|
||||
#endif
|
||||
#define WOLFKM_RSA_DRIVER_SUFFIX WOLFKM_RSA_DRIVER_ISA_EXT \
|
||||
WOLFKM_DRIVER_SUFFIX_BASE
|
||||
|
||||
#define WOLFKM_RSA_DRIVER ("rsa" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#if defined(LINUXKM_AKCIPHER_NO_SIGNVERIFY)
|
||||
/* the akcipher alg */
|
||||
#define WOLFKM_PKCS1PAD_NAME ("pkcs1pad(rsa)")
|
||||
#define WOLFKM_PKCS1PAD_DRIVER ("pkcs1pad(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt)")
|
||||
#define WOLFKM_PKCS1PAD_NAME "pkcs1pad(rsa)"
|
||||
#define WOLFKM_PKCS1PAD_DRIVER "pkcs1pad-rsa" WOLFKM_RSA_DRIVER_SUFFIX
|
||||
#endif /* LINUXKM_AKCIPHER_NO_SIGNVERIFY */
|
||||
|
||||
/*
|
||||
* pkcs1 sign verify alg names
|
||||
* */
|
||||
#define WOLFKM_PKCS1_SHA224_NAME (PKCS1_NAME "(rsa,sha224)")
|
||||
#define WOLFKM_PKCS1_SHA224_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha224)")
|
||||
#define WOLFKM_PKCS1_SHA224_DRIVER ("pkcs1pad-rsa-sha224" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_PKCS1_SHA256_NAME (PKCS1_NAME "(rsa,sha256)")
|
||||
#define WOLFKM_PKCS1_SHA256_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha256)")
|
||||
#define WOLFKM_PKCS1_SHA256_DRIVER ("pkcs1pad-rsa-sha256" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_PKCS1_SHA384_NAME (PKCS1_NAME "(rsa,sha384)")
|
||||
#define WOLFKM_PKCS1_SHA384_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha384)")
|
||||
#define WOLFKM_PKCS1_SHA384_DRIVER ("pkcs1pad-rsa-sha384" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_PKCS1_SHA512_NAME (PKCS1_NAME "(rsa,sha512)")
|
||||
#define WOLFKM_PKCS1_SHA512_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha512)")
|
||||
#define WOLFKM_PKCS1_SHA512_DRIVER ("pkcs1pad-rsa-sha512" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_PKCS1_SHA3_256_NAME (PKCS1_NAME "(rsa,sha3-256)")
|
||||
#define WOLFKM_PKCS1_SHA3_256_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha3-256)")
|
||||
#define WOLFKM_PKCS1_SHA3_256_DRIVER ("pkcs1pad-rsa-sha3-256" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_PKCS1_SHA3_384_NAME (PKCS1_NAME "(rsa,sha3-384)")
|
||||
#define WOLFKM_PKCS1_SHA3_384_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha3-384)")
|
||||
#define WOLFKM_PKCS1_SHA3_384_DRIVER ("pkcs1pad-rsa-sha3-384" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#define WOLFKM_PKCS1_SHA3_512_NAME (PKCS1_NAME "(rsa,sha3-512)")
|
||||
#define WOLFKM_PKCS1_SHA3_512_DRIVER (PKCS1_NAME "(rsa" WOLFKM_DRIVER_FIPS \
|
||||
"-wolfcrypt,sha3-512)")
|
||||
#define WOLFKM_PKCS1_SHA3_512_DRIVER ("pkcs1pad-rsa-sha3-512" WOLFKM_RSA_DRIVER_SUFFIX)
|
||||
|
||||
#if defined(WOLFSSL_KEY_GEN)
|
||||
#if defined(LINUXKM_DIRECT_RSA)
|
||||
|
||||
@@ -91,6 +91,12 @@
|
||||
#ifdef HAVE_ECC
|
||||
#include <wolfssl/wolfcrypt/ecc.h>
|
||||
#endif
|
||||
#ifdef WOLFCRYPT_HAVE_ECCSI
|
||||
#include <wolfssl/wolfcrypt/eccsi.h>
|
||||
#endif
|
||||
#ifdef WOLFCRYPT_HAVE_SAKKE
|
||||
#include <wolfssl/wolfcrypt/sakke.h>
|
||||
#endif
|
||||
#ifdef HAVE_HPKE
|
||||
#include <wolfssl/wolfcrypt/hpke.h>
|
||||
#endif
|
||||
|
||||
+4
-44
@@ -57,14 +57,6 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
/*
|
||||
Possible DH enable options:
|
||||
* NO_RSA: Overall control of DH default: on (not defined)
|
||||
@@ -1425,8 +1417,6 @@ int wc_DhGeneratePublic(DhKey* key, byte* priv, word32 privSz,
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
ret = GeneratePublicDh(key, priv, privSz, pub, pubSz);
|
||||
|
||||
#if FIPS_VERSION_GE(5,0) || defined(WOLFSSL_VALIDATE_DH_KEYGEN)
|
||||
@@ -1436,8 +1426,6 @@ int wc_DhGeneratePublic(DhKey* key, byte* priv, word32 privSz,
|
||||
ret = _ffc_pairwise_consistency_test(key, pub, *pubSz, priv, privSz);
|
||||
#endif /* FIPS V5 or later || WOLFSSL_VALIDATE_DH_KEYGEN */
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1451,8 +1439,6 @@ static int wc_DhGenerateKeyPair_Sync(DhKey* key, WC_RNG* rng,
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
ret = GeneratePrivateDh(key, rng, priv, privSz);
|
||||
|
||||
if (ret == 0)
|
||||
@@ -1464,9 +1450,6 @@ static int wc_DhGenerateKeyPair_Sync(DhKey* key, WC_RNG* rng,
|
||||
ret = _ffc_pairwise_consistency_test(key, pub, *pubSz, priv, *privSz);
|
||||
#endif /* FIPS V5 or later || WOLFSSL_VALIDATE_DH_KEYGEN */
|
||||
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* !WOLFSSL_KCAPI_DH */
|
||||
@@ -1589,8 +1572,6 @@ static int _ffc_validate_public_key(DhKey* key, const byte* pub, word32 pubSz,
|
||||
return MP_INIT_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
if (mp_read_unsigned_bin(y, pub, pubSz) != MP_OKAY) {
|
||||
ret = MP_READ_E;
|
||||
}
|
||||
@@ -1679,8 +1660,6 @@ static int _ffc_validate_public_key(DhKey* key, const byte* pub, word32 pubSz,
|
||||
mp_clear(p);
|
||||
mp_clear(q);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
|
||||
XFREE(q, key->heap, DYNAMIC_TYPE_DH);
|
||||
XFREE(p, key->heap, DYNAMIC_TYPE_DH);
|
||||
@@ -1919,8 +1898,6 @@ static int _ffc_pairwise_consistency_test(DhKey* key,
|
||||
return MP_INIT_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
/* Load the private and public keys into big integers. */
|
||||
if (mp_read_unsigned_bin(publicKey, pub, pubSz) != MP_OKAY ||
|
||||
mp_read_unsigned_bin(privateKey, priv, privSz) != MP_OKAY) {
|
||||
@@ -1979,8 +1956,6 @@ static int _ffc_pairwise_consistency_test(DhKey* key,
|
||||
mp_clear(publicKey);
|
||||
mp_clear(checkKey);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
|
||||
XFREE(checkKey, key->heap, DYNAMIC_TYPE_DH);
|
||||
XFREE(privateKey, key->heap, DYNAMIC_TYPE_DH);
|
||||
@@ -2174,8 +2149,6 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
|
||||
ret = MP_INIT_E;
|
||||
|
||||
if (ret == 0) {
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
if (ret == 0 && mp_read_unsigned_bin(y, otherPub, pubSz) != MP_OKAY)
|
||||
ret = MP_READ_E;
|
||||
|
||||
@@ -2201,8 +2174,6 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
|
||||
}
|
||||
|
||||
mp_clear(y);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
}
|
||||
|
||||
/* make sure agree is > 1 (SP800-56A, 5.7.1.1) */
|
||||
@@ -2253,8 +2224,6 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
|
||||
}
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
if (mp_read_unsigned_bin(x, priv, privSz) != MP_OKAY)
|
||||
ret = MP_READ_E;
|
||||
#ifdef WOLFSSL_CHECK_MEM_ZERO
|
||||
@@ -2313,8 +2282,6 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
|
||||
mp_clear(y);
|
||||
mp_forcezero(x);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#else
|
||||
(void)ct;
|
||||
ret = WC_KEY_SIZE_E;
|
||||
@@ -2601,8 +2568,6 @@ static int _DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g,
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
if (ret == 0) {
|
||||
/* may have leading 0 */
|
||||
if (p[0] == 0) {
|
||||
@@ -2714,8 +2679,6 @@ static int _DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g,
|
||||
mp_clear(keyP);
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -3204,8 +3167,6 @@ int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh)
|
||||
}
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
if (ret == 0) {
|
||||
/* force magnitude */
|
||||
buf[0] |= 0xC0;
|
||||
@@ -3264,9 +3225,10 @@ int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh)
|
||||
if (ret != 0 || primeCheck == MP_YES)
|
||||
break;
|
||||
|
||||
/* linuxkm: release the kernel for a moment before iterating. */
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret; break;);
|
||||
ret = WC_CHECK_FOR_INTR_SIGNALS();
|
||||
if (ret != 0)
|
||||
break;
|
||||
WC_RELAX_LONG_LOOP();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3308,8 +3270,6 @@ int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh)
|
||||
mp_clear(&dh->g);
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#ifndef WOLFSSL_NO_MALLOC
|
||||
if (buf != NULL)
|
||||
#endif
|
||||
|
||||
+5
-16
@@ -36,14 +36,6 @@
|
||||
#include <wolfcrypt/src/misc.c>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/* disable for while(0) cases (MSVC bug) */
|
||||
#pragma warning(disable:4127)
|
||||
@@ -269,8 +261,6 @@ int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa)
|
||||
}
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(;);
|
||||
|
||||
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
|
||||
if ((tmpQ = (mp_int *)XMALLOC(sizeof(*tmpQ), dsa->heap,
|
||||
DYNAMIC_TYPE_TMP_BUFFER)) == NULL)
|
||||
@@ -338,8 +328,6 @@ int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa)
|
||||
mp_clear(tmpQ);
|
||||
#endif
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -454,6 +442,11 @@ int wc_MakeDsaParameters(WC_RNG *rng, int modulus_size, DsaKey *dsa)
|
||||
break;
|
||||
loop_check_prime++;
|
||||
}
|
||||
|
||||
err = WC_CHECK_FOR_INTR_SIGNALS();
|
||||
if (err != 0)
|
||||
break;
|
||||
WC_RELAX_LONG_LOOP();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -794,8 +787,6 @@ int wc_DsaSign_ex(const byte* digest, word32 digestSz, byte* out, DsaKey* key,
|
||||
return BAD_LENGTH_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
do {
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
k = (mp_int *)XMALLOC(sizeof *k, key->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
@@ -1040,8 +1031,6 @@ int wc_DsaSign_ex(const byte* digest, word32 digestSz, byte* out, DsaKey* key,
|
||||
}
|
||||
} while (0);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (k) {
|
||||
if ((ret != WC_NO_ERR_TRACE(MP_INIT_E)) &&
|
||||
|
||||
+5
-118
@@ -275,14 +275,6 @@ ECC Curve Sizes:
|
||||
#include <wolfssl/wolfcrypt/hmac.h>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
|
||||
!defined(WOLFSSL_MICROCHIP_TA100) && \
|
||||
!defined(WOLFSSL_CRYPTOCELL) && !defined(WOLFSSL_SILABS_SE_ACCEL) && \
|
||||
@@ -5150,8 +5142,6 @@ int wc_ecc_shared_secret_ex(ecc_key* private_key, ecc_point* point,
|
||||
return ECC_BAD_ARG_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
switch (private_key->state) {
|
||||
case ECC_STATE_NONE:
|
||||
case ECC_STATE_SHARED_SEC_GEN:
|
||||
@@ -5194,8 +5184,6 @@ int wc_ecc_shared_secret_ex(ecc_key* private_key, ecc_point* point,
|
||||
err = BAD_STATE_E;
|
||||
} /* switch */
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
/* if async pending then return and skip done cleanup below */
|
||||
if (err == WC_NO_ERR_TRACE(WC_PENDING_E)) {
|
||||
return err;
|
||||
@@ -5280,8 +5268,6 @@ int wc_ecc_point_is_on_curve(ecc_point *p, int curve_idx)
|
||||
return ECC_BAD_ARG_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
ALLOC_CURVE_SPECS(3, err);
|
||||
if (err == MP_OKAY) {
|
||||
err = wc_ecc_curve_load(wc_ecc_get_curve_params(curve_idx), &curve,
|
||||
@@ -5296,8 +5282,6 @@ int wc_ecc_point_is_on_curve(ecc_point *p, int curve_idx)
|
||||
wc_ecc_curve_free(curve);
|
||||
FREE_CURVE_SPECS();
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -5456,8 +5440,6 @@ static int ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curve,
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
#ifdef HAVE_ECC_MAKE_PUB
|
||||
/* if ecc_point passed in then use it as output for public key point */
|
||||
if (pubOut != NULL) {
|
||||
@@ -5603,8 +5585,6 @@ static int ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curve,
|
||||
key->type = ECC_PRIVATEKEY;
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -6107,8 +6087,6 @@ int wc_ecc_make_key_ex2(WC_RNG* rng, int keysize, ecc_key* key, int curve_id,
|
||||
{
|
||||
int err;
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
err = _ecc_make_key_ex(rng, keysize, key, curve_id, flags);
|
||||
|
||||
#if (FIPS_VERSION_GE(5,0) || defined(WOLFSSL_VALIDATE_ECC_KEYGEN)) && \
|
||||
@@ -6132,8 +6110,6 @@ int wc_ecc_make_key_ex2(WC_RNG* rng, int keysize, ecc_key* key, int curve_id,
|
||||
}
|
||||
#endif
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -7195,6 +7171,11 @@ static int ecc_sign_hash_sw(ecc_key* key, ecc_key* pubkey, WC_RNG* rng,
|
||||
mp_clear(pubkey->pubkey.z);
|
||||
#endif
|
||||
mp_forcezero(pubkey->k);
|
||||
|
||||
err = WC_CHECK_FOR_INTR_SIGNALS();
|
||||
if (err != 0)
|
||||
break;
|
||||
WC_RELAX_LONG_LOOP();
|
||||
}
|
||||
mp_forcezero(b);
|
||||
FREE_MP_INT_SIZE(b, key->heap, DYNAMIC_TYPE_ECC);
|
||||
@@ -7244,10 +7225,8 @@ static int ecc_sign_hash_sp(const byte* in, word32 inlen, WC_RNG* rng,
|
||||
#if !defined(WC_ECC_NONBLOCK) || (defined(WC_ECC_NONBLOCK) && !defined(WC_ECC_NONBLOCK_ONLY))
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_sign_256(in, inlen, rng, ecc_get_k(key), r, s,
|
||||
sign_k, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -7256,10 +7235,8 @@ static int ecc_sign_hash_sp(const byte* in, word32 inlen, WC_RNG* rng,
|
||||
#if defined(WOLFSSL_SM2) && defined(WOLFSSL_SP_SM2)
|
||||
if (ecc_sets[key->idx].id == ECC_SM2P256V1) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_sign_sm2_256(in, inlen, rng, ecc_get_k(key), r, s,
|
||||
sign_k, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -7284,10 +7261,8 @@ static int ecc_sign_hash_sp(const byte* in, word32 inlen, WC_RNG* rng,
|
||||
#if !defined(WC_ECC_NONBLOCK) || (defined(WC_ECC_NONBLOCK) && !defined(WC_ECC_NONBLOCK_ONLY))
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_sign_384(in, inlen, rng, ecc_get_k(key), r, s,
|
||||
sign_k, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -7314,10 +7289,8 @@ static int ecc_sign_hash_sp(const byte* in, word32 inlen, WC_RNG* rng,
|
||||
#if !defined(WC_ECC_NONBLOCK) || (defined(WC_ECC_NONBLOCK) && !defined(WC_ECC_NONBLOCK_ONLY))
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_sign_521(in, inlen, rng, ecc_get_k(key), r, s,
|
||||
sign_k, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -8938,10 +8911,8 @@ static int ecc_verify_hash_sp(mp_int *r, mp_int *s, const byte* hash,
|
||||
#if !defined(WC_ECC_NONBLOCK) || (defined(WC_ECC_NONBLOCK) && !defined(WC_ECC_NONBLOCK_ONLY))
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_verify_256(hash, hashlen, key->pubkey.x,
|
||||
key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -8982,10 +8953,8 @@ static int ecc_verify_hash_sp(mp_int *r, mp_int *s, const byte* hash,
|
||||
#if !defined(WC_ECC_NONBLOCK) || (defined(WC_ECC_NONBLOCK) && !defined(WC_ECC_NONBLOCK_ONLY))
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_verify_384(hash, hashlen, key->pubkey.x,
|
||||
key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -9011,10 +8980,8 @@ static int ecc_verify_hash_sp(mp_int *r, mp_int *s, const byte* hash,
|
||||
#if !defined(WC_ECC_NONBLOCK) || (defined(WC_ECC_NONBLOCK) && !defined(WC_ECC_NONBLOCK_ONLY))
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_verify_521(hash, hashlen, key->pubkey.x,
|
||||
key->pubkey.y, key->pubkey.z, r, s, res, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -9652,8 +9619,6 @@ int wc_ecc_import_point_der_ex(const byte* in, word32 inLen,
|
||||
if (err != MP_OKAY)
|
||||
return MEMORY_E;
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* check for point type (4, 2, or 3) */
|
||||
pointType = in[0];
|
||||
if (pointType != ECC_POINT_UNCOMP && pointType != ECC_POINT_COMP_EVEN &&
|
||||
@@ -9845,8 +9810,6 @@ int wc_ecc_import_point_der_ex(const byte* in, word32 inLen,
|
||||
mp_clear(point->z);
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -10197,8 +10160,6 @@ static int _ecc_is_point(ecc_point* ecp, mp_int* a, mp_int* b, mp_int* prime)
|
||||
return err;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
/* compute y^2 */
|
||||
if (err == MP_OKAY)
|
||||
err = mp_sqr(ecp->y, t1);
|
||||
@@ -10267,8 +10228,6 @@ static int _ecc_is_point(ecc_point* ecp, mp_int* a, mp_int* b, mp_int* prime)
|
||||
mp_clear(t1);
|
||||
mp_clear(t2);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
WC_FREE_VAR_EX(t2, NULL, DYNAMIC_TYPE_ECC);
|
||||
WC_FREE_VAR_EX(t1, NULL, DYNAMIC_TYPE_ECC);
|
||||
|
||||
@@ -10718,8 +10677,6 @@ static int _ecc_validate_public_key(ecc_key* key, int partial, int priv)
|
||||
DECLARE_CURVE_SPECS(4);
|
||||
#endif
|
||||
|
||||
ASSERT_SAVED_VECTOR_REGISTERS();
|
||||
|
||||
if (key == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
@@ -10871,9 +10828,7 @@ WOLFSSL_ABI
|
||||
int wc_ecc_check_key(ecc_key* key)
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = _ecc_validate_public_key(key, 0, 1);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -10938,8 +10893,6 @@ static int _ecc_import_x963_ex2(const byte* in, word32 inLen, ecc_key* key,
|
||||
mp_forcezero(key->kb);
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* check for point type (4, 2, or 3) */
|
||||
pointType = in[0];
|
||||
if (pointType != ECC_POINT_UNCOMP && pointType != ECC_POINT_COMP_EVEN &&
|
||||
@@ -11271,8 +11224,6 @@ static int _ecc_import_x963_ex2(const byte* in, word32 inLen, ecc_key* key,
|
||||
mp_forcezero(key->k);
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -11691,10 +11642,6 @@ static int _ecc_import_private_key_ex(const byte* priv, word32 privSz,
|
||||
}
|
||||
#else
|
||||
|
||||
#ifdef WOLFSSL_VALIDATE_ECC_IMPORT
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
|
||||
ret = mp_read_unsigned_bin(key->k, priv, privSz);
|
||||
#ifdef HAVE_WOLF_BIGINT
|
||||
if (ret == 0 && wc_bigint_from_unsigned_bin(&key->k->raw, priv,
|
||||
@@ -11745,10 +11692,6 @@ static int _ecc_import_private_key_ex(const byte* priv, word32 privSz,
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_VALIDATE_ECC_IMPORT
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_MAXQ10XX_CRYPTO
|
||||
if ((ret == 0) && (key->devId != INVALID_DEVID)) {
|
||||
ret = wc_MAXQ10XX_EccSetKey(key, key->dp->size);
|
||||
@@ -12137,10 +12080,6 @@ static int _ecc_import_raw_private(ecc_key* key, const char* qx,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_VALIDATE_ECC_IMPORT
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
|
||||
/* import private key */
|
||||
if (err == MP_OKAY) {
|
||||
if (d != NULL) {
|
||||
@@ -12234,10 +12173,6 @@ static int _ecc_import_raw_private(ecc_key* key, const char* qx,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_VALIDATE_ECC_IMPORT
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_MAXQ10XX_CRYPTO
|
||||
if (err == MP_OKAY) {
|
||||
err = wc_MAXQ10XX_EccSetKey(key, key->dp->size);
|
||||
@@ -13858,8 +13793,6 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
|
||||
}
|
||||
#endif /* HAVE_THREAD_LS */
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
/* find point */
|
||||
idx1 = find_base(A);
|
||||
|
||||
@@ -13942,8 +13875,6 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
|
||||
}
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#ifndef HAVE_THREAD_LS
|
||||
wc_UnLockMutex(&ecc_fp_lock);
|
||||
#endif /* HAVE_THREAD_LS */
|
||||
@@ -14011,8 +13942,6 @@ int wc_ecc_mulmod_ex(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
|
||||
got_ecc_fp_lock = 1;
|
||||
#endif /* HAVE_THREAD_LS */
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret; goto out;);
|
||||
|
||||
/* find point */
|
||||
idx = find_base(G);
|
||||
|
||||
@@ -14061,8 +13990,6 @@ int wc_ecc_mulmod_ex(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
|
||||
}
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
out:
|
||||
|
||||
#ifndef HAVE_THREAD_LS
|
||||
@@ -14088,36 +14015,28 @@ int wc_ecc_mulmod_ex(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
|
||||
#if defined(WOLFSSL_SM2) && defined(WOLFSSL_SP_SM2)
|
||||
if ((mp_count_bits(modulus) == 256) && (!mp_is_bit_set(modulus, 224))) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret);
|
||||
ret = sp_ecc_mulmod_sm2_256(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifndef WOLFSSL_SP_NO_256
|
||||
if (mp_count_bits(modulus) == 256) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_256(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifdef WOLFSSL_SP_384
|
||||
if (mp_count_bits(modulus) == 384) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_384(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifdef WOLFSSL_SP_521
|
||||
if (mp_count_bits(modulus) == 521) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_521(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -14182,8 +14101,6 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
|
||||
got_ecc_fp_lock = 1;
|
||||
#endif /* HAVE_THREAD_LS */
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret; goto out;);
|
||||
|
||||
/* find point */
|
||||
idx = find_base(G);
|
||||
|
||||
@@ -14232,8 +14149,6 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
|
||||
}
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
out:
|
||||
|
||||
#ifndef HAVE_THREAD_LS
|
||||
@@ -14262,36 +14177,28 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
|
||||
#if defined(WOLFSSL_SM2) && defined(WOLFSSL_SP_SM2)
|
||||
if ((mp_count_bits(modulus) == 256) && (!mp_is_bit_set(modulus, 224))) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_sm2_256(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifndef WOLFSSL_SP_NO_256
|
||||
if (mp_count_bits(modulus) == 256) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_256(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifdef WOLFSSL_SP_384
|
||||
if (mp_count_bits(modulus) == 384) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_384(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
#ifdef WOLFSSL_SP_521
|
||||
if (mp_count_bits(modulus) == 521) {
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = sp_ecc_mulmod_521(k, G, R, map, heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -14887,8 +14794,6 @@ int wc_ecc_encrypt_ex(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
}
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
#ifdef WOLFSSL_ECIES_ISO18033
|
||||
XMEMCPY(sharedSecret, out - pubKeySz, pubKeySz);
|
||||
sharedSz -= pubKeySz;
|
||||
@@ -15105,8 +15010,6 @@ int wc_ecc_encrypt_ex(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
#endif
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
ForceZero(sharedSecret, sharedSz);
|
||||
ForceZero(keys, (word32)keysLen);
|
||||
WC_FREE_VAR_EX(sharedSecret, ctx->heap, DYNAMIC_TYPE_ECC_BUFFER);
|
||||
@@ -15266,8 +15169,6 @@ int wc_ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
}
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
#ifndef WOLFSSL_ECIES_OLD
|
||||
if (pubKey == NULL) {
|
||||
WC_ALLOC_VAR_EX(peerKey, ecc_key, 1, ctx->heap,
|
||||
@@ -15501,8 +15402,6 @@ int wc_ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
if (ret == 0)
|
||||
*outSz = msgSz - digestSz;
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#ifndef WOLFSSL_ECIES_OLD
|
||||
if (pubKey == peerKey)
|
||||
wc_ecc_free(peerKey);
|
||||
@@ -15576,8 +15475,6 @@ static int mp_jacobi(mp_int* a, mp_int* n, int* c)
|
||||
return res;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
if ((res = mp_mod(a, n, a1)) != MP_OKAY) {
|
||||
goto done;
|
||||
}
|
||||
@@ -15635,8 +15532,6 @@ static int mp_jacobi(mp_int* a, mp_int* n, int* c)
|
||||
|
||||
done:
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
/* cleanup */
|
||||
mp_clear(n1);
|
||||
mp_clear(a1);
|
||||
@@ -15674,8 +15569,6 @@ static int mp_sqrtmod_prime(mp_int* n, mp_int* prime, mp_int* ret)
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
res = mp_init(&e);
|
||||
if (res == MP_OKAY)
|
||||
res = mp_mod_d(prime, 8, &i);
|
||||
@@ -15699,8 +15592,6 @@ static int mp_sqrtmod_prime(mp_int* n, mp_int* prime, mp_int* ret)
|
||||
|
||||
mp_clear(&e);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return res;
|
||||
#else
|
||||
int res, legendre, done = 0;
|
||||
@@ -15720,8 +15611,6 @@ static int mp_sqrtmod_prime(mp_int* n, mp_int* prime, mp_int* ret)
|
||||
mp_int t1[1], C[1], Q[1], S[1], Z[1], M[1], T[1], R[1], N[1], two[1];
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(res = _svr_ret; goto out;);
|
||||
|
||||
if ((mp_init_multi(t1, C, Q, S, Z, M) != MP_OKAY) ||
|
||||
(mp_init_multi(T, R, N, two, NULL, NULL) != MP_OKAY)) {
|
||||
res = MP_INIT_E;
|
||||
@@ -15933,8 +15822,6 @@ static int mp_sqrtmod_prime(mp_int* n, mp_int* prime, mp_int* ret)
|
||||
|
||||
out:
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (t1) {
|
||||
if (res != WC_NO_ERR_TRACE(MP_INIT_E))
|
||||
|
||||
@@ -36,14 +36,6 @@
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifndef WOLFSSL_HAVE_ECC_KEY_GET_PRIV
|
||||
/* FIPS build has replaced ecc.h. */
|
||||
#define wc_ecc_key_get_priv(key) (&((key)->k))
|
||||
@@ -1507,8 +1499,6 @@ int wc_ValidateEccsiPair(EccsiKey* key, enum wc_HashType hashType,
|
||||
if (err != 0)
|
||||
return err;
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
params = &key->params;
|
||||
hs = &key->tmp;
|
||||
res = &key->pubkey.pubkey;
|
||||
@@ -1563,8 +1553,6 @@ int wc_ValidateEccsiPair(EccsiKey* key, enum wc_HashType hashType,
|
||||
}
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -2231,8 +2219,6 @@ int wc_VerifyEccsiHash(EccsiKey* key, enum wc_HashType hashType,
|
||||
if (err != 0)
|
||||
return err;
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* Decode the signature into components. */
|
||||
r = wc_ecc_key_get_priv(&key->pubkey);
|
||||
pvt = &key->pubkey.pubkey;
|
||||
@@ -2318,8 +2304,6 @@ int wc_VerifyEccsiHash(EccsiKey* key, enum wc_HashType hashType,
|
||||
*verified = ((err == 0) && (mp_cmp(jx, r) == MP_EQ));
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFCRYPT_ECCSI_CLIENT */
|
||||
|
||||
+10
-55
@@ -60,14 +60,6 @@ RSA keys can be used to encrypt, decrypt, sign and verify data.
|
||||
#include <wolfssl/wolfcrypt/port/nxp/casper_port.h>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
/*
|
||||
* RSA Build Options:
|
||||
*
|
||||
@@ -868,8 +860,6 @@ int wc_CheckRsaKey(RsaKey* key)
|
||||
}
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
if (ret == 0) {
|
||||
if (INIT_MP_INT_SIZE(tmp, mp_bitsused(&key->n)) != MP_OKAY)
|
||||
ret = MP_INIT_E;
|
||||
@@ -982,8 +972,6 @@ int wc_CheckRsaKey(RsaKey* key)
|
||||
|
||||
mp_forcezero(tmp);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
if ((rng != NULL) && (rng != key->rng)) {
|
||||
wc_FreeRng(rng);
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
@@ -3571,7 +3559,6 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
|
||||
#ifdef WOLF_CRYPTO_CB_ONLY_RSA
|
||||
return NO_VALID_DEVID;
|
||||
#else /* !WOLF_CRYPTO_CB_ONLY_RSA */
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
#if !defined(WOLFSSL_RSA_VERIFY_ONLY) && !defined(TEST_UNPAD_CONSTANT_TIME) && \
|
||||
!defined(NO_RSA_BOUNDS_CHECK)
|
||||
@@ -3580,7 +3567,6 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
|
||||
|
||||
ret = RsaFunctionCheckIn(in, inLen, key, checkSmallCt);
|
||||
if (ret != 0) {
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -3592,7 +3578,6 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
|
||||
|
||||
ret = RsaFunctionCheckIn(in, inLen, key, checkSmallCt);
|
||||
if (ret != 0) {
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -3623,8 +3608,6 @@ static int wc_RsaFunction_ex(const byte* in, word32 inLen, byte* out,
|
||||
ret = wc_RsaFunctionSync(in, inLen, out, outLen, type, key, rng);
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
/* handle error */
|
||||
if (ret < 0 && ret != WC_NO_ERR_TRACE(WC_PENDING_E)
|
||||
#ifdef WC_RSA_NONBLOCK
|
||||
@@ -4172,11 +4155,9 @@ int wc_RsaPublicEncrypt(const byte* in, word32 inLen, byte* out, word32 outLen,
|
||||
RsaKey* key, WC_RNG* rng)
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPublicEncryptEx(in, inLen, out, outLen, key,
|
||||
RSA_PUBLIC_ENCRYPT, RSA_BLOCK_TYPE_2, WC_RSA_PKCSV15_PAD,
|
||||
WC_HASH_TYPE_NONE, WC_MGF1NONE, NULL, 0, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4188,10 +4169,8 @@ int wc_RsaPublicEncrypt_ex(const byte* in, word32 inLen, byte* out,
|
||||
word32 labelSz)
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPublicEncryptEx(in, inLen, out, outLen, key, RSA_PUBLIC_ENCRYPT,
|
||||
RSA_BLOCK_TYPE_2, type, hash, mgf, label, labelSz, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif /* WC_NO_RSA_OAEP */
|
||||
@@ -4211,11 +4190,9 @@ int wc_RsaPrivateDecryptInline(byte* in, word32 inLen, byte** out, RsaKey* key)
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, in, inLen, out, key,
|
||||
RSA_PRIVATE_DECRYPT, RSA_BLOCK_TYPE_2, WC_RSA_PKCSV15_PAD,
|
||||
WC_HASH_TYPE_NONE, WC_MGF1NONE, NULL, 0, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4235,11 +4212,9 @@ int wc_RsaPrivateDecryptInline_ex(byte* in, word32 inLen, byte** out,
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, in, inLen, out, key,
|
||||
RSA_PRIVATE_DECRYPT, RSA_BLOCK_TYPE_2, type, hash,
|
||||
mgf, label, labelSz, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif /* WC_NO_RSA_OAEP */
|
||||
@@ -4258,11 +4233,9 @@ int wc_RsaPrivateDecrypt(const byte* in, word32 inLen, byte* out,
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, out, outLen, NULL, key,
|
||||
RSA_PRIVATE_DECRYPT, RSA_BLOCK_TYPE_2, WC_RSA_PKCSV15_PAD,
|
||||
WC_HASH_TYPE_NONE, WC_MGF1NONE, NULL, 0, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4282,11 +4255,9 @@ int wc_RsaPrivateDecrypt_ex(const byte* in, word32 inLen, byte* out,
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, out, outLen, NULL, key,
|
||||
RSA_PRIVATE_DECRYPT, RSA_BLOCK_TYPE_2, type, hash, mgf, label,
|
||||
labelSz, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif /* WC_NO_RSA_OAEP || WC_RSA_NO_PADDING */
|
||||
@@ -4305,11 +4276,9 @@ int wc_RsaSSL_VerifyInline(byte* in, word32 inLen, byte** out, RsaKey* key)
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, in, inLen, out, key,
|
||||
RSA_PUBLIC_DECRYPT, RSA_BLOCK_TYPE_1, WC_RSA_PKCSV15_PAD,
|
||||
WC_HASH_TYPE_NONE, WC_MGF1NONE, NULL, 0, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -4325,10 +4294,8 @@ int wc_RsaSSL_Verify_ex(const byte* in, word32 inLen, byte* out, word32 outLen,
|
||||
RsaKey* key, int pad_type)
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = wc_RsaSSL_Verify_ex2(in, inLen, out, outLen, key, pad_type,
|
||||
WC_HASH_TYPE_NONE);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4348,7 +4315,6 @@ int wc_RsaSSL_Verify_ex2(const byte* in, word32 inLen, byte* out, word32 outLen
|
||||
rng = NULL;
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#ifndef WOLFSSL_PSS_SALT_LEN_DISCOVER
|
||||
ret = RsaPrivateDecryptEx(in, inLen, out, outLen, NULL, key,
|
||||
RSA_PUBLIC_DECRYPT, RSA_BLOCK_TYPE_1, pad_type,
|
||||
@@ -4358,7 +4324,6 @@ int wc_RsaSSL_Verify_ex2(const byte* in, word32 inLen, byte* out, word32 outLen
|
||||
RSA_PUBLIC_DECRYPT, RSA_BLOCK_TYPE_1, pad_type,
|
||||
hash, wc_hash2mgf(hash), NULL, 0, RSA_PSS_SALT_LEN_DISCOVER, rng);
|
||||
#endif
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -4416,11 +4381,9 @@ int wc_RsaPSS_VerifyInline_ex(byte* in, word32 inLen, byte** out,
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, in, inLen, out, key,
|
||||
RSA_PUBLIC_DECRYPT, RSA_BLOCK_TYPE_1, WC_RSA_PSS_PAD,
|
||||
hash, mgf, NULL, 0, saltLen, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4474,11 +4437,9 @@ int wc_RsaPSS_Verify_ex(const byte* in, word32 inLen, byte* out, word32 outLen,
|
||||
#else
|
||||
rng = NULL;
|
||||
#endif
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPrivateDecryptEx(in, inLen, out, outLen, NULL, key,
|
||||
RSA_PUBLIC_DECRYPT, RSA_BLOCK_TYPE_1, WC_RSA_PSS_PAD,
|
||||
hash, mgf, NULL, 0, saltLen, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4754,11 +4715,9 @@ int wc_RsaSSL_Sign(const byte* in, word32 inLen, byte* out, word32 outLen,
|
||||
RsaKey* key, WC_RNG* rng)
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPublicEncryptEx(in, inLen, out, outLen, key,
|
||||
RSA_PRIVATE_ENCRYPT, RSA_BLOCK_TYPE_1, WC_RSA_PKCSV15_PAD,
|
||||
WC_HASH_TYPE_NONE, WC_MGF1NONE, NULL, 0, 0, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4805,11 +4764,9 @@ int wc_RsaPSS_Sign_ex(const byte* in, word32 inLen, byte* out, word32 outLen,
|
||||
WC_RNG* rng)
|
||||
{
|
||||
int ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = RsaPublicEncryptEx(in, inLen, out, outLen, key,
|
||||
RSA_PRIVATE_ENCRYPT, RSA_BLOCK_TYPE_1, WC_RSA_PSS_PAD,
|
||||
hash, mgf, NULL, 0, saltLen, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -5350,12 +5307,8 @@ int wc_CheckProbablePrime_ex(const byte* pRaw, word32 pRawSz,
|
||||
if (ret == MP_OKAY)
|
||||
ret = mp_read_unsigned_bin(e, eRaw, eRawSz);
|
||||
|
||||
if (ret == MP_OKAY)
|
||||
SAVE_VECTOR_REGISTERS(ret = _svr_ret;);
|
||||
|
||||
if (ret == 0) {
|
||||
ret = _CheckProbablePrime(p, Q, e, nlen, isPrime, rng);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
}
|
||||
|
||||
ret = (ret == MP_OKAY) ? 0 : PRIME_GEN_E;
|
||||
@@ -5549,8 +5502,6 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
||||
}
|
||||
#endif
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
/* make p */
|
||||
if (err == MP_OKAY) {
|
||||
#ifdef WOLFSSL_CHECK_MEM_ZERO
|
||||
@@ -5591,9 +5542,10 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
||||
if (err != MP_OKAY || isPrime || i >= failCount)
|
||||
break;
|
||||
|
||||
/* linuxkm: release the kernel for a moment before iterating. */
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret; break;);
|
||||
err = WC_CHECK_FOR_INTR_SIGNALS();
|
||||
if (err != 0)
|
||||
break;
|
||||
WC_RELAX_LONG_LOOP();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5644,6 +5596,12 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
||||
/* Keep the old retry behavior in non-FIPS build. */
|
||||
(void)i;
|
||||
#endif
|
||||
|
||||
err = WC_CHECK_FOR_INTR_SIGNALS();
|
||||
if (err != 0)
|
||||
break;
|
||||
WC_RELAX_LONG_LOOP();
|
||||
|
||||
} while (err == MP_OKAY && !isPrime && i < failCount);
|
||||
}
|
||||
|
||||
@@ -5769,9 +5727,6 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (err != WC_NO_ERR_TRACE(WC_ACCEL_INHIBIT_E))
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
/* Last value p - 1. */
|
||||
mp_forcezero(tmp1);
|
||||
/* Last value q - 1. */
|
||||
|
||||
+19
-29
@@ -37,14 +37,6 @@
|
||||
#include <wolfssl/wolfcrypt/sakke.h>
|
||||
#include <wolfssl/wolfcrypt/asn_public.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifndef WOLFSSL_HAVE_ECC_KEY_GET_PRIV
|
||||
/* FIPS build has replaced ecc.h. */
|
||||
#define wc_ecc_key_get_priv(key) (&((key)->k))
|
||||
@@ -1328,13 +1320,11 @@ int wc_GenerateSakkeRskTable(const SakkeKey* key, const ecc_point* rsk,
|
||||
err = BAD_FUNC_ARG;
|
||||
}
|
||||
if (err == 0) {
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#ifdef WOLFSSL_SP_1024
|
||||
err = sp_Pairing_gen_precomp_1024(rsk, table, len);
|
||||
#else
|
||||
err = NOT_COMPILED_IN;
|
||||
#endif
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
}
|
||||
|
||||
return err;
|
||||
@@ -2441,8 +2431,6 @@ int wc_ValidateSakkeRsk(SakkeKey* key, const byte* id, word16 idSz,
|
||||
err = BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* Load elliptic curve parameters */
|
||||
if (err == 0) {
|
||||
err = sakke_load_params(key);
|
||||
@@ -2478,8 +2466,6 @@ int wc_ValidateSakkeRsk(SakkeKey* key, const byte* id, word16 idSz,
|
||||
*valid = ((err == 0) && (mp_cmp(a, &key->params.g) == MP_EQ));
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -2622,6 +2608,22 @@ static int sakke_modexp_loop(SakkeKey* key, mp_int* b, mp_int* e, mp_proj* r,
|
||||
mp_int* by = key->tmp.p1->z;
|
||||
mp_int* prime = &key->params.prime;
|
||||
int i;
|
||||
#ifdef WC_NO_GLOBAL_OBJECT_POINTERS
|
||||
static const wc_ptr_t wc_off_on_addr[2] =
|
||||
{
|
||||
#if defined(WC_64BIT_CPU)
|
||||
W64LIT(0x0000000000000000),
|
||||
W64LIT(0xffffffffffffffff)
|
||||
#elif defined(WC_16BIT_CPU)
|
||||
0x0000U,
|
||||
0xffffU
|
||||
#else
|
||||
/* 32 bit */
|
||||
0x00000000U,
|
||||
0xffffffffU
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef WC_NO_CACHE_RESISTANT
|
||||
c[0] = r;
|
||||
@@ -6387,8 +6389,6 @@ int wc_MakeSakkePointI(SakkeKey* key, const byte* id, word16 idSz)
|
||||
err = BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
if (err == 0) {
|
||||
err = sakke_load_params(key);
|
||||
}
|
||||
@@ -6401,8 +6401,6 @@ int wc_MakeSakkePointI(SakkeKey* key, const byte* id, word16 idSz)
|
||||
key->i.idSz = idSz;
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -6532,9 +6530,7 @@ int wc_GenerateSakkePointITable(SakkeKey* key, byte* table, word32* len)
|
||||
|
||||
#ifdef WOLFSSL_HAVE_SP_ECC
|
||||
if (err == 0) {
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
err = sp_ecc_gen_table_1024(key->i.i, table, len, key->heap);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
}
|
||||
if (err == 0) {
|
||||
key->i.table = table;
|
||||
@@ -6722,8 +6718,6 @@ int wc_MakeSakkeEncapsulatedSSV(SakkeKey* key, enum wc_HashType hashType,
|
||||
err = BAD_STATE_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* Load parameters */
|
||||
if (err == 0) {
|
||||
err = sakke_load_params(key);
|
||||
@@ -6799,8 +6793,6 @@ int wc_MakeSakkeEncapsulatedSSV(SakkeKey* key, enum wc_HashType hashType,
|
||||
|
||||
/* Step 6: Output SSV - already encoded in buffer */
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -6898,7 +6890,9 @@ int wc_DeriveSakkeSSV(SakkeKey* key, enum wc_HashType hashType, byte* ssv,
|
||||
mp_int* ri = NULL;
|
||||
byte* wb = NULL;
|
||||
byte* test = NULL;
|
||||
byte a[WC_MAX_DIGEST_SIZE] = {0};
|
||||
byte a[WC_MAX_DIGEST_SIZE];
|
||||
|
||||
XMEMSET(a, 0, sizeof(a));
|
||||
|
||||
if ((key == NULL) || (ssv == NULL) || (auth == NULL) || (ssvSz == 0)) {
|
||||
err = BAD_FUNC_ARG;
|
||||
@@ -6907,8 +6901,6 @@ int wc_DeriveSakkeSSV(SakkeKey* key, enum wc_HashType hashType, byte* ssv,
|
||||
err = BAD_STATE_E;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* Load parameters */
|
||||
if (err == 0) {
|
||||
err = sakke_load_params(key);
|
||||
@@ -6979,8 +6971,6 @@ int wc_DeriveSakkeSSV(SakkeKey* key, enum wc_HashType hashType, byte* ssv,
|
||||
err = SAKKE_VERIFY_FAIL_E;
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFCRYPT_SAKKE_CLIENT */
|
||||
|
||||
@@ -47,6 +47,17 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) && \
|
||||
!defined(DEBUG_VECTOR_REGISTER_ACCESS)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef SAVE_VECTOR_REGISTERS2
|
||||
#define SAVE_VECTOR_REGISTERS2() SAVE_NO_VECTOR_REGISTERS2()
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
#define __volatile__ volatile
|
||||
@@ -125606,8 +125617,6 @@ static WC_INLINE int sp_521_div_17(const sp_digit* a, const sp_digit* d,
|
||||
sp_digit r1;
|
||||
int i;
|
||||
|
||||
ASSERT_SAVED_VECTOR_REGISTERS();
|
||||
|
||||
(void)m;
|
||||
div = (d[16] << 23) | (d[15] >> 9);
|
||||
XMEMCPY(t1, a, sizeof(*t1) * 2 * 17);
|
||||
|
||||
@@ -47,6 +47,17 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) && \
|
||||
!defined(DEBUG_VECTOR_REGISTER_ACCESS)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef SAVE_VECTOR_REGISTERS2
|
||||
#define SAVE_VECTOR_REGISTERS2() SAVE_NO_VECTOR_REGISTERS2()
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
#define __volatile__ volatile
|
||||
@@ -69631,8 +69642,6 @@ static WC_INLINE int sp_521_div_9(const sp_digit* a, const sp_digit* d,
|
||||
sp_digit r1;
|
||||
int i;
|
||||
|
||||
ASSERT_SAVED_VECTOR_REGISTERS();
|
||||
|
||||
(void)m;
|
||||
div = (d[8] << 55) | (d[7] >> 9);
|
||||
XMEMCPY(t1, a, sizeof(*t1) * 2 * 9);
|
||||
|
||||
@@ -47,6 +47,17 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) && \
|
||||
!defined(DEBUG_VECTOR_REGISTER_ACCESS)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef SAVE_VECTOR_REGISTERS2
|
||||
#define SAVE_VECTOR_REGISTERS2() SAVE_NO_VECTOR_REGISTERS2()
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
#define __volatile__ volatile
|
||||
@@ -131069,8 +131080,6 @@ static WC_INLINE int sp_521_div_17(const sp_digit* a, const sp_digit* d,
|
||||
sp_digit r1;
|
||||
int i;
|
||||
|
||||
ASSERT_SAVED_VECTOR_REGISTERS();
|
||||
|
||||
(void)m;
|
||||
div = (d[16] << 23) | (d[15] >> 9);
|
||||
XMEMCPY(t1, a, sizeof(*t1) * 2 * 17);
|
||||
|
||||
@@ -51,6 +51,17 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) && \
|
||||
!defined(DEBUG_VECTOR_REGISTER_ACCESS)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef SAVE_VECTOR_REGISTERS2
|
||||
#define SAVE_VECTOR_REGISTERS2() SAVE_NO_VECTOR_REGISTERS2()
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
#define __volatile__ volatile
|
||||
|
||||
@@ -51,6 +51,17 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) && \
|
||||
!defined(DEBUG_VECTOR_REGISTER_ACCESS)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef SAVE_VECTOR_REGISTERS2
|
||||
#define SAVE_VECTOR_REGISTERS2() SAVE_NO_VECTOR_REGISTERS2()
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
#define __volatile__ volatile
|
||||
|
||||
@@ -47,6 +47,17 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) && \
|
||||
!defined(DEBUG_VECTOR_REGISTER_ACCESS)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef SAVE_VECTOR_REGISTERS2
|
||||
#define SAVE_VECTOR_REGISTERS2() SAVE_NO_VECTOR_REGISTERS2()
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
#define __asm__ asm
|
||||
#define __volatile__ volatile
|
||||
@@ -64063,8 +64074,6 @@ static WC_INLINE int sp_521_div_17(const sp_digit* a, const sp_digit* d,
|
||||
sp_digit r1;
|
||||
int i;
|
||||
|
||||
ASSERT_SAVED_VECTOR_REGISTERS();
|
||||
|
||||
(void)m;
|
||||
div = (d[16] << 23) | (d[15] >> 9);
|
||||
XMEMCPY(t1, a, sizeof(*t1) * 2 * 17);
|
||||
|
||||
+16
-29
@@ -125,8 +125,6 @@ This library provides single precision (SP) integer math functions.
|
||||
* WOLFSSL_NO_ASM: Disable all assembly implementations
|
||||
* WOLFSSL_KEIL: Keil compiler in use, affects inline assembly
|
||||
* syntax
|
||||
* WOLFSSL_USE_SAVE_VECTOR_REGISTERS: Save/restore vector registers around
|
||||
* SP ASM calls
|
||||
* WOLFSSL_SP_INT_LARGE_COMBA: Enable large Comba multiplication and
|
||||
* squaring
|
||||
* WOLFSSL_SP_INT_SQR_VOLATILE: Declare squaring intermediate variables as
|
||||
@@ -198,15 +196,6 @@ This library provides single precision (SP) integer math functions.
|
||||
PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"")
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) \
|
||||
SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
/* DECL_SP_INT: Declare one variable of type 'sp_int'. */
|
||||
#if (defined(WOLFSSL_SMALL_STACK) || defined(SP_ALLOC)) && \
|
||||
!defined(WOLFSSL_SP_NO_MALLOC)
|
||||
@@ -5487,6 +5476,22 @@ static void _sp_copy_2_ct(const sp_int* a1, const sp_int* a2, sp_int* r1,
|
||||
sp_int* r2, int y, unsigned int used)
|
||||
{
|
||||
unsigned int i;
|
||||
#ifdef WC_NO_GLOBAL_OBJECT_POINTERS
|
||||
static const wc_ptr_t wc_off_on_addr[2] =
|
||||
{
|
||||
#if defined(WC_64BIT_CPU)
|
||||
W64LIT(0x0000000000000000),
|
||||
W64LIT(0xffffffffffffffff)
|
||||
#elif defined(WC_16BIT_CPU)
|
||||
0x0000U,
|
||||
0xffffU
|
||||
#else
|
||||
/* 32 bit */
|
||||
0x00000000U,
|
||||
0xffffffffU
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Copy data - constant time. */
|
||||
for (i = 0; i < used; i++) {
|
||||
@@ -14329,11 +14334,9 @@ int sp_exptmod(const sp_int* b, const sp_int* e, const sp_int* m, sp_int* r)
|
||||
if ((b == NULL) || (e == NULL) || (m == NULL) || (r == NULL)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
if (err == MP_OKAY) {
|
||||
err = sp_exptmod_ex(b, e, (int)e->used, m, r);
|
||||
}
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
@@ -19554,8 +19557,6 @@ int sp_prime_is_prime(const sp_int* a, int trials, int* result)
|
||||
haveRes = 1;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
/* Check against known small primes when a has 1 digit. */
|
||||
if ((err == MP_OKAY) && (!haveRes) && (a->used == 1) &&
|
||||
(a->dp[0] <= sp_primes[SP_PRIME_SIZE - 1])) {
|
||||
@@ -19572,8 +19573,6 @@ int sp_prime_is_prime(const sp_int* a, int trials, int* result)
|
||||
err = _sp_prime_trials(a, trials, result);
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -19714,8 +19713,6 @@ int sp_prime_is_prime_ex(const sp_int* a, int trials, int* result, WC_RNG* rng)
|
||||
haveRes = 1;
|
||||
}
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
/* Check against known small primes when a has 1 digit. */
|
||||
if ((err == MP_OKAY) && (!haveRes) && (a->used == 1) &&
|
||||
(a->dp[0] <= (sp_int_digit)sp_primes[SP_PRIME_SIZE - 1])) {
|
||||
@@ -19740,8 +19737,6 @@ int sp_prime_is_prime_ex(const sp_int* a, int trials, int* result, WC_RNG* rng)
|
||||
*result = ret;
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_SP_PRIME_GEN */
|
||||
@@ -19783,8 +19778,6 @@ static WC_INLINE int _sp_gcd(const sp_int* a, const sp_int* b, sp_int* r)
|
||||
unsigned int used = (a->used >= b->used) ? a->used + 1U : b->used + 1U;
|
||||
DECL_SP_INT_ARRAY(d, used, 3);
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
ALLOC_SP_INT_ARRAY(d, used, 3, err, NULL);
|
||||
if (err == MP_OKAY) {
|
||||
u = d[0];
|
||||
@@ -19849,8 +19842,6 @@ static WC_INLINE int _sp_gcd(const sp_int* a, const sp_int* b, sp_int* r)
|
||||
|
||||
FREE_SP_INT_ARRAY(d, NULL);
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -19955,8 +19946,6 @@ static int _sp_lcm(const sp_int* a, const sp_int* b, sp_int* r)
|
||||
_sp_init_size(t[0], used);
|
||||
_sp_init_size(t[1], used);
|
||||
|
||||
SAVE_VECTOR_REGISTERS(err = _svr_ret;);
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
/* 1. t0 = gcd(a, b) */
|
||||
err = sp_gcd(a, b, t[0]);
|
||||
@@ -19985,8 +19974,6 @@ static int _sp_lcm(const sp_int* a, const sp_int* b, sp_int* r)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
}
|
||||
|
||||
FREE_SP_INT_ARRAY(t, NULL);
|
||||
|
||||
+416
-431
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -43,12 +43,13 @@
|
||||
|
||||
#if !defined(NO_BIG_INT) || defined(WOLFSSL_SP_MATH)
|
||||
|
||||
#if (!defined(WC_NO_CACHE_RESISTANT) && \
|
||||
((defined(HAVE_ECC) && defined(ECC_TIMING_RESISTANT)) || \
|
||||
(defined(USE_FAST_MATH) && defined(TFM_TIMING_RESISTANT)))) || \
|
||||
((defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY)) || !defined(NO_DH) || \
|
||||
defined(OPENSSL_ALL) && defined(WC_PROTECT_ENCRYPTED_MEM))
|
||||
#if !defined(WC_NO_GLOBAL_OBJECT_POINTERS) && \
|
||||
((!defined(WC_NO_CACHE_RESISTANT) && \
|
||||
((defined(HAVE_ECC) && defined(ECC_TIMING_RESISTANT)) || \
|
||||
(defined(USE_FAST_MATH) && defined(TFM_TIMING_RESISTANT)))) || \
|
||||
((defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY)) || !defined(NO_DH) || \
|
||||
defined(OPENSSL_ALL) && defined(WC_PROTECT_ENCRYPTED_MEM)))
|
||||
|
||||
/* all off / all on pointer addresses for constant calculations */
|
||||
/* ecc.c uses same table */
|
||||
|
||||
+32
-67
@@ -60460,38 +60460,25 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t eccsi_test(void)
|
||||
wc_test_ret_t ret = 0;
|
||||
WC_RNG rng;
|
||||
int rng_inited = 0;
|
||||
EccsiKey* priv = NULL;
|
||||
EccsiKey* pub = NULL;
|
||||
mp_int* ssk = NULL;
|
||||
WC_DECLARE_VAR(priv, EccsiKey, 1, HEAP_HINT);
|
||||
WC_DECLARE_VAR(pub, EccsiKey, 1, HEAP_HINT);
|
||||
WC_DECLARE_VAR(ssk, mp_int, 1, HEAP_HINT);
|
||||
ecc_point* pvt = NULL;
|
||||
WOLFSSL_ENTER("eccsi_test");
|
||||
|
||||
priv = (EccsiKey*)XMALLOC(sizeof(EccsiKey), HEAP_HINT,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (priv == NULL)
|
||||
ret = WC_TEST_RET_ENC_NC;
|
||||
else
|
||||
WC_ALLOC_VAR_EX(priv, EccsiKey, 1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER, ret = WC_TEST_RET_ENC_EC(MEMORY_E));
|
||||
if (ret == 0) {
|
||||
XMEMSET(priv, 0, sizeof(*priv));
|
||||
|
||||
WC_ALLOC_VAR_EX(pub, EccsiKey, 1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER, ret = WC_TEST_RET_ENC_EC(MEMORY_E));
|
||||
}
|
||||
if (ret == 0) {
|
||||
pub = (EccsiKey*)XMALLOC(sizeof(EccsiKey), HEAP_HINT,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (pub == NULL)
|
||||
ret = WC_TEST_RET_ENC_NC;
|
||||
else
|
||||
XMEMSET(pub, 0, sizeof(*pub));
|
||||
XMEMSET(pub, 0, sizeof(*pub));
|
||||
WC_ALLOC_VAR_EX(ssk, mp_int, 1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER, ret = WC_TEST_RET_ENC_EC(MEMORY_E));
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
ssk = (mp_int*)XMALLOC(sizeof(mp_int), HEAP_HINT,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (ssk == NULL)
|
||||
ret = WC_TEST_RET_ENC_NC;
|
||||
else
|
||||
XMEMSET(ssk, 0, sizeof(*ssk));
|
||||
}
|
||||
XMEMSET(ssk, 0, sizeof(*ssk));
|
||||
|
||||
if (ret == 0) {
|
||||
#ifndef HAVE_FIPS
|
||||
ret = wc_InitRng_ex(&rng, HEAP_HINT, devId);
|
||||
#else
|
||||
@@ -60547,18 +60534,12 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t eccsi_test(void)
|
||||
wc_ecc_del_point(pvt);
|
||||
if (rng_inited)
|
||||
wc_FreeRng(&rng);
|
||||
if (ssk != NULL) {
|
||||
mp_free(ssk);
|
||||
XFREE(ssk, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
if (pub != NULL) {
|
||||
wc_FreeEccsiKey(pub);
|
||||
XFREE(pub, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
if (priv != NULL) {
|
||||
wc_FreeEccsiKey(priv);
|
||||
XFREE(priv, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
mp_free(ssk);
|
||||
WC_FREE_VAR_EX(ssk, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
wc_FreeEccsiKey(pub);
|
||||
WC_FREE_VAR_EX(pub, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
wc_FreeEccsiKey(priv);
|
||||
WC_FREE_VAR_EX(priv, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -61704,38 +61685,25 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sakke_test(void)
|
||||
wc_test_ret_t ret = 0;
|
||||
WC_RNG rng;
|
||||
int rng_inited = 0;
|
||||
SakkeKey* priv = NULL;
|
||||
SakkeKey* pub = NULL;
|
||||
SakkeKey* key = NULL;
|
||||
WC_DECLARE_VAR(priv, SakkeKey, 1, HEAP_HINT);
|
||||
WC_DECLARE_VAR(pub, SakkeKey, 1, HEAP_HINT);
|
||||
WC_DECLARE_VAR(key, SakkeKey, 1, HEAP_HINT);
|
||||
ecc_point* rsk = NULL;
|
||||
WOLFSSL_ENTER("sakke_test");
|
||||
|
||||
priv = (SakkeKey*)XMALLOC(sizeof(SakkeKey), HEAP_HINT,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (priv == NULL)
|
||||
ret = WC_TEST_RET_ENC_NC;
|
||||
else
|
||||
WC_ALLOC_VAR_EX(priv, SakkeKey, 1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER, ret = WC_TEST_RET_ENC_EC(MEMORY_E));
|
||||
if (ret == 0) {
|
||||
XMEMSET(priv, 0, sizeof(*priv));
|
||||
|
||||
WC_ALLOC_VAR_EX(pub, SakkeKey, 1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER, ret = WC_TEST_RET_ENC_EC(MEMORY_E));
|
||||
}
|
||||
if (ret == 0) {
|
||||
pub = (SakkeKey*)XMALLOC(sizeof(SakkeKey), HEAP_HINT,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (pub == NULL)
|
||||
ret = WC_TEST_RET_ENC_NC;
|
||||
else
|
||||
XMEMSET(pub, 0, sizeof(*pub));
|
||||
XMEMSET(pub, 0, sizeof(*pub));
|
||||
WC_ALLOC_VAR_EX(key, SakkeKey, 1, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER, ret = WC_TEST_RET_ENC_EC(MEMORY_E));
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
key = (SakkeKey*)XMALLOC(sizeof(SakkeKey), HEAP_HINT,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (key == NULL)
|
||||
ret = WC_TEST_RET_ENC_NC;
|
||||
else
|
||||
XMEMSET(key, 0, sizeof(*key));
|
||||
}
|
||||
XMEMSET(key, 0, sizeof(*key));
|
||||
|
||||
if (ret == 0) {
|
||||
#ifndef HAVE_FIPS
|
||||
ret = wc_InitRng_ex(&rng, HEAP_HINT, devId);
|
||||
#else
|
||||
@@ -61791,15 +61759,12 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sakke_test(void)
|
||||
}
|
||||
if (rng_inited)
|
||||
wc_FreeRng(&rng);
|
||||
XFREE(key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (pub != NULL) {
|
||||
wc_FreeSakkeKey(pub);
|
||||
XFREE(pub, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
if (priv != NULL) {
|
||||
wc_FreeSakkeKey(priv);
|
||||
XFREE(priv, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
|
||||
WC_FREE_VAR_EX(key, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
wc_FreeSakkeKey(pub);
|
||||
WC_FREE_VAR_EX(pub, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
wc_FreeSakkeKey(priv);
|
||||
WC_FREE_VAR_EX(priv, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -356,10 +356,13 @@ WOLFSSL_API void wc_ErrorString(int err, char* buff);
|
||||
WOLFSSL_ABI WOLFSSL_API const char* wc_GetErrorString(int error);
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
|
||||
WOLFSSL_API extern int wc_backtrace_render(void);
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_DEBUG_TRACE_ERROR_CODES) && \
|
||||
(defined(BUILDING_WOLFSSL) || \
|
||||
defined(WOLFSSL_DEBUG_TRACE_ERROR_CODES_ALWAYS))
|
||||
WOLFSSL_API extern int wc_backtrace_render(void);
|
||||
#define WC_NO_ERR_TRACE(label) (CONST_NUM_ERR_ ## label)
|
||||
#ifndef WOLFSSL_DEBUG_BACKTRACE_RENDER_CLAUSE
|
||||
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
|
||||
|
||||
@@ -579,12 +579,13 @@ WOLFSSL_API void wolfSSL_SetLoggingPrefix(const char* prefix);
|
||||
#error "Failed: Cannot WOLFSSL_DEBUG_CERTS with WOLFSSL_DEBUG_ERRORS_ONLY"
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES) && defined(XFILE)
|
||||
WOLFSSL_API XFILE wc_backtrace_set_fp(XFILE new_fp);
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_DEBUG_TRACE_ERROR_CODES
|
||||
WOLFSSL_API int wc_debug_trace_error_codes_enabled(void);
|
||||
WOLFSSL_API int wc_debug_trace_error_codes_set(int state);
|
||||
#ifdef XFILE
|
||||
WOLFSSL_API XFILE wc_backtrace_set_fp(XFILE new_fp);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
+26
-16
@@ -370,6 +370,8 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
#define DEBUG_VECTOR_REGISTERS_EXTRA_FAIL_CLAUSE abort();
|
||||
#elif defined(DEBUG_VECTOR_REGISTERS_EXIT_ON_FAIL)
|
||||
#define DEBUG_VECTOR_REGISTERS_EXTRA_FAIL_CLAUSE exit(1);
|
||||
#elif defined(DEBUG_VECTOR_REGISTERS_BACKTRACE_ON_FAIL)
|
||||
#define DEBUG_VECTOR_REGISTERS_EXTRA_FAIL_CLAUSE wc_backtrace_render();
|
||||
#elif !defined(DEBUG_VECTOR_REGISTERS_EXTRA_FAIL_CLAUSE)
|
||||
#define DEBUG_VECTOR_REGISTERS_EXTRA_FAIL_CLAUSE
|
||||
#endif
|
||||
@@ -381,8 +383,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
++wc_svr_count; \
|
||||
if (wc_svr_count > 5) { \
|
||||
fprintf(stderr, \
|
||||
("%s @ L%d : incr : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("%s() %s @ L %d : incr : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -403,8 +406,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
#define WC_DEBUG_SET_VECTOR_REGISTERS_RETVAL(x) do { \
|
||||
if (((x) != 0) && (wc_svr_count > 0)) { \
|
||||
fprintf(stderr, \
|
||||
("%s @ L%d : incr : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("%s() %s @ L %d : incr : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -422,8 +426,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
++wc_svr_count; \
|
||||
if (wc_svr_count > 5) { \
|
||||
fprintf(stderr, \
|
||||
("%s @ L%d : incr : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("%s() %s @ L %d : incr : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -445,8 +450,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
if (wc_debug_vector_registers_retval != 0) { \
|
||||
if (wc_svr_count > 0) { \
|
||||
fprintf(stderr, \
|
||||
("%s @ L%d : incr : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("%s() %s @ L %d : incr : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -459,8 +465,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
++wc_svr_count; \
|
||||
if (wc_svr_count > 5) { \
|
||||
fprintf(stderr, \
|
||||
("%s @ L%d : incr : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("%s() %s @ L %d : incr : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -480,8 +487,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
#define ASSERT_SAVED_VECTOR_REGISTERS() do { \
|
||||
if (wc_svr_count <= 0) { \
|
||||
fprintf(stderr, \
|
||||
("ASSERT_SAVED_VECTOR_REGISTERS : %s @ L%d : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("ASSERT_SAVED_VECTOR_REGISTERS : %s() %s @ L %d : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -493,8 +501,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
#define ASSERT_RESTORED_VECTOR_REGISTERS(fail_clause) do { \
|
||||
if (wc_svr_count != 0) { \
|
||||
fprintf(stderr, \
|
||||
("ASSERT_RESTORED_VECTOR_REGISTERS : %s @ L%d" \
|
||||
" : wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("ASSERT_RESTORED_VECTOR_REGISTERS : %s() %s @ L %d" \
|
||||
" : wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
@@ -508,8 +517,9 @@ WOLFSSL_LOCAL int wc_debug_CipherLifecycleFree(void **CipherLifecycleTag,
|
||||
--wc_svr_count; \
|
||||
if ((wc_svr_count > 4) || (wc_svr_count < 0)) { \
|
||||
fprintf(stderr, \
|
||||
("%s @ L%d : decr : " \
|
||||
"wc_svr_count %d (last op %s L%d)\n"), \
|
||||
("%s() %s @ L %d : decr : " \
|
||||
"wc_svr_count %d (last op %s L %d)\n"), \
|
||||
__FUNCTION__, \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
wc_svr_count, \
|
||||
|
||||
@@ -3963,6 +3963,9 @@ extern void uITRON4_free(void *p) ;
|
||||
#ifndef WC_NO_INTERNAL_FUNCTION_POINTERS
|
||||
#define WC_NO_INTERNAL_FUNCTION_POINTERS
|
||||
#endif
|
||||
#ifndef WC_NO_GLOBAL_OBJECT_POINTERS
|
||||
#define WC_NO_GLOBAL_OBJECT_POINTERS
|
||||
#endif
|
||||
#ifndef WOLFSSL_ECC_CURVE_STATIC
|
||||
#define WOLFSSL_ECC_CURVE_STATIC
|
||||
#endif
|
||||
|
||||
@@ -74,12 +74,13 @@ This library provides big integer math functions.
|
||||
#endif
|
||||
|
||||
/* timing resistance array */
|
||||
#if (!defined(WC_NO_CACHE_RESISTANT) && \
|
||||
((defined(HAVE_ECC) && defined(ECC_TIMING_RESISTANT)) || \
|
||||
(defined(USE_FAST_MATH) && defined(TFM_TIMING_RESISTANT)))) || \
|
||||
((defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY)) || !defined(NO_DH) || \
|
||||
defined(OPENSSL_ALL) && defined(WC_PROTECT_ENCRYPTED_MEM))
|
||||
#if !defined(WC_NO_GLOBAL_OBJECT_POINTERS) && \
|
||||
((!defined(WC_NO_CACHE_RESISTANT) && \
|
||||
((defined(HAVE_ECC) && defined(ECC_TIMING_RESISTANT)) || \
|
||||
(defined(USE_FAST_MATH) && defined(TFM_TIMING_RESISTANT)))) || \
|
||||
((defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY)) || !defined(NO_DH) || \
|
||||
defined(OPENSSL_ALL) && defined(WC_PROTECT_ENCRYPTED_MEM)))
|
||||
|
||||
extern const wc_ptr_t wc_off_on_addr[2];
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user