Compare commits
4 Commits
remove-arc
...
WCv6.0.0-l
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
116388ad17 | ||
|
|
184c8128ac | ||
|
|
81beda3f40 | ||
|
|
9a411ca710 |
1
README
1
README
@@ -1,4 +1,5 @@
|
||||
*** Description ***
|
||||
*** FIPS 140-3 module v6.0.0 SRTP-KDF Release Candidate 3 ***
|
||||
|
||||
The wolfSSL embedded SSL library (formerly CyaSSL) is a lightweight SSL/TLS
|
||||
library written in ANSI C and targeted for embedded, RTOS, and
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# wolfSSL Embedded SSL/TLS Library
|
||||
# FIPS 140-3 module v6.0.0 SRTP-KDF Release Candidate 3
|
||||
|
||||
The [wolfSSL embedded SSL library](https://www.wolfssl.com/products/wolfssl/)
|
||||
(formerly CyaSSL) is a lightweight SSL/TLS library written in ANSI C and
|
||||
|
||||
@@ -4574,19 +4574,31 @@ static void AesSetKey_C(Aes* aes, const byte* key, word32 keySz, int dir)
|
||||
#endif /* WC_C_DYNAMIC_FALLBACK */
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
aes->use_aesni = 0;
|
||||
if (checkedAESNI == 0) {
|
||||
haveAESNI = Check_CPU_support_AES();
|
||||
checkedAESNI = 1;
|
||||
#if defined(WC_FLAG_DONT_USE_VECTOR_OPS)
|
||||
if (aes->use_aesni == WC_FLAG_DONT_USE_VECTOR_OPS) {
|
||||
aes->use_aesni = 0;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (checkedAESNI == 0) {
|
||||
haveAESNI = Check_CPU_support_AES();
|
||||
checkedAESNI = 1;
|
||||
}
|
||||
aes->use_aesni = haveAESNI;
|
||||
}
|
||||
if (haveAESNI) {
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
|
||||
if (aes->use_aesni) {
|
||||
#ifdef WOLFSSL_KERNEL_MODE
|
||||
/* runtime alignment check */
|
||||
if ((wc_ptr_t)&aes->key & (wc_ptr_t)0xf) {
|
||||
return BAD_ALIGN_E;
|
||||
ret = BAD_ALIGN_E;
|
||||
}
|
||||
else
|
||||
#endif /* WOLFSSL_KERNEL_MODE */
|
||||
{
|
||||
ret = SAVE_VECTOR_REGISTERS2();
|
||||
}
|
||||
#endif /* WOLFSSL_LINUXKM */
|
||||
ret = SAVE_VECTOR_REGISTERS2();
|
||||
if (ret == 0) {
|
||||
if (dir == AES_ENCRYPTION)
|
||||
ret = AES_set_encrypt_key_AESNI(userKey, (int)keylen * 8, aes);
|
||||
@@ -11832,7 +11844,13 @@ static WARN_UNUSED_RESULT int _AesEcbEncrypt(
|
||||
#elif defined(__aarch64__) && defined(WOLFSSL_ARMASM) && \
|
||||
!defined(WOLFSSL_ARMASM_NO_HW_CRYPTO)
|
||||
if (aes->use_aes_hw_crypto) {
|
||||
AES_encrypt_AARCH64(in, out, (byte*)aes->key, (int)aes->rounds);
|
||||
word32 i;
|
||||
|
||||
for (i = 0; i < sz; i += WC_AES_BLOCK_SIZE) {
|
||||
AES_encrypt_AARCH64(in, out, (byte*)aes->key, (int)aes->rounds);
|
||||
in += WC_AES_BLOCK_SIZE;
|
||||
out += WC_AES_BLOCK_SIZE;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -11890,7 +11908,13 @@ static WARN_UNUSED_RESULT int _AesEcbDecrypt(
|
||||
#elif defined(__aarch64__) && defined(WOLFSSL_ARMASM) && \
|
||||
!defined(WOLFSSL_ARMASM_NO_HW_CRYPTO)
|
||||
if (aes->use_aes_hw_crypto) {
|
||||
AES_decrypt_AARCH64(in, out, (byte*)aes->key, (int)aes->rounds);
|
||||
word32 i;
|
||||
|
||||
for (i = 0; i < sz; i += WC_AES_BLOCK_SIZE) {
|
||||
AES_decrypt_AARCH64(in, out, (byte*)aes->key, (int)aes->rounds);
|
||||
in += WC_AES_BLOCK_SIZE;
|
||||
out += WC_AES_BLOCK_SIZE;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -12753,7 +12777,12 @@ int wc_AesXtsSetKeyNoInit(XtsAes* aes, const byte* key, word32 len, int dir)
|
||||
}
|
||||
|
||||
if ((len != (AES_128_KEY_SIZE*2)) &&
|
||||
#ifndef HAVE_FIPS
|
||||
/* XTS-384 not allowed by FIPS and can not be treated like
|
||||
* RSA-4096 bit keys back in the day, can not vendor affirm
|
||||
* the use of 2 concatenated 192-bit keys (XTS-384) */
|
||||
(len != (AES_192_KEY_SIZE*2)) &&
|
||||
#endif
|
||||
(len != (AES_256_KEY_SIZE*2)))
|
||||
{
|
||||
WOLFSSL_MSG("Unsupported key size");
|
||||
@@ -12936,6 +12965,10 @@ int wc_AesXtsDecryptSector(XtsAes* aes, byte* out, const byte* in, word32 sz,
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
|
||||
#if defined(USE_INTEL_SPEEDUP_FOR_AES) && !defined(USE_INTEL_SPEEDUP)
|
||||
#define USE_INTEL_SPEEDUP
|
||||
#endif
|
||||
|
||||
#if defined(USE_INTEL_SPEEDUP)
|
||||
#define HAVE_INTEL_AVX1
|
||||
#define HAVE_INTEL_AVX2
|
||||
|
||||
@@ -51,12 +51,12 @@
|
||||
#include <wolfssl/wolfcrypt/cryptocb.h>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && !defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(USE_INTEL_SPEEDUP)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) WC_DO_NOTHING
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() WC_DO_NOTHING
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
const curve25519_set_type curve25519_sets[] = {
|
||||
|
||||
@@ -64,12 +64,12 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM)
|
||||
#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) WC_DO_NOTHING
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() WC_DO_NOTHING
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -1380,6 +1380,36 @@ static int GeneratePublicDh(DhKey* key, byte* priv, word32 privSz,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a DhKey with set params and a priv key, generate the corresponding
|
||||
* public key. If fips, does pub key validation.
|
||||
* */
|
||||
WOLFSSL_API int wc_DhGeneratePublic(DhKey* key, byte* priv, word32 privSz,
|
||||
byte* pub, word32* pubSz)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (key == NULL || priv == NULL || privSz == 0 ||
|
||||
pub == NULL || pubSz == NULL) {
|
||||
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)
|
||||
if (ret == 0)
|
||||
ret = _ffc_validate_public_key(key, pub, *pubSz, NULL, 0, 0);
|
||||
if (ret == 0)
|
||||
ret = _ffc_pairwise_consistency_test(key, pub, *pubSz, priv, privSz);
|
||||
#endif /* FIPS V5 or later || WOLFSSL_VALIDATE_DH_KEYGEN */
|
||||
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int wc_DhGenerateKeyPair_Sync(DhKey* key, WC_RNG* rng,
|
||||
byte* priv, word32* privSz, byte* pub, word32* pubSz)
|
||||
{
|
||||
|
||||
@@ -231,12 +231,12 @@ ECC Curve Sizes:
|
||||
#include <wolfssl/wolfcrypt/hmac.h>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM)
|
||||
#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) WC_DO_NOTHING
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() WC_DO_NOTHING
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
|
||||
@@ -3919,7 +3919,7 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point* G, ecc_point* R, mp_int* a,
|
||||
#endif
|
||||
int i, err;
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
ecc_key key;
|
||||
ecc_key *key = NULL;
|
||||
#endif
|
||||
mp_digit mp;
|
||||
|
||||
@@ -3946,10 +3946,13 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point* G, ecc_point* R, mp_int* a,
|
||||
XMEMSET(M, 0, sizeof(M));
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
err = ecc_key_tmp_init(&key, heap);
|
||||
key = (ecc_key *)XMALLOC(sizeof(*key), heap, DYNAMIC_TYPE_ECC);
|
||||
if (key == NULL)
|
||||
return MEMORY_E;
|
||||
err = ecc_key_tmp_init(key, heap);
|
||||
if (err != MP_OKAY)
|
||||
goto exit;
|
||||
R->key = &key;
|
||||
R->key = key;
|
||||
#endif /* WOLFSSL_SMALL_STACK_CACHE */
|
||||
|
||||
/* alloc ram for window temps */
|
||||
@@ -3962,7 +3965,7 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point* G, ecc_point* R, mp_int* a,
|
||||
goto exit;
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
M[i]->key = &key;
|
||||
M[i]->key = key;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -4004,7 +4007,8 @@ exit:
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
R->key = NULL;
|
||||
ecc_key_tmp_final(&key, heap);
|
||||
ecc_key_tmp_final(key, heap);
|
||||
XFREE(key, heap, DYNAMIC_TYPE_ECC);
|
||||
#endif /* WOLFSSL_SMALL_STACK_CACHE */
|
||||
|
||||
return err;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -60,12 +60,12 @@ RSA keys can be used to encrypt, decrypt, sign and verify data.
|
||||
#include <wolfssl/wolfcrypt/sp.h>
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM)
|
||||
#if defined(WOLFSSL_KERNEL_MODE) && !defined(WOLFSSL_SP_ASM)
|
||||
/* force off unneeded vector register save/restore. */
|
||||
#undef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) WC_DO_NOTHING
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause)
|
||||
#undef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() WC_DO_NOTHING
|
||||
#define RESTORE_VECTOR_REGISTERS() RESTORE_NO_VECTOR_REGISTERS()
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -572,12 +572,12 @@ static int InitSha256(wc_Sha256* sha256)
|
||||
|
||||
static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) {
|
||||
int ret;
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
ret = (*Transform_Sha256_p)(S, D);
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
@@ -587,12 +587,12 @@ static int InitSha256(wc_Sha256* sha256)
|
||||
|
||||
static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) {
|
||||
int ret;
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
ret = (*Transform_Sha256_Len_p)(S, D, L);
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
|
||||
@@ -39,6 +39,12 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef WC_SHA3_NO_ASM
|
||||
#undef USE_INTEL_SPEEDUP
|
||||
#undef WOLFSSL_ARMASM
|
||||
#undef WOLFSSL_RISCV_ASM
|
||||
#endif
|
||||
|
||||
#include <wolfssl/wolfcrypt/sha3.h>
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
#include <wolfssl/wolfcrypt/hash.h>
|
||||
@@ -705,7 +711,7 @@ static int Sha3Update(wc_Sha3* sha3, const byte* data, word32 len, byte p)
|
||||
word32 i;
|
||||
word32 blocks;
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
@@ -757,7 +763,7 @@ static int Sha3Update(wc_Sha3* sha3, const byte* data, word32 len, byte p)
|
||||
len -= p * 8U;
|
||||
data += p * 8U;
|
||||
}
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
@@ -795,7 +801,7 @@ static int Sha3Final(wc_Sha3* sha3, byte padChar, byte* hash, byte p, word32 l)
|
||||
sha3->s[i] ^= Load64BitBigEndian(sha3->t + 8 * i);
|
||||
}
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
@@ -823,7 +829,7 @@ static int Sha3Final(wc_Sha3* sha3, byte padChar, byte* hash, byte p, word32 l)
|
||||
#endif
|
||||
XMEMCPY(hash + j, sha3->s, l - j);
|
||||
}
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
@@ -1526,7 +1532,7 @@ int wc_Shake128_Absorb(wc_Shake* shake, const byte* data, word32 len)
|
||||
*/
|
||||
int wc_Shake128_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt)
|
||||
{
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
@@ -1543,7 +1549,7 @@ int wc_Shake128_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt)
|
||||
#endif
|
||||
out += WC_SHA3_128_COUNT * 8;
|
||||
}
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
@@ -1664,7 +1670,7 @@ int wc_Shake256_Absorb(wc_Shake* shake, const byte* data, word32 len)
|
||||
*/
|
||||
int wc_Shake256_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt)
|
||||
{
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
@@ -1681,7 +1687,7 @@ int wc_Shake256_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt)
|
||||
#endif
|
||||
out += WC_SHA3_256_COUNT * 8;
|
||||
}
|
||||
#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP)
|
||||
#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP)
|
||||
if (SHA3_BLOCK == sha3_block_avx2)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
|
||||
@@ -693,12 +693,12 @@ static int InitSha512_256(wc_Sha512* sha512)
|
||||
|
||||
static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) {
|
||||
int ret;
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
ret = (*Transform_Sha512_p)(sha512);
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
@@ -706,12 +706,12 @@ static int InitSha512_256(wc_Sha512* sha512)
|
||||
}
|
||||
static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) {
|
||||
int ret;
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#endif
|
||||
ret = (*Transform_Sha512_Len_p)(sha512, len);
|
||||
#ifdef WOLFSSL_LINUXKM
|
||||
#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
#endif
|
||||
|
||||
@@ -116,7 +116,7 @@ This library provides single precision (SP) integer math functions.
|
||||
|
||||
#include <wolfssl/wolfcrypt/sp_int.h>
|
||||
|
||||
#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM)
|
||||
#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) WC_DO_NOTHING
|
||||
|
||||
@@ -303,6 +303,13 @@ struct Aes {
|
||||
#endif
|
||||
#ifdef WOLFSSL_AESNI
|
||||
byte use_aesni;
|
||||
#if defined(WOLFSSL_KERNEL_MODE) || defined(WC_WANT_FLAG_DONT_USE_AESNI)
|
||||
/* Note, we can't define WC_FLAG_DONT_USE_VECTOR_OPS by default because we
|
||||
* need to support legacy applications that call wc_AesSetKey() on
|
||||
* uninited struct Aes.
|
||||
*/
|
||||
#define WC_FLAG_DONT_USE_VECTOR_OPS 2
|
||||
#endif
|
||||
#endif /* WOLFSSL_AESNI */
|
||||
#if defined(__aarch64__) && defined(WOLFSSL_ARMASM) && \
|
||||
!defined(WOLFSSL_ARMASM_NO_HW_CRYPTO)
|
||||
|
||||
@@ -173,6 +173,10 @@ WOLFSSL_API int wc_DhCmpNamedKey(int name, int noQ,
|
||||
WOLFSSL_API int wc_DhCopyNamedKey(int name,
|
||||
byte* p, word32* pSz, byte* g, word32* gSz, byte* q, word32* qSz);
|
||||
|
||||
WOLFSSL_API int wc_DhGeneratePublic(DhKey* key, byte* priv,
|
||||
word32 privSz, byte* pub,
|
||||
word32* pubSz);
|
||||
|
||||
#ifdef WOLFSSL_DH_EXTRA
|
||||
WOLFSSL_API int wc_DhImportKeyPair(DhKey* key, const byte* priv, word32 privSz,
|
||||
const byte* pub, word32 pubSz);
|
||||
|
||||
@@ -158,7 +158,11 @@ struct OS_Seed {
|
||||
|
||||
#ifdef HAVE_HASHDRBG
|
||||
struct DRBG_internal {
|
||||
#ifdef WORD64_AVAILABLE
|
||||
word64 reseedCtr;
|
||||
#else
|
||||
word32 reseedCtr;
|
||||
#endif
|
||||
byte V[DRBG_SEED_LEN];
|
||||
byte C[DRBG_SEED_LEN];
|
||||
void* heap;
|
||||
|
||||
@@ -220,7 +220,9 @@ WOLFSSL_API int wc_Shake256_Copy(wc_Shake* src, wc_Sha3* dst);
|
||||
WOLFSSL_API int wc_Sha3_GetFlags(wc_Sha3* sha3, word32* flags);
|
||||
#endif
|
||||
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
#ifdef WC_SHA3_NO_ASM
|
||||
/* asm speedups disabled */
|
||||
#elif defined(USE_INTEL_SPEEDUP)
|
||||
WOLFSSL_LOCAL void sha3_block_n_bmi2(word64* s, const byte* data, word32 n,
|
||||
word64 c);
|
||||
WOLFSSL_LOCAL void sha3_block_bmi2(word64* s);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#elif !defined(WOLFSSL_LINUXKM)
|
||||
#elif !defined(NO_STDINT_H)
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ This library provides single precision (SP) integer math functions.
|
||||
#ifndef WOLF_CRYPT_SP_INT_H
|
||||
#define WOLF_CRYPT_SP_INT_H
|
||||
|
||||
#ifndef WOLFSSL_LINUXKM
|
||||
#ifndef NO_LIMITS_H
|
||||
#include <limits.h>
|
||||
#endif
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
Reference in New Issue
Block a user