mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 19:54:40 +02:00
linuxkm: refactor SAVE_VECTOR_REGISTERS() macro to take a fail clause as an argument, to allow the preprocessor to completely eliminate it in non-kernel builds, and for backward compat with WCv5.0-RC8.
This commit is contained in:
@@ -782,7 +782,6 @@ block cipher mechanism that uses n-bit binary string parameter key with 128-bits
|
||||
const int bits, Aes* aes)
|
||||
{
|
||||
int nr;
|
||||
int ret;
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
Aes *temp_key;
|
||||
#else
|
||||
@@ -813,12 +812,11 @@ block cipher mechanism that uses n-bit binary string parameter key with 128-bits
|
||||
nr = temp_key->rounds;
|
||||
aes->rounds = nr;
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0) {
|
||||
SAVE_VECTOR_REGISTERS(
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(temp_key, aes->heap, DYNAMIC_TYPE_AES);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
return _svr_ret;);
|
||||
|
||||
Key_Schedule[nr] = Temp_Key_Schedule[0];
|
||||
Key_Schedule[nr-1] = _mm_aesimc_si128(Temp_Key_Schedule[1]);
|
||||
@@ -3139,11 +3137,8 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
|
||||
__must_check int wc_AesEncryptDirect(Aes* aes, byte* out, const byte* in)
|
||||
{
|
||||
if (haveAESNI && aes->use_aesni) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
if (haveAESNI && aes->use_aesni)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
wc_AesEncrypt(aes, in, out);
|
||||
if (haveAESNI && aes->use_aesni)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -3158,11 +3153,8 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
/* Allow direct access to one block decrypt */
|
||||
__must_check int wc_AesDecryptDirect(Aes* aes, byte* out, const byte* in)
|
||||
{
|
||||
if (haveAESNI && aes->use_aesni) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
if (haveAESNI && aes->use_aesni)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
wc_AesDecrypt(aes, in, out);
|
||||
if (haveAESNI && aes->use_aesni)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -3960,7 +3952,6 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
if (haveAESNI) {
|
||||
int ret;
|
||||
#ifdef DEBUG_AESNI
|
||||
printf("about to aes cbc encrypt\n");
|
||||
printf("in = %p\n", in);
|
||||
@@ -3981,10 +3972,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
|
||||
tmp_align = tmp + (AESNI_ALIGN - ((wc_ptr_t)tmp % AESNI_ALIGN));
|
||||
XMEMCPY(tmp_align, in, sz);
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0) {
|
||||
XFREE(tmp, aes->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
return ret;
|
||||
}
|
||||
SAVE_VECTOR_REGISTERS(XFREE(tmp, aes->heap, DYNAMIC_TYPE_TMP_BUFFER); return _svr_ret;);
|
||||
AES_CBC_encrypt(tmp_align, tmp_align, (byte*)aes->reg, sz,
|
||||
(byte*)aes->key, aes->rounds);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -4000,8 +3988,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_CBC_encrypt(in, out, (byte*)aes->reg, sz, (byte*)aes->key,
|
||||
aes->rounds);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -4086,7 +4073,6 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
if (haveAESNI) {
|
||||
int ret;
|
||||
#ifdef DEBUG_AESNI
|
||||
printf("about to aes cbc decrypt\n");
|
||||
printf("in = %p\n", in);
|
||||
@@ -4099,8 +4085,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
|
||||
/* if input and output same will overwrite input iv */
|
||||
XMEMCPY(aes->tmp, in + sz - AES_BLOCK_SIZE, AES_BLOCK_SIZE);
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#if defined(WOLFSSL_AESNI_BY4)
|
||||
AES_CBC_decrypt_by4(in, out, (byte*)aes->reg, sz, (byte*)aes->key,
|
||||
aes->rounds);
|
||||
@@ -7675,9 +7660,7 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
#ifdef WOLFSSL_AESNI
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_encrypt_avx2(in, out, authIn, iv, authTag, sz, authInSz, ivSz,
|
||||
authTagSz, (const byte*)aes->key, aes->rounds);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -7687,9 +7670,7 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
#endif
|
||||
#ifdef HAVE_INTEL_AVX1
|
||||
if (IS_INTEL_AVX1(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_encrypt_avx1(in, out, authIn, iv, authTag, sz, authInSz, ivSz,
|
||||
authTagSz, (const byte*)aes->key, aes->rounds);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -8201,9 +8182,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
#ifdef WOLFSSL_AESNI
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_decrypt_avx2(in, out, authIn, iv, authTag, sz, authInSz, ivSz,
|
||||
authTagSz, (byte*)aes->key, aes->rounds, &res);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -8215,9 +8194,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
#endif
|
||||
#ifdef HAVE_INTEL_AVX1
|
||||
if (IS_INTEL_AVX1(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_decrypt_avx1(in, out, authIn, iv, authTag, sz, authInSz, ivSz,
|
||||
authTagSz, (byte*)aes->key, aes->rounds, &res);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -8473,9 +8450,7 @@ static int AesGcmInit_aesni(Aes* aes, const byte* iv, word32 ivSz)
|
||||
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_init_avx2((byte*)aes->key, aes->rounds, iv, ivSz, aes->H,
|
||||
AES_COUNTER(aes), AES_INITCTR(aes));
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -8484,9 +8459,7 @@ static int AesGcmInit_aesni(Aes* aes, const byte* iv, word32 ivSz)
|
||||
#endif
|
||||
#ifdef HAVE_INTEL_AVX1
|
||||
if (IS_INTEL_AVX1(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_init_avx1((byte*)aes->key, aes->rounds, iv, ivSz, aes->H,
|
||||
AES_COUNTER(aes), AES_INITCTR(aes));
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -8494,9 +8467,7 @@ static int AesGcmInit_aesni(Aes* aes, const byte* iv, word32 ivSz)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return BAD_STATE_E;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
AES_GCM_init_aesni((byte*)aes->key, aes->rounds, iv, ivSz, aes->H,
|
||||
AES_COUNTER(aes), AES_INITCTR(aes));
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -8635,9 +8606,7 @@ static int AesGcmEncryptUpdate_aesni(Aes* aes, byte* c, const byte* p,
|
||||
word32 blocks;
|
||||
int partial;
|
||||
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
/* Hash in A, the Authentication Data */
|
||||
AesGcmAadUpdate_aesni(aes, a, aSz, (cSz > 0) && (c != NULL));
|
||||
|
||||
@@ -8763,9 +8732,7 @@ static int AesGcmEncryptFinal_aesni(Aes* aes, byte* authTag, word32 authTagSz)
|
||||
/* AAD block incomplete when > 0 */
|
||||
byte over = aes->aOver;
|
||||
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
if (aes->cOver > 0) {
|
||||
/* Cipher text block incomplete. */
|
||||
over = aes->cOver;
|
||||
@@ -8863,9 +8830,7 @@ static int AesGcmDecryptUpdate_aesni(Aes* aes, byte* p, const byte* c,
|
||||
word32 blocks;
|
||||
int partial;
|
||||
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
/* Hash in A, the Authentication Data */
|
||||
AesGcmAadUpdate_aesni(aes, a, aSz, (cSz > 0) && (c != NULL));
|
||||
|
||||
@@ -8999,8 +8964,7 @@ static int AesGcmDecryptFinal_aesni(Aes* aes, const byte* authTag,
|
||||
byte over = aes->aOver;
|
||||
byte *lastBlock = AES_LASTGBLOCK(aes);
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
if (aes->cOver > 0) {
|
||||
/* Cipher text block incomplete. */
|
||||
over = aes->cOver;
|
||||
@@ -10001,9 +9965,7 @@ int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
B[15] = 1;
|
||||
#ifdef WOLFSSL_AESNI
|
||||
if (haveAESNI && aes->use_aesni) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
while (inSz >= AES_BLOCK_SIZE * 4) {
|
||||
AesCcmCtrIncSet4(B, lenSz);
|
||||
|
||||
@@ -10089,9 +10051,7 @@ int wc_AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
if (haveAESNI && aes->use_aesni) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
while (oSz >= AES_BLOCK_SIZE * 4) {
|
||||
AesCcmCtrIncSet4(B, lenSz);
|
||||
|
||||
@@ -10520,8 +10480,7 @@ int wc_AesEcbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
if ((in == NULL) || (out == NULL) || (aes == NULL))
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = _AesEcbEncrypt(aes, out, in, sz);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
@@ -10535,8 +10494,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
if ((in == NULL) || (out == NULL) || (aes == NULL))
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = _AesEcbDecrypt(aes, out, in, sz);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
||||
@@ -10565,7 +10523,6 @@ static int wc_AesFeedbackEncrypt(Aes* aes, byte* out, const byte* in,
|
||||
#ifdef WOLFSSL_AES_CFB
|
||||
byte* reg = NULL;
|
||||
#endif
|
||||
int ret;
|
||||
|
||||
if (aes == NULL || out == NULL || in == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
@@ -10591,8 +10548,7 @@ static int wc_AesFeedbackEncrypt(Aes* aes, byte* out, const byte* in,
|
||||
sz--;
|
||||
}
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
while (sz >= AES_BLOCK_SIZE) {
|
||||
/* Using aes->tmp here for inline case i.e. in=out */
|
||||
@@ -10662,7 +10618,6 @@ static int wc_AesFeedbackDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
byte mode)
|
||||
{
|
||||
byte* tmp;
|
||||
int ret;
|
||||
|
||||
if (aes == NULL || out == NULL || in == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
@@ -10684,8 +10639,7 @@ static int wc_AesFeedbackDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
sz--;
|
||||
}
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
while (sz > AES_BLOCK_SIZE) {
|
||||
/* Using aes->tmp here for inline case i.e. in=out */
|
||||
@@ -10803,7 +10757,6 @@ static int wc_AesFeedbackCFB8(Aes* aes, byte* out, const byte* in,
|
||||
word32 sz, byte dir)
|
||||
{
|
||||
byte *pt;
|
||||
int ret;
|
||||
|
||||
if (aes == NULL || out == NULL || in == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
@@ -10813,8 +10766,7 @@ static int wc_AesFeedbackCFB8(Aes* aes, byte* out, const byte* in,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
while (sz > 0) {
|
||||
wc_AesEncryptDirect(aes, (byte*)aes->tmp, (byte*)aes->reg);
|
||||
@@ -10858,7 +10810,6 @@ static int wc_AesFeedbackCFB1(Aes* aes, byte* out, const byte* in,
|
||||
byte cur = 0; /* hold current work in order to handle inline in=out */
|
||||
byte* pt;
|
||||
int bit = 7;
|
||||
int ret;
|
||||
|
||||
if (aes == NULL || out == NULL || in == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
@@ -10868,8 +10819,7 @@ static int wc_AesFeedbackCFB1(Aes* aes, byte* out, const byte* in,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
while (sz > 0) {
|
||||
wc_AesEncryptDirect(aes, (byte*)aes->tmp, (byte*)aes->reg);
|
||||
@@ -11074,8 +11024,6 @@ int wc_AesKeyWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out,
|
||||
byte t[KEYWRAP_BLOCK_SIZE];
|
||||
byte tmp[AES_BLOCK_SIZE];
|
||||
|
||||
int ret;
|
||||
|
||||
/* n must be at least 2 64-bit blocks, output size is (n + 1) 8 bytes (64-bit) */
|
||||
if (aes == NULL || in == NULL || inSz < 2*KEYWRAP_BLOCK_SIZE ||
|
||||
out == NULL || outSz < (inSz + KEYWRAP_BLOCK_SIZE))
|
||||
@@ -11096,8 +11044,7 @@ int wc_AesKeyWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out,
|
||||
XMEMCPY(tmp, iv, KEYWRAP_BLOCK_SIZE);
|
||||
}
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
for (j = 0; j <= 5; j++) {
|
||||
for (i = 1; i <= inSz / KEYWRAP_BLOCK_SIZE; i++) {
|
||||
@@ -11182,8 +11129,6 @@ int wc_AesKeyUnWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out,
|
||||
0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6
|
||||
};
|
||||
|
||||
int ret;
|
||||
|
||||
if (aes == NULL || in == NULL || inSz < 3 * KEYWRAP_BLOCK_SIZE ||
|
||||
out == NULL || outSz < (inSz - KEYWRAP_BLOCK_SIZE))
|
||||
return BAD_FUNC_ARG;
|
||||
@@ -11203,8 +11148,7 @@ int wc_AesKeyUnWrap_ex(Aes *aes, const byte* in, word32 inSz, byte* out,
|
||||
XMEMCPY(out, in + KEYWRAP_BLOCK_SIZE, inSz - KEYWRAP_BLOCK_SIZE);
|
||||
XMEMSET(t, 0, sizeof(t));
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* initialize counter to 6n */
|
||||
n = (inSz - 1) / KEYWRAP_BLOCK_SIZE;
|
||||
@@ -11487,8 +11431,7 @@ int wc_AesXtsEncrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
XMEMSET(tmp, 0, AES_BLOCK_SIZE); /* set to 0's in case of improper AES
|
||||
* key setup passed to encrypt direct*/
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
wc_AesEncryptDirect(tweak, tmp, i);
|
||||
|
||||
@@ -11603,8 +11546,7 @@ int wc_AesXtsDecrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
XMEMSET(tmp, 0, AES_BLOCK_SIZE); /* set to 0's in case of improper AES
|
||||
* key setup passed to decrypt direct*/
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
wc_AesEncryptDirect(tweak, tmp, i);
|
||||
|
||||
|
@@ -418,18 +418,14 @@ int wc_Chacha_Process(ChaCha* ctx, byte* output, const byte* input,
|
||||
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(cpuidFlags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
chacha_encrypt_avx2(ctx, input, output, msglen);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if (IS_INTEL_AVX1(cpuidFlags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
chacha_encrypt_avx1(ctx, input, output, msglen);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return 0;
|
||||
|
@@ -128,8 +128,7 @@ int wc_curve25519_make_pub(int public_size, byte* pub, int private_size,
|
||||
#else
|
||||
fe_init();
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
ret = curve25519(pub, priv, kCurve25519BasePoint);
|
||||
|
||||
@@ -171,8 +170,7 @@ int wc_curve25519_generic(int public_size, byte* pub,
|
||||
|
||||
fe_init();
|
||||
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
ret = curve25519(pub, priv, basepoint);
|
||||
|
||||
@@ -289,8 +287,7 @@ int wc_curve25519_shared_secret_ex(curve25519_key* private_key,
|
||||
ret = nxp_ltc_curve25519(&o, private_key->k, &public_key->p,
|
||||
kLTC_Curve25519);
|
||||
#else
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
ret = curve25519(o.point, private_key->k, public_key->p.point);
|
||||
|
||||
|
@@ -267,9 +267,7 @@ static int poly1305_blocks(Poly1305* ctx, const unsigned char *m,
|
||||
{
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
/* AVX2 is handled in wc_Poly1305Update. */
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
poly1305_blocks_avx(ctx, m, bytes);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return 0;
|
||||
@@ -403,9 +401,7 @@ static int poly1305_block(Poly1305* ctx, const unsigned char *m)
|
||||
{
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
/* No call to poly1305_block when AVX2, AVX2 does 4 blocks at a time. */
|
||||
int ret= SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
poly1305_block_avx(ctx, m);
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
return 0;
|
||||
@@ -444,11 +440,7 @@ int wc_Poly1305SetKey(Poly1305* ctx, const byte* key, word32 keySz)
|
||||
intel_flags = cpuid_get_flags();
|
||||
cpu_flags_set = 1;
|
||||
}
|
||||
{
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags))
|
||||
poly1305_setkey_avx2(ctx, key);
|
||||
@@ -511,7 +503,6 @@ int wc_Poly1305SetKey(Poly1305* ctx, const byte* key, word32 keySz)
|
||||
int wc_Poly1305Final(Poly1305* ctx, byte* mac)
|
||||
{
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
int ret;
|
||||
#elif defined(POLY130564)
|
||||
|
||||
word64 h0,h1,h2,c;
|
||||
@@ -531,8 +522,7 @@ int wc_Poly1305Final(Poly1305* ctx, byte* mac)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags))
|
||||
poly1305_final_avx2(ctx, mac);
|
||||
@@ -720,9 +710,7 @@ int wc_Poly1305Update(Poly1305* ctx, const byte* m, word32 bytes)
|
||||
#ifdef USE_INTEL_SPEEDUP
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags)) {
|
||||
int ret = SAVE_VECTOR_REGISTERS();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
|
||||
/* handle leftover */
|
||||
|
||||
|
@@ -320,10 +320,8 @@ static int InitSha256(wc_Sha256* sha256)
|
||||
|
||||
static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) {
|
||||
int ret;
|
||||
if (Transform_Sha256_is_vectorized) {
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
}
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = (*Transform_Sha256_p)(S, D);
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -333,10 +331,8 @@ static int InitSha256(wc_Sha256* sha256)
|
||||
|
||||
static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) {
|
||||
int ret;
|
||||
if (Transform_Sha256_is_vectorized) {
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
}
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = (*Transform_Sha256_Len_p)(S, D, L);
|
||||
if (Transform_Sha256_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
@@ -509,10 +509,8 @@ static int InitSha512_256(wc_Sha512* sha512)
|
||||
|
||||
static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) {
|
||||
int ret;
|
||||
if (Transform_Sha512_is_vectorized) {
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
}
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = (*Transform_Sha512_p)(sha512);
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
@@ -520,10 +518,8 @@ static int InitSha512_256(wc_Sha512* sha512)
|
||||
}
|
||||
static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) {
|
||||
int ret;
|
||||
if (Transform_Sha512_is_vectorized) {
|
||||
if ((ret = SAVE_VECTOR_REGISTERS()) != 0)
|
||||
return ret;
|
||||
}
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
SAVE_VECTOR_REGISTERS(return _svr_ret;);
|
||||
ret = (*Transform_Sha512_Len_p)(sha512, len);
|
||||
if (Transform_Sha512_is_vectorized)
|
||||
RESTORE_VECTOR_REGISTERS();
|
||||
|
@@ -137,7 +137,7 @@
|
||||
#include <asm/fpu/internal.h>
|
||||
#endif
|
||||
#ifndef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS() save_vector_registers_x86()
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) { int _svr_ret = save_vector_registers_x86(); if (_svr_ret != 0) { fail_clause } }
|
||||
#endif
|
||||
#ifndef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() restore_vector_registers_x86()
|
||||
@@ -152,7 +152,7 @@
|
||||
#define WOLFSSL_LINUXKM_SIMD_ARM
|
||||
#include <asm/fpsimd.h>
|
||||
#ifndef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS() save_vector_registers_arm()
|
||||
#define SAVE_VECTOR_REGISTERS(fail_clause) { int _svr_ret = save_vector_registers_arm(); if (_svr_ret != 0) { fail_clause } }
|
||||
#endif
|
||||
#ifndef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() restore_vector_registers_arm()
|
||||
@@ -162,7 +162,7 @@
|
||||
#define WOLFSSL_NO_ASM
|
||||
#endif
|
||||
#ifndef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS() 0
|
||||
#define SAVE_VECTOR_REGISTERS(...) ({})
|
||||
#endif
|
||||
#ifndef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() ({})
|
||||
@@ -620,7 +620,7 @@
|
||||
#else /* ! WOLFSSL_LINUXKM */
|
||||
|
||||
#ifndef SAVE_VECTOR_REGISTERS
|
||||
#define SAVE_VECTOR_REGISTERS() 0
|
||||
#define SAVE_VECTOR_REGISTERS(...) do{}while(0)
|
||||
#endif
|
||||
#ifndef RESTORE_VECTOR_REGISTERS
|
||||
#define RESTORE_VECTOR_REGISTERS() do{}while(0)
|
||||
|
Reference in New Issue
Block a user