diff --git a/src/ssl.c b/src/ssl.c index 2e5e92021..5e43f2fef 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -37091,9 +37091,9 @@ static WOLFSSL_BN_ULONG wolfSSL_BN_get_word_1(mp_int *mp) { return (WOLFSSL_BN_ULONG)mp->dp[0]; #else WOLFSSL_BN_ULONG ret = 0UL; - int digit_i; + unsigned int digit_i; - for (digit_i = 0; digit_i < mp->used; ++digit_i) + for (digit_i = 0; digit_i < (unsigned int)mp->used; ++digit_i) ret |= ((WOLFSSL_BN_ULONG)mp->dp[digit_i]) << (DIGIT_BIT * digit_i); return ret; diff --git a/tests/api.c b/tests/api.c index 2546377d7..4d458fb79 100644 --- a/tests/api.c +++ b/tests/api.c @@ -49105,7 +49105,8 @@ static int test_X509_REQ(void) static int test_wolfssl_PKCS7(void) { int res = TEST_SKIPPED; -#if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_BIO) +#if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) && !defined(NO_BIO) && \ + !defined(NO_RSA) PKCS7* pkcs7; byte data[FOURK_BUF]; word32 len = sizeof(data); @@ -49717,7 +49718,8 @@ static int test_X509_STORE_No_SSL_CTX(void) #if defined(OPENSSL_ALL) && !defined(NO_FILESYSTEM) && \ !defined(NO_WOLFSSL_DIR) && defined(HAVE_CRL) && \ (defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \ - (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) + (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) && \ + !defined(NO_RSA) X509_STORE * store; X509_STORE_CTX * storeCtx; @@ -49787,7 +49789,8 @@ static int test_X509_LOOKUP_add_dir(void) #if defined(OPENSSL_ALL) && !defined(NO_FILESYSTEM) && \ !defined(NO_WOLFSSL_DIR) && defined(HAVE_CRL) && \ (defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \ - (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) + (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) && \ + !defined(NO_RSA) X509_STORE * store; X509_STORE_CTX * storeCtx; diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index d10619f88..4d6076738 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -35590,7 +35590,7 @@ static int ParseCRL_Extensions(DecodedCRL* dcrl, const byte* buf, if (ret == 0) { dcrl->crlNumber = 0; - for (i = 0; i < (*m).used; ++i) { + for (i = 0; i < (int)(*m).used; ++i) { if (i > (CHAR_BIT * (int)sizeof(word32) / DIGIT_BIT)) { break; diff --git a/wolfcrypt/src/integer.c b/wolfcrypt/src/integer.c index 433d1b674..9a7cc485b 100644 --- a/wolfcrypt/src/integer.c +++ b/wolfcrypt/src/integer.c @@ -5006,7 +5006,7 @@ LBL_B:mp_clear (&b); #endif /* (WOLFSSL_KEY_GEN && !NO_RSA) || !NO_DH || !NO_DSA */ -#ifdef WOLFSSL_KEY_GEN +#if defined(WOLFSSL_KEY_GEN) && (!defined(NO_DH) || !defined(NO_DSA)) static const int USE_BBS = 1; @@ -5077,6 +5077,9 @@ int mp_rand_prime(mp_int* a, int len, WC_RNG* rng, void* heap) return MP_OKAY; } +#endif + +#if defined(WOLFSSL_KEY_GEN) /* computes least common multiple as |a*b|/(a, b) */ int mp_lcm (mp_int * a, mp_int * b, mp_int * c) diff --git a/wolfcrypt/src/sp_arm32.c b/wolfcrypt/src/sp_arm32.c index 93b1144f6..11f187160 100644 --- a/wolfcrypt/src/sp_arm32.c +++ b/wolfcrypt/src/sp_arm32.c @@ -117,18 +117,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -158,12 +158,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -17844,18 +17844,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -17885,12 +17885,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -45041,18 +45041,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -45082,12 +45082,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -65183,18 +65183,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -65224,12 +65224,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -86842,18 +86842,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -86883,12 +86883,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -113037,18 +113037,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -113078,12 +113078,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -142207,18 +142207,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -142248,12 +142248,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; diff --git a/wolfcrypt/src/sp_arm64.c b/wolfcrypt/src/sp_arm64.c index ceed0be07..c61a29e18 100644 --- a/wolfcrypt/src/sp_arm64.c +++ b/wolfcrypt/src/sp_arm64.c @@ -192,18 +192,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -233,12 +233,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -7085,18 +7085,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -7126,12 +7126,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -16688,18 +16688,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -16729,12 +16729,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -22197,18 +22197,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -22238,12 +22238,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -42788,18 +42788,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -42829,12 +42829,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -70145,18 +70145,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -70186,12 +70186,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -114804,18 +114804,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -114845,12 +114845,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; diff --git a/wolfcrypt/src/sp_armthumb.c b/wolfcrypt/src/sp_armthumb.c index f02df823e..ad9f4f4af 100644 --- a/wolfcrypt/src/sp_armthumb.c +++ b/wolfcrypt/src/sp_armthumb.c @@ -117,18 +117,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -158,12 +158,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -30303,18 +30303,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -30344,12 +30344,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -83392,18 +83392,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -83433,12 +83433,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -97804,18 +97804,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -97845,12 +97845,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -109471,18 +109471,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -109512,12 +109512,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -120715,18 +120715,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -120756,12 +120756,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -202497,18 +202497,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -202538,12 +202538,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; diff --git a/wolfcrypt/src/sp_c32.c b/wolfcrypt/src/sp_c32.c index 49838d855..5baa62eee 100644 --- a/wolfcrypt/src/sp_c32.c +++ b/wolfcrypt/src/sp_c32.c @@ -137,18 +137,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 29 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1fffffff; s = 29U - s; @@ -178,12 +178,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 29) { r[j] &= 0x1fffffff; @@ -4898,18 +4898,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 29 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1fffffff; s = 29U - s; @@ -4939,12 +4939,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 29) { r[j] &= 0x1fffffff; @@ -8203,18 +8203,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 28 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xfffffff; s = 28U - s; @@ -8244,12 +8244,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 28) { r[j] &= 0xfffffff; @@ -12546,18 +12546,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 29 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1fffffff; s = 29U - s; @@ -12587,12 +12587,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 29) { r[j] &= 0x1fffffff; @@ -15719,18 +15719,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 26 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x3ffffff; s = 26U - s; @@ -15760,12 +15760,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 26) { r[j] &= 0x3ffffff; @@ -20440,18 +20440,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 29 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1fffffff; s = 29U - s; @@ -20481,12 +20481,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 29) { r[j] &= 0x1fffffff; @@ -27802,18 +27802,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 26 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x3ffffff; s = 26U - s; @@ -27843,12 +27843,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 26) { r[j] &= 0x3ffffff; @@ -35541,18 +35541,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 25 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1ffffff; s = 25U - s; @@ -35582,12 +35582,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 25) { r[j] &= 0x1ffffff; @@ -44460,18 +44460,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 25 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1ffffff; s = 25U - s; @@ -44501,12 +44501,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 25) { r[j] &= 0x1ffffff; diff --git a/wolfcrypt/src/sp_c64.c b/wolfcrypt/src/sp_c64.c index 318ff17c4..bd3b62260 100644 --- a/wolfcrypt/src/sp_c64.c +++ b/wolfcrypt/src/sp_c64.c @@ -138,18 +138,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 61 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1fffffffffffffffL; s = 61U - s; @@ -179,12 +179,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 61) { r[j] &= 0x1fffffffffffffffL; @@ -3417,18 +3417,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 57 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1ffffffffffffffL; s = 57U - s; @@ -3458,12 +3458,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 57) { r[j] &= 0x1ffffffffffffffL; @@ -7090,18 +7090,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 60 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xfffffffffffffffL; s = 60U - s; @@ -7131,12 +7131,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 60) { r[j] &= 0xfffffffffffffffL; @@ -10300,18 +10300,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 57 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1ffffffffffffffL; s = 57U - s; @@ -10341,12 +10341,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 57) { r[j] &= 0x1ffffffffffffffL; @@ -14158,18 +14158,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 59 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x7ffffffffffffffL; s = 59U - s; @@ -14199,12 +14199,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 59) { r[j] &= 0x7ffffffffffffffL; @@ -17227,18 +17227,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 53 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1fffffffffffffL; s = 53U - s; @@ -17268,12 +17268,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 53) { r[j] &= 0x1fffffffffffffL; @@ -21479,18 +21479,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 52 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xfffffffffffffL; s = 52U - s; @@ -21520,12 +21520,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 52) { r[j] &= 0xfffffffffffffL; @@ -28360,18 +28360,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 55 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x7fffffffffffffL; s = 55U - s; @@ -28401,12 +28401,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 55) { r[j] &= 0x7fffffffffffffL; @@ -35938,18 +35938,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 58 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x3ffffffffffffffL; s = 58U - s; @@ -35979,12 +35979,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 58) { r[j] &= 0x3ffffffffffffffL; @@ -43925,18 +43925,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 57 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0x1ffffffffffffffL; s = 57U - s; @@ -43966,12 +43966,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 57) { r[j] &= 0x1ffffffffffffffL; diff --git a/wolfcrypt/src/sp_cortexm.c b/wolfcrypt/src/sp_cortexm.c index 5d6f4eedc..9f4007a7f 100644 --- a/wolfcrypt/src/sp_cortexm.c +++ b/wolfcrypt/src/sp_cortexm.c @@ -126,18 +126,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -167,12 +167,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -5929,18 +5929,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -5970,12 +5970,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -11739,18 +11739,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -11780,12 +11780,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -17010,18 +17010,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -17051,12 +17051,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -25723,18 +25723,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -25764,12 +25764,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -33082,18 +33082,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -33123,12 +33123,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; @@ -42934,18 +42934,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 32 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffff; s = 32U - s; @@ -42975,12 +42975,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 32) { r[j] &= 0xffffffff; diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index 1fbfe5e65..d98bab6fd 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -4774,18 +4774,18 @@ int sp_grow(sp_int* a, int l) int err = MP_OKAY; /* Validate parameter. */ - if (a == NULL) { + if ((a == NULL) || (l < 0)) { err = MP_VAL; } /* Ensure enough words allocated for grow. */ - if ((err == MP_OKAY) && (l > a->size)) { + if ((err == MP_OKAY) && ((unsigned int)l > a->size)) { err = MP_MEM; } if (err == MP_OKAY) { - int i; + unsigned int i; /* Put in zeros up to the new length. */ - for (i = a->used; i < l; i++) { + for (i = a->used; i < (unsigned int)l; i++) { a->dp[i] = 0; } } @@ -4817,7 +4817,7 @@ void sp_clear(sp_int* a) { /* Clear when valid pointer passed in. */ if (a != NULL) { - int i; + unsigned int i; /* Only clear the digits being used. */ for (i = 0; i < a->used; i++) { @@ -4988,7 +4988,7 @@ int sp_exch(sp_int* a, sp_int* b) */ int sp_cond_swap_ct(sp_int* a, sp_int* b, int cnt, int swap) { - int i; + unsigned int i; int err = MP_OKAY; sp_int_digit mask = (sp_int_digit)0 - swap; DECL_SP_INT(t, cnt); @@ -5003,7 +5003,7 @@ int sp_cond_swap_ct(sp_int* a, sp_int* b, int cnt, int swap) #endif /* XOR requested words into temp - mask set when swapping. */ - for (i = 0; i < cnt; i++) { + for (i = 0; i < (unsigned int)cnt; i++) { t->dp[i] = (a->dp[i] ^ b->dp[i]) & mask; } @@ -5012,7 +5012,7 @@ int sp_cond_swap_ct(sp_int* a, sp_int* b, int cnt, int swap) #ifdef WOLFSSL_SP_INT_NEGATIVE a->sign ^= t->sign; #endif - for (i = 0; i < cnt; i++) { + for (i = 0; i < (unsigned int)cnt; i++) { a->dp[i] ^= t->dp[i]; } @@ -5021,7 +5021,7 @@ int sp_cond_swap_ct(sp_int* a, sp_int* b, int cnt, int swap) #ifdef WOLFSSL_SP_INT_NEGATIVE b->sign ^= b->sign; #endif - for (i = 0; i < cnt; i++) { + for (i = 0; i < (unsigned int)cnt; i++) { b->dp[i] ^= t->dp[i]; } } @@ -5082,7 +5082,7 @@ static int _sp_cmp_abs(const sp_int* a, const sp_int* b) /* Starting from most significant word, compare words. * Stop when different and set comparison return. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { if (a->dp[i] > b->dp[i]) { ret = MP_GT; break; @@ -5226,7 +5226,8 @@ int sp_cmp(const sp_int* a, const sp_int* b) *************************/ #if (!defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ - (defined(WOLFSSL_SP_MATH_ALL) && defined(HAVE_ECC)) + (defined(WOLFSSL_SP_MATH_ALL) && defined(HAVE_ECC)) || \ + defined(OPENSSL_EXTRA) /* Check if a bit is set * * When a is NULL, result is 0. @@ -5241,12 +5242,12 @@ int sp_is_bit_set(const sp_int* a, unsigned int b) { int ret = 0; /* Index of word. */ - int i = (int)(b >> SP_WORD_SHIFT); + unsigned int i = b >> SP_WORD_SHIFT; /* Check parameters. */ if ((a != NULL) && (i < a->used)) { /* Shift amount to get bit down to index 0. */ - int s = (int)(b & SP_WORD_MASK); + unsigned int s = b & SP_WORD_MASK; /* Get and mask bit. */ ret = (int)((a->dp[i] >> s) & (sp_int_digit)1); @@ -5272,7 +5273,7 @@ int sp_count_bits(const sp_int* a) /* Check parameter. */ if (a != NULL) { /* Get index of last word. */ - n = a->used - 1; + n = (int)(a->used - 1); /* Don't count leading zeros. */ while ((n >= 0) && (a->dp[n] == 0)) { n--; @@ -5371,12 +5372,12 @@ static #endif /* !HAVE_ECC || HAVE_COMP_KEY */ int sp_cnt_lsb(const sp_int* a) { - int bc = 0; + unsigned int bc = 0; /* Check for number with a value. */ if ((a != NULL) && (!sp_iszero(a))) { - int i; - int j; + unsigned int i; + unsigned int j; /* Count least significant words that are zero. */ for (i = 0; i < a->used && a->dp[i] == 0; i++, bc += SP_WORD_SIZE) { @@ -5444,22 +5445,22 @@ int sp_leading_bit(const sp_int* a) * @param [in] i Index of bit to set. * * @return MP_OKAY on success. - * @return MP_VAL when a is NULL or index is too large. + * @return MP_VAL when a is NULL, index is negative or index is too large. */ int sp_set_bit(sp_int* a, int i) { int err = MP_OKAY; /* Get index of word to set. */ - int w = (int)(i >> SP_WORD_SHIFT); + unsigned int w = (unsigned int)(i >> SP_WORD_SHIFT); /* Check for valid number and and space for bit. */ - if ((a == NULL) || (w >= a->size)) { + if ((a == NULL) || (i < 0) || (w >= a->size)) { err = MP_VAL; } if (err == MP_OKAY) { /* Amount to shift up to set bit in word. */ - int s = (int)(i & (SP_WORD_SIZE - 1)); - int j; + unsigned int s = (unsigned int)(i & (SP_WORD_SIZE - 1)); + unsigned int j; /* Set to zero all unused words up to and including word to have bit * set. @@ -5489,14 +5490,14 @@ int sp_set_bit(sp_int* a, int i) * @param [in] e Exponent. * * @return MP_OKAY on success. - * @return MP_VAL when a is NULL or 2^exponent is too large. + * @return MP_VAL when a is NULL, e is negative or 2^exponent is too large. */ int sp_2expt(sp_int* a, int e) { int err = MP_OKAY; /* Validate parameters. */ - if (a == NULL) { + if ((a == NULL) || (e < 0)) { err = MP_VAL; } if (err == MP_OKAY) { @@ -5577,7 +5578,7 @@ int sp_set_int(sp_int* a, unsigned long n) #if SP_WORD_SIZE < SP_ULONG_BITS } else { - int i; + unsigned int i; /* Assign value word by word. */ for (i = 0; (i < a->size) && (n > 0); i++,n >>= SP_WORD_SIZE) { @@ -5677,10 +5678,10 @@ static int _sp_add_d(const sp_int* a, sp_int_digit d, sp_int* r) * zero. */ if (a->used == 0) { r->dp[0] = d; - r->used = d > 0; + r->used = (d > 0); } else { - int i = 0; + unsigned int i = 0; sp_int_digit a0 = a->dp[0]; /* Set used of result - updated if overflow seen. */ @@ -5742,7 +5743,7 @@ static void _sp_sub_d(const sp_int* a, sp_int_digit d, sp_int* r) r->dp[0] = 0; } else { - int i = 0; + unsigned int i = 0; sp_int_digit a0 = a->dp[0]; r->dp[0] = a0 - d; @@ -5913,10 +5914,10 @@ int sp_sub_d(const sp_int* a, sp_int_digit d, sp_int* r) * @return MP_OKAY on success. * @return MP_VAL when result is too large for sp_int. */ -static int _sp_mul_d(const sp_int* a, sp_int_digit d, sp_int* r, int o) +static int _sp_mul_d(const sp_int* a, sp_int_digit d, sp_int* r, unsigned int o) { int err = MP_OKAY; - int i; + unsigned int i; #ifndef SQR_MUL_ASM sp_int_word t = 0; #else @@ -6165,7 +6166,6 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo, */ static void _sp_div_3(const sp_int* a, sp_int* r, sp_int_digit* rem) { - int i; #ifndef SQR_MUL_ASM sp_int_word t; sp_int_digit tt; @@ -6184,6 +6184,8 @@ static void _sp_div_3(const sp_int* a, sp_int* r, sp_int_digit* rem) /* Check whether only mod value needed. */ if (r == NULL) { + unsigned int i; + /* 2^2 mod 3 = 4 mod 3 = 1. * => 2^(2*n) mod 3 = (2^2 mod 3)^n mod 3 = 1^n mod 3 = 1 * => (2^(2*n) * x) mod 3 = (2^(2*n) mod 3) * (x mod 3) = x mod 3 @@ -6223,8 +6225,10 @@ static void _sp_div_3(const sp_int* a, sp_int* r, sp_int_digit* rem) } /* At least result needed - remainder is calculated anyway. */ else { + int i; + /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word. */ t = ((sp_int_word)tr << SP_WORD_SIZE) | a->dp[i]; @@ -6285,7 +6289,7 @@ static void _sp_div_10(const sp_int* a, sp_int* r, sp_int_digit* rem) /* Check whether only mod value needed. */ if (r == NULL) { /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word. */ t = ((sp_int_word)tr << SP_WORD_SIZE) | a->dp[i]; @@ -6311,7 +6315,7 @@ static void _sp_div_10(const sp_int* a, sp_int* r, sp_int_digit* rem) /* At least result needed - remainder is calculated anyway. */ else { /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word. */ t = ((sp_int_word)tr << SP_WORD_SIZE) | a->dp[i]; @@ -6375,7 +6379,7 @@ static void _sp_div_small(const sp_int* a, sp_int_digit d, sp_int* r, /* Check whether only mod value needed. */ if (r == NULL) { /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word. */ t = ((sp_int_word)tr << SP_WORD_SIZE) | a->dp[i]; @@ -6402,7 +6406,7 @@ static void _sp_div_small(const sp_int* a, sp_int_digit d, sp_int* r, #endif /* !WOLFSSL_SP_SMALL */ { /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word. */ t = ((sp_int_word)tr << SP_WORD_SIZE) | a->dp[i]; @@ -6474,7 +6478,7 @@ static void _sp_div_d(const sp_int* a, sp_int_digit d, sp_int* r, sp_int_digit t; /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word and divide. */ t = sp_div_word((sp_int_digit)w, a->dp[i], d); @@ -6589,7 +6593,7 @@ static void _sp_mod_d(const sp_int* a, const sp_int_digit d, sp_int_digit* r) #endif /* Divide starting at most significant word down to least. */ - for (i = a->used - 1; i >= 0; i--) { + for (i = (int)(a->used - 1); i >= 0; i--) { #ifndef SQR_MUL_ASM /* Combine remainder from last operation with this word and divide. */ sp_int_digit t = sp_div_word((sp_int_digit)w, a->dp[i], d); @@ -6720,7 +6724,7 @@ int sp_div_2_mod_ct(const sp_int* a, const sp_int* m, sp_int* r) #endif /* Mask to apply to modulus. */ sp_int_digit mask = (sp_int_digit)0 - (a->dp[0] & 1); - int i; + unsigned int i; #if 0 sp_print(a, "a"); @@ -6811,7 +6815,7 @@ int sp_div_2(const sp_int* a, sp_int* r) #endif if (err == MP_OKAY) { - int i; + unsigned int i; /* Shift down each word by 1 and include bottom bit of next at top. */ for (i = 0; i < a->used - 1; i++) { @@ -6850,7 +6854,7 @@ int sp_div_2(const sp_int* a, sp_int* r) */ static int _sp_add_off(const sp_int* a, const sp_int* b, sp_int* r, int o) { - int i = 0; + unsigned int i = 0; #ifndef SQR_MUL_ASM sp_int_word t = 0; #else @@ -6860,7 +6864,7 @@ static int _sp_add_off(const sp_int* a, const sp_int* b, sp_int* r, int o) #endif #ifdef SP_MATH_NEED_ADD_OFF - int j; + unsigned int j; /* Copy a into result up to offset. */ for (; (i < o) && (i < a->used); i++) { @@ -6999,10 +7003,11 @@ static int _sp_add_off(const sp_int* a, const sp_int* b, sp_int* r, int o) * * @return MP_OKAY on success. */ -static int _sp_sub_off(const sp_int* a, const sp_int* b, sp_int* r, int o) +static int _sp_sub_off(const sp_int* a, const sp_int* b, sp_int* r, + unsigned int o) { - int i = 0; - int j; + unsigned int i = 0; + unsigned int j; #ifndef SQR_MUL_ASM sp_int_sword t = 0; #else @@ -7271,10 +7276,10 @@ int sp_submod(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r) { #ifndef WOLFSSL_SP_INT_NEGATIVE int err = MP_OKAY; - int used = ((a == NULL) || (b == NULL) || (m == NULL)) ? 1 : - ((a->used >= m->used) ? - ((a->used >= b->used) ? (a->used + 1) : (b->used + 1)) : - ((b->used >= m->used)) ? (b->used + 1) : (m->used + 1)); + unsigned int used = ((a == NULL) || (b == NULL) || (m == NULL)) ? 1 : + ((a->used >= m->used) ? + ((a->used >= b->used) ? (a->used + 1) : (b->used + 1)) : + ((b->used >= m->used)) ? (b->used + 1) : (m->used + 1)); DECL_SP_INT_ARRAY(t, used, 2); /* Validate parameters. */ @@ -7329,8 +7334,8 @@ int sp_submod(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r) #else /* WOLFSSL_SP_INT_NEGATIVE */ int err = MP_OKAY; - int used = ((a == NULL) || (b == NULL)) ? 1 : - ((a->used >= b->used) ? a->used + 1 : b->used + 1); + unsigned int used = ((a == NULL) || (b == NULL)) ? 1 : + ((a->used >= b->used) ? a->used + 1 : b->used + 1); DECL_SP_INT(t, used); /* Validate parameters. */ @@ -7399,7 +7404,7 @@ int sp_addmod_ct(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r) sp_int_digit mask; sp_int_digit mask_a = (sp_int_digit)-1; sp_int_digit mask_b = (sp_int_digit)-1; - int i; + unsigned int i; /* Check result is as big as modulus. */ if (m->used > r->size) { @@ -7561,7 +7566,7 @@ int sp_submod_ct(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r) sp_int_digit mask; sp_int_digit mask_a = (sp_int_digit)-1; sp_int_digit mask_b = (sp_int_digit)-1; - int i; + unsigned int i; /* Check result is as big as modulus plus one digit. */ if (m->used > r->size) { @@ -7677,18 +7682,18 @@ int sp_submod_ct(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r) * @param [in] s Number of digits to shift. * * @return MP_OKAY on success. - * @return MP_VAL when a is NULL or the result is too big to fit in an SP. + * @return MP_VAL when a is NULL, s is negative or the result is too big. */ int sp_lshd(sp_int* a, int s) { int err = MP_OKAY; /* Validate parameters. */ - if (a == NULL) { + if ((a == NULL) || (s < 0)) { err = MP_VAL; } /* Ensure number has enough digits for operation. */ - if ((err == MP_OKAY) && (a->used + s > a->size)) { + if ((err == MP_OKAY) && (a->used + (unsigned int)s > a->size)) { err = MP_VAL; } if (err == MP_OKAY) { @@ -7697,7 +7702,7 @@ int sp_lshd(sp_int* a, int s) /* Back fill with zeros. */ XMEMSET(a->dp, 0, s * SP_WORD_SIZEOF); /* Update used. */ - a->used += s; + a->used += (unsigned int)s; /* Remove leading zeros. */ sp_clamp(a); } @@ -7718,6 +7723,7 @@ int sp_lshd(sp_int* a, int s) * @param [in] n Number of bits to shift left. * * @return MP_OKAY on success. + * @return MP_VAL when the result is too big. */ static int sp_lshb(sp_int* a, int n) { @@ -7725,8 +7731,7 @@ static int sp_lshb(sp_int* a, int n) if (a->used != 0) { /* Calculate number of digits to shift. */ - int s = n >> SP_WORD_SHIFT; - int i; + unsigned int s = n >> SP_WORD_SHIFT; /* Ensure number has enough digits for result. */ if (a->used + s >= a->size) { @@ -7737,6 +7742,8 @@ static int sp_lshb(sp_int* a, int n) n &= SP_WORD_MASK; /* Check whether this is a complicated case. */ if (n != 0) { + unsigned int i; + /* Shift up starting at most significant digit. */ /* Get new most significant digit. */ sp_int_digit v = a->dp[a->used - 1] >> (SP_WORD_SIZE - n); @@ -7772,25 +7779,24 @@ static int sp_lshb(sp_int* a, int n) * (!NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY) */ #ifdef WOLFSSL_SP_MATH_ALL -/* Shift a right by n digits into r: r = a >> (n * SP_WORD_SIZE) +/* Shift a right by c digits: a = a >> (n * SP_WORD_SIZE) * - * @param [in] a SP integer to shift. - * @param [in] n Number of digits to shift. - * @param [out] r SP integer to store result in. + * @param [in, out] a SP integer to shift. + * @param [in] c Number of digits to shift. */ void sp_rshd(sp_int* a, int c) { /* Do shift if we have an SP int. */ - if (a != NULL) { + if ((a != NULL) && (c > 0)) { /* Make zero if shift removes all digits. */ - if (c >= a->used) { + if ((unsigned int)c >= a->used) { _sp_zero(a); } else { - int i; + unsigned int i; /* Update used digits count. */ - a->used -= c; + a->used -= (unsigned int)c; /* Move digits down. */ for (i = 0; i < a->used; i++, c++) { a->dp[i] = a->dp[c]; @@ -7813,7 +7819,7 @@ int sp_rshb(const sp_int* a, int n, sp_int* r) { int err = MP_OKAY; /* Number of digits to shift down. */ - int i = n >> SP_WORD_SHIFT; + unsigned int i = (unsigned int)(n >> SP_WORD_SHIFT); if ((a == NULL) || (n < 0)) { err = MP_VAL; @@ -7827,7 +7833,7 @@ int sp_rshb(const sp_int* a, int n, sp_int* r) err = MP_VAL; } else if (err == MP_OKAY) { - int j; + unsigned int j; /* Number of bits to shift in digits. */ n &= SP_WORD_SIZE - 1; @@ -7874,7 +7880,7 @@ int sp_rshb(const sp_int* a, int n, sp_int* r) !defined(WOLFSSL_RSA_PUBLIC_ONLY)) static void _sp_div_same_size(sp_int* a, const sp_int* d, sp_int* r) { - int i; + unsigned int i; /* Compare top digits of dividend with those of divisor up to last. */ for (i = d->used - 1; i > 0; i--) { @@ -7912,12 +7918,12 @@ static void _sp_div_same_size(sp_int* a, const sp_int* d, sp_int* r) static int _sp_div(sp_int* a, const sp_int* d, sp_int* r, sp_int* trial) { int err = MP_OKAY; - int i; + unsigned int i; #ifdef WOLFSSL_SP_SMALL int c; #else - int j; - int o; + unsigned int j; + unsigned int o; #ifndef SQR_MUL_ASM sp_int_sword sw; #else @@ -8401,9 +8407,9 @@ int sp_mod(const sp_int* a, const sp_int* m, sp_int* r) static int _sp_mul_nxn(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; int j; - int k; + unsigned int k; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) sp_int_digit* t = NULL; #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ @@ -8433,7 +8439,7 @@ static int _sp_mul_nxn(const sp_int* a, const sp_int* b, sp_int* r) h = 0; o = 0; for (k = 1; k <= a->used - 1; k++) { - j = k; + j = (int)k; dp = a->dp; for (; j >= 0; dp++, j--) { SP_ASM_MUL_ADD(l, h, o, dp[0], b->dp[j]); @@ -8480,9 +8486,9 @@ static int _sp_mul_nxn(const sp_int* a, const sp_int* b, sp_int* r) static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; int j; - int k; + unsigned int k; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) sp_int_digit* t = NULL; #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ @@ -8512,7 +8518,7 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) o = 0; for (k = 1; k <= b->used - 1; k++) { i = 0; - j = k; + j = (int)k; for (; (i < a->used) && (j >= 0); i++, j--) { SP_ASM_MUL_ADD(l, h, o, a->dp[i], b->dp[j]); } @@ -8522,7 +8528,7 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) o = 0; } for (; k <= (a->used - 1) + (b->used - 1); k++) { - j = b->used - 1; + j = (int)(b->used - 1); i = k - j; for (; (i < a->used) && (j >= 0); i++, j--) { SP_ASM_MUL_ADD(l, h, o, a->dp[i], b->dp[j]); @@ -8558,9 +8564,9 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; int j; - int k; + unsigned int k; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) sp_int_digit* t = NULL; #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ @@ -8595,7 +8601,7 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) for (k = 1; k <= (a->used - 1) + (b->used - 1); k++) { i = k - (b->used - 1); i &= (((unsigned int)i >> (sizeof(i) * 8 - 1)) - 1U); - j = k - i; + j = (int)(k - i); for (; (i < a->used) && (j >= 0); i++, j--) { w = (sp_int_word)a->dp[i] * b->dp[j]; l += (sp_int_digit)w; @@ -8632,7 +8638,7 @@ static int _sp_mul(const sp_int* a, const sp_int* b, sp_int* r) #endif #ifndef WOLFSSL_SP_SMALL -#if !defined(WOLFSSL_SP_MATH) && defined(HAVE_ECC) +#if !defined(WOLFSSL_HAVE_SP_ECC) && defined(HAVE_ECC) #if SP_WORD_SIZE == 64 #ifndef SQR_MUL_ASM /* Multiply a by b and store in r: r = a * b @@ -9330,7 +9336,7 @@ static int _sp_mul_12(const sp_int* a, const sp_int* b, sp_int* r) } #endif /* SQR_MUL_ASM */ #endif /* SP_WORD_SIZE == 32 */ -#endif /* !WOLFSSL_SP_MATH && HAVE_ECC */ +#endif /* !WOLFSSL_HAVE_SP_ECC && HAVE_ECC */ #if defined(SQR_MUL_ASM) && (defined(WOLFSSL_SP_INT_LARGE_COMBA) || \ (!defined(WOLFSSL_SP_MATH) && defined(WOLFCRYPT_HAVE_SAKKE) && \ @@ -10579,7 +10585,7 @@ static int _sp_mul_24(const sp_int* a, const sp_int* b, sp_int* r) static int _sp_mul_32(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* a1; @@ -10745,7 +10751,7 @@ static int _sp_mul_32(const sp_int* a, const sp_int* b, sp_int* r) static int _sp_mul_48(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* a1; @@ -10911,7 +10917,7 @@ static int _sp_mul_48(const sp_int* a, const sp_int* b, sp_int* r) static int _sp_mul_64(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* a1; @@ -11077,7 +11083,7 @@ static int _sp_mul_64(const sp_int* a, const sp_int* b, sp_int* r) static int _sp_mul_96(const sp_int* a, const sp_int* b, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* a1; @@ -11275,7 +11281,7 @@ int sp_mul(const sp_int* a, const sp_int* b, sp_int* r) } else #ifndef WOLFSSL_SP_SMALL -#if !defined(WOLFSSL_SP_MATH) && defined(HAVE_ECC) +#if !defined(WOLFSSL_HAVE_SP_ECC) && defined(HAVE_ECC) #if SP_WORD_SIZE == 64 if ((a->used == 4) && (b->used == 4)) { err = _sp_mul_4(a, b, r); @@ -11488,8 +11494,8 @@ int sp_mulmod(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r) * @return MP_OKAY on success. * @return MP_VAL when no inverse. */ -static int _sp_invmod(const sp_int* a, const sp_int* m, sp_int* u, sp_int* v, - sp_int* b, sp_int* c) +static int _sp_invmod_bin(const sp_int* a, const sp_int* m, sp_int* u, + sp_int* v, sp_int* b, sp_int* c) { int err = MP_OKAY; @@ -11719,12 +11725,12 @@ static int _sp_invmod_div(const sp_int* a, const sp_int* m, sp_int* x, * @param [out] r SP integer to hold result. r cannot be m. * * @return MP_OKAY on success. - * @return MP_VAL when a, m or r is NULL; a or m is zero; a and m are even or - * m is negative. + * @return MP_VAL when m is even and a divides m evenly. * @return MP_MEM when dynamic memory allocation fails. */ -int sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) +static int _sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) { + int err = MP_OKAY; sp_int* u = NULL; sp_int* v = NULL; @@ -11732,19 +11738,6 @@ int sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) DECL_SP_INT_ARRAY(t, (m == NULL) ? 1 : (m->used + 1), 3); DECL_SP_INT(c, (m == NULL) ? 1 : (2 * m->used + 1)); - if ((a == NULL) || (m == NULL) || (r == NULL) || (r == m)) { - err = MP_VAL; - } - if ((err == MP_OKAY) && (m->used * 2 > r->size)) { - err = MP_VAL; - } - -#ifdef WOLFSSL_SP_INT_NEGATIVE - if ((err == MP_OKAY) && (m->sign == MP_NEG)) { - err = MP_VAL; - } -#endif - /* Allocate SP ints: * - x3 one word larger than modulus * - x1 one word longer than twice modulus used @@ -11756,29 +11749,6 @@ int sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) v = t[1]; b = t[2]; /* c allocated separately and larger for even mod case. */ - - /* Ensure number is less than modulus. */ - if (_sp_cmp_abs(a, m) != MP_LT) { - err = sp_mod(a, m, r); - a = r; - } - } - -#ifdef WOLFSSL_SP_INT_NEGATIVE - if ((err == MP_OKAY) && (a->sign == MP_NEG)) { - /* Make 'a' positive */ - err = sp_add(m, a, r); - a = r; - } -#endif - - /* 0 != n*m + 1 (+ve m), r*a mod 0 is always 0 (never 1) */ - if ((err == MP_OKAY) && (sp_iszero(a) || sp_iszero(m))) { - err = MP_VAL; - } - /* r*2*x != n*2*y + 1 for integer x,y */ - if ((err == MP_OKAY) && sp_iseven(a) && sp_iseven(m)) { - err = MP_VAL; } if (err == MP_OKAY) { @@ -11823,7 +11793,7 @@ int sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) else #endif { - err = _sp_invmod(ma, mm, u, v, b, c); + err = _sp_invmod_bin(ma, mm, u, v, b, c); } } @@ -11851,6 +11821,69 @@ int sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) FREE_SP_INT_ARRAY(t, NULL); return err; } + +/* Calculates the multiplicative inverse in the field. + * Right-shift Algorithm or Extended Euclidean Algorithm. NOT constant time. + * + * r*a = x*m + 1 + * + * @param [in] a SP integer to find inverse of. + * @param [in] m SP integer this is the modulus. + * @param [out] r SP integer to hold result. r cannot be m. + * + * @return MP_OKAY on success. + * @return MP_VAL when a, m or r is NULL; a or m is zero; a and m are even or + * m is negative. + * @return MP_MEM when dynamic memory allocation fails. + */ +int sp_invmod(const sp_int* a, const sp_int* m, sp_int* r) +{ + int err = MP_OKAY; + + if ((a == NULL) || (m == NULL) || (r == NULL) || (r == m)) { + err = MP_VAL; + } + if ((err == MP_OKAY) && (m->used * 2 > r->size)) { + err = MP_VAL; + } + +#ifdef WOLFSSL_SP_INT_NEGATIVE + if ((err == MP_OKAY) && (m->sign == MP_NEG)) { + err = MP_VAL; + } +#endif + + if (err == MP_OKAY) { + /* Ensure number is less than modulus. */ + if (_sp_cmp_abs(a, m) != MP_LT) { + err = sp_mod(a, m, r); + a = r; + } + } + +#ifdef WOLFSSL_SP_INT_NEGATIVE + if ((err == MP_OKAY) && (a->sign == MP_NEG)) { + /* Make 'a' positive */ + err = sp_add(m, a, r); + a = r; + } +#endif + + /* 0 != n*m + 1 (+ve m), r*a mod 0 is always 0 (never 1) */ + if ((err == MP_OKAY) && (sp_iszero(a) || sp_iszero(m))) { + err = MP_VAL; + } + /* r*2*x != n*2*y + 1 for integer x,y */ + if ((err == MP_OKAY) && sp_iseven(a) && sp_iseven(m)) { + err = MP_VAL; + } + + if (err == MP_OKAY) { + err = _sp_invmod(a, m, r); + } + + return err; +} #endif /* WOLFSSL_SP_INVMOD */ #ifdef WOLFSSL_SP_INVMOD_MONT_CT @@ -12632,7 +12665,7 @@ static int _sp_exptmod_base_2(const sp_int* e, int digits, const sp_int* m, #else DECL_SP_INT(tr, m->used * 2 + 1); #endif - int useMont = m->used > 1; + int useMont = (m->used > 1); #if 0 sp_print_int(2, "a"); @@ -12811,15 +12844,16 @@ static int _sp_exptmod_base_2(const sp_int* e, int digits, const sp_int* m, * * Error returned when parameters r == e or r == m and base >= modulus. * - * @param [in] b SP integer that is the base. - * @param [in] e SP integer that is the exponent. - * @param [in] bits Number of bits in exponent to use. May be greater than - * count of bits in e. - * @param [in] m SP integer that is the modulus. - * @param [out] r SP integer to hold result. + * @param [in] b SP integer that is the base. + * @param [in] e SP integer that is the exponent. + * @param [in] digits Number of digits in exponent to use. May be greater + * than count of digits in e. + * @param [in] m SP integer that is the modulus. + * @param [out] r SP integer to hold result. * * @return MP_OKAY on success. - * @return MP_VAL when b, e, m or r is NULL; or m <= 0 or e is negative. + * @return MP_VAL when b, e, m or r is NULL, digits is negative, or m <= 0 or + * e is negative. * @return MP_MEM when dynamic memory allocation fails. */ int sp_exptmod_ex(const sp_int* b, const sp_int* e, int digits, const sp_int* m, @@ -12831,7 +12865,8 @@ int sp_exptmod_ex(const sp_int* b, const sp_int* e, int digits, const sp_int* m, int bBits = sp_count_bits(b); int eBits = sp_count_bits(e); - if ((b == NULL) || (e == NULL) || (m == NULL) || (r == NULL)) { + if ((b == NULL) || (e == NULL) || (m == NULL) || (r == NULL) || + (digits < 0)) { err = MP_VAL; } @@ -13006,7 +13041,7 @@ int sp_exptmod(const sp_int* b, const sp_int* e, const sp_int* m, sp_int* r) } SAVE_VECTOR_REGISTERS(err = _svr_ret;); if (err == MP_OKAY) { - err = sp_exptmod_ex(b, e, e->used, m, r); + err = sp_exptmod_ex(b, e, (int)e->used, m, r); } RESTORE_VECTOR_REGISTERS(); return err; @@ -13494,7 +13529,7 @@ int sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m, sp_int* r) } #if !defined(WOLFSSL_RSA_VERIFY_ONLY) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) else if (mp_iseven(m)) { - err = _sp_exptmod_ex(b, e, e->used * SP_WORD_SIZE, m, r); + err = _sp_exptmod_ex(b, e, (int)(e->used * SP_WORD_SIZE), m, r); } #endif else { @@ -13525,13 +13560,13 @@ int sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m, sp_int* r) * @param [out] rem SP integer to hold remainder. * * @return MP_OKAY on success. - * @return MP_VAL when a is NULL. + * @return MP_VAL when a is NULL or e is negative. */ int sp_div_2d(const sp_int* a, int e, sp_int* r, sp_int* rem) { int err = MP_OKAY; - if (a == NULL) { + if ((a == NULL) || (e < 0)) { err = MP_VAL; } @@ -13555,7 +13590,8 @@ int sp_div_2d(const sp_int* a, int e, sp_int* r, sp_int* rem) } if ((err == MP_OKAY) && (rem != NULL)) { /* Set used and mask off top digit of remainder. */ - rem->used = (e + SP_WORD_SIZE - 1) >> SP_WORD_SHIFT; + rem->used = ((unsigned int)e + SP_WORD_SIZE - 1) >> + SP_WORD_SHIFT; e &= SP_WORD_MASK; if (e > 0) { rem->dp[rem->used - 1] &= ((sp_int_digit)1 << e) - 1; @@ -13582,14 +13618,15 @@ int sp_div_2d(const sp_int* a, int e, sp_int* r, sp_int* rem) * @param [out] r SP integer to hold result. * * @return MP_OKAY on success. - * @return MP_VAL when a or r is NULL. + * @return MP_VAL when a or r is NULL, e is negative or e is too large for + * result. */ int sp_mod_2d(const sp_int* a, int e, sp_int* r) { int err = MP_OKAY; - int digits = (e + SP_WORD_SIZE - 1) >> SP_WORD_SHIFT; + unsigned int digits = ((unsigned int)e + SP_WORD_SIZE - 1) >> SP_WORD_SHIFT; - if ((a == NULL) || (r == NULL)) { + if ((a == NULL) || (r == NULL) || (e < 0)) { err = MP_VAL; } if ((err == MP_OKAY) && (digits > r->size)) { @@ -13616,7 +13653,7 @@ int sp_mod_2d(const sp_int* a, int e, sp_int* r) { #ifdef WOLFSSL_SP_INT_NEGATIVE if (a->sign == MP_NEG) { - int i; + unsigned int i; sp_int_digit carry = 0; /* Negate value. */ @@ -13654,20 +13691,21 @@ int sp_mod_2d(const sp_int* a, int e, sp_int* r) * @param [out] r SP integer to hold result. * * @return MP_OKAY on success. - * @return MP_VAL when a or r is NULL, or result is too big for fixed data - * length. + * @return MP_VAL when a or r is NULL, e is negative, or result is too big for + * result size. */ int sp_mul_2d(const sp_int* a, int e, sp_int* r) { int err = MP_OKAY; /* Validate parameters. */ - if ((a == NULL) || (r == NULL)) { + if ((a == NULL) || (r == NULL) || (e < 0)) { err = MP_VAL; } /* Ensure result has enough allocated digits for result. */ - if ((err == MP_OKAY) && (sp_count_bits(a) + e > r->size * SP_WORD_SIZE)) { + if ((err == MP_OKAY) && + ((unsigned int)(sp_count_bits(a) + e) > r->size * SP_WORD_SIZE)) { err = MP_VAL; } @@ -13717,9 +13755,9 @@ int sp_mul_2d(const sp_int* a, int e, sp_int* r) static int _sp_sqr(const sp_int* a, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; int j; - int k; + unsigned int k; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) sp_int_digit* t = NULL; #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ @@ -13759,7 +13797,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r) o = 0; for (k = 1; k < (a->used + 1) / 2; k++) { i = k; - j = k - 1; + j = (int)(k - 1); for (; (j >= 0); i++, j--) { SP_ASM_MUL_ADD2(l, h, o, a->dp[i], a->dp[j]); } @@ -13770,7 +13808,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r) SP_ASM_SQR_ADD(l, h, o, a->dp[k]); i = k + 1; - j = k - 1; + j = (int)(k - 1); for (; (j >= 0); i++, j--) { SP_ASM_MUL_ADD2(l, h, o, a->dp[i], a->dp[j]); } @@ -13781,7 +13819,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r) } for (; k < a->used; k++) { i = k; - j = k - 1; + j = (int)(k - 1); for (; (i < a->used); i++, j--) { SP_ASM_MUL_ADD2(l, h, o, a->dp[i], a->dp[j]); } @@ -13792,7 +13830,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r) SP_ASM_SQR_ADD(l, h, o, a->dp[k]); i = k + 1; - j = k - 1; + j = (int)(k - 1); for (; (i < a->used); i++, j--) { SP_ASM_MUL_ADD2(l, h, o, a->dp[i], a->dp[j]); } @@ -13829,9 +13867,9 @@ static int _sp_sqr(const sp_int* a, sp_int* r) static int _sp_sqr(const sp_int* a, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; int j; - int k; + unsigned int k; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) sp_int_digit* t = NULL; #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ @@ -13865,8 +13903,8 @@ static int _sp_sqr(const sp_int* a, sp_int* r) #endif for (k = 1; k <= (a->used - 1) * 2; k++) { i = k / 2; - j = k - i; - if (i == j) { + j = (int)(k - i); + if (i == (unsigned int)j) { w = (sp_int_word)a->dp[i] * a->dp[j]; l += (sp_int_digit)w; h += (sp_int_digit)(w >> SP_WORD_SIZE); @@ -13922,7 +13960,7 @@ static int _sp_sqr(const sp_int* a, sp_int* r) #endif /* !WOLFSSL_SP_MATH || !WOLFSSL_SP_SMALL */ #ifndef WOLFSSL_SP_SMALL -#if !defined(WOLFSSL_SP_MATH) && defined(HAVE_ECC) +#if !defined(WOLFSSL_HAVE_SP_ECC) && defined(HAVE_ECC) #if SP_WORD_SIZE == 64 #ifndef SQR_MUL_ASM /* Square a and store in r. r = a * a @@ -14528,7 +14566,7 @@ static int _sp_sqr_12(const sp_int* a, sp_int* r) } #endif /* SQR_MUL_ASM */ #endif /* SP_WORD_SIZE == 32 */ -#endif /* !WOLFSSL_SP_MATH && HAVE_ECC */ +#endif /* !WOLFSSL_HAVE_SP_ECC && HAVE_ECC */ #if defined(SQR_MUL_ASM) && (defined(WOLFSSL_SP_INT_LARGE_COMBA) || \ (!defined(WOLFSSL_SP_MATH) && defined(WOLFCRYPT_HAVE_SAKKE) && \ @@ -15450,7 +15488,7 @@ static int _sp_sqr_24(const sp_int* a, sp_int* r) static int _sp_sqr_32(const sp_int* a, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* z0; @@ -15589,7 +15627,7 @@ static int _sp_sqr_32(const sp_int* a, sp_int* r) static int _sp_sqr_48(const sp_int* a, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* z0; @@ -15728,7 +15766,7 @@ static int _sp_sqr_48(const sp_int* a, sp_int* r) static int _sp_sqr_64(const sp_int* a, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* z0; @@ -15867,7 +15905,7 @@ static int _sp_sqr_64(const sp_int* a, sp_int* r) static int _sp_sqr_96(const sp_int* a, sp_int* r) { int err = MP_OKAY; - int i; + unsigned int i; sp_int_digit l; sp_int_digit h; sp_int* z0; @@ -16032,7 +16070,7 @@ int sp_sqr(const sp_int* a, sp_int* r) } else #ifndef WOLFSSL_SP_SMALL -#if !defined(WOLFSSL_SP_MATH) && defined(HAVE_ECC) +#if !defined(WOLFSSL_HAVE_SP_ECC) && defined(HAVE_ECC) #if SP_WORD_SIZE == 64 if (a->used == 4) { err = _sp_sqr_4(a, r); @@ -16228,7 +16266,7 @@ int sp_sqrmod(const sp_int* a, const sp_int* m, sp_int* r) static int _sp_mont_red(sp_int* a, const sp_int* m, sp_int_digit mp) { #if !defined(SQR_MUL_ASM) - int i; + unsigned int i; int bits; sp_int_word w; sp_int_digit mu; @@ -16274,7 +16312,7 @@ static int _sp_mont_red(sp_int* a, const sp_int* m, sp_int_digit mp) /* 2. For i = 0..NumDigits(m)-1 */ for (i = 0; i < m->used; i++) { - int j; + unsigned int j; /* 2.1. mu = (mp * DigitMask(a, i)) & WORD_MASK */ mu = mp * a->dp[i]; @@ -16330,8 +16368,8 @@ static int _sp_mont_red(sp_int* a, const sp_int* m, sp_int_digit mp) return MP_OKAY; #else /* !SQR_MUL_ASM */ - int i; - int j; + unsigned int i; + unsigned int j; int bits; sp_int_digit mu; sp_int_digit o; @@ -16751,7 +16789,7 @@ int sp_mont_setup(const sp_int* m, sp_int_digit* rho) int sp_mont_norm(sp_int* norm, const sp_int* m) { int err = MP_OKAY; - int bits = 0; + unsigned int bits = 0; /* Validate parameters. */ if ((norm == NULL) || (m == NULL)) { @@ -16759,7 +16797,7 @@ int sp_mont_norm(sp_int* norm, const sp_int* m) } if (err == MP_OKAY) { /* Find top bit and ensure norm has enough space. */ - bits = sp_count_bits(m); + bits = (unsigned int)sp_count_bits(m); if (bits >= norm->size * SP_WORD_SIZE) { err = MP_VAL; } @@ -16853,12 +16891,12 @@ int sp_read_unsigned_bin(sp_int* a, const byte* in, word32 inSz) /* Data endian matches respresentation of number. * Directly copy if we don't have alignment issues. */ - for (i = inSz-1; i > SP_WORD_SIZEOF-1; i -= SP_WORD_SIZEOF) { + for (i = (int)(inSz-1); i > SP_WORD_SIZEOF-1; i -= SP_WORD_SIZEOF) { a->dp[j++] = *(sp_int_digit*)(in + i - (SP_WORD_SIZEOF - 1)); } #else /* Construct digit from required number of bytes. */ - for (i = inSz-1; i >= SP_WORD_SIZEOF - 1; i -= SP_WORD_SIZEOF) { + for (i = (int)(inSz-1); i >= SP_WORD_SIZEOF - 1; i -= SP_WORD_SIZEOF) { a->dp[j] = ((sp_int_digit)in[i - 0] << 0) #if SP_WORD_SIZE >= 16 | ((sp_int_digit)in[i - 1] << 8) @@ -16953,7 +16991,7 @@ int sp_to_unsigned_bin_len(const sp_int* a, byte* out, int outSz) int err = MP_OKAY; /* Validate parameters. */ - if ((a == NULL) || (out == NULL)) { + if ((a == NULL) || (out == NULL) || (outSz < 0)) { err = MP_VAL; } @@ -16963,7 +17001,7 @@ int sp_to_unsigned_bin_len(const sp_int* a, byte* out, int outSz) int j = outSz - 1; if (!sp_iszero(a)) { - int i; + unsigned int i; /* Put each digit in. */ for (i = 0; (j >= 0) && (i < a->used); i++) { @@ -16989,14 +17027,14 @@ int sp_to_unsigned_bin_len(const sp_int* a, byte* out, int outSz) } } #else - if ((err == MP_OKAY) && (outSz < a->used)) { + if ((err == MP_OKAY) && ((unsigned int)outSz < a->used)) { err = MP_VAL; } if (err == MP_OKAY) { - int i; + unsigned int i; int j; - XMEMSET(out, 0, outSz - a->used); + XMEMSET(out, 0, (unsigned int)outSz - a->used); for (i = 0, j = outSz - 1; i < a->used; i++, j--) { out[j] = a->dp[i]; @@ -17054,8 +17092,8 @@ static int _sp_read_radix_16(sp_int* a, const char* in) { int err = MP_OKAY; int i; - int s = 0; - int j = 0; + unsigned int s = 0; + unsigned int j = 0; sp_int_digit d; /* Make all nibbles in digit 0. */ @@ -17283,7 +17321,7 @@ int sp_tohex(const sp_int* a, char* str) #endif /* WOLFSSL_SP_INT_NEGATIVE */ /* Start at last digit - most significant digit. */ - i = a->used - 1; + i = (int)(a->used - 1); d = a->dp[i]; #ifndef WC_DISABLE_RADIX_ZERO_PAD /* Find highest non-zero byte in most-significant word. */ @@ -17576,7 +17614,8 @@ int sp_radix_size(const sp_int* a, int radix, int* size) /* Generate a random prime for RSA only. * * @param [out] r SP integer to hold result. - * @param [in] len Number of bytes in prime. + * @param [in] len Number of bytes in prime. Use -ve to indicate the two + * lowest bits must be set. * @param [in] rng Random number generator. * @param [in] heap Heap hint. Unused. * @@ -17593,7 +17632,7 @@ int sp_rand_prime(sp_int* r, int len, WC_RNG* rng, void* heap) #if defined(WOLFSSL_SP_MATH_ALL) || defined(BIG_ENDIAN_ORDER) int bits = 0; #endif /* WOLFSSL_SP_MATH_ALL */ - int digits = 0; + unsigned int digits = 0; (void)heap; @@ -17690,7 +17729,7 @@ int sp_rand_prime(sp_int* r, int len, WC_RNG* rng, void* heap) #ifdef BIG_ENDIAN_ORDER /* Bytes were put into wrong place when less than full digit. */ if (bits != 0) { - r->dp[r->used-1] >>= SP_WORD_SIZE - bits; + r->dp[r->used - 1] >>= SP_WORD_SIZE - bits; } #endif /* BIG_ENDIAN_ORDER */ #ifdef WOLFSSL_SP_MATH_ALL @@ -18089,9 +18128,6 @@ int sp_prime_is_prime_ex(const sp_int* a, int trials, int* result, WC_RNG* rng) if ((a == NULL) || (result == NULL) || (rng == NULL)) { err = MP_VAL; } - if ((err == MP_OKAY) && (a->used < 0)) { - err = MP_VAL; - } #ifdef WOLFSSL_SP_INT_NEGATIVE if ((err == MP_OKAY) && (a->sign == MP_NEG)) { diff --git a/wolfcrypt/src/sp_x86_64.c b/wolfcrypt/src/sp_x86_64.c index 4304d2121..dbac03baf 100644 --- a/wolfcrypt/src/sp_x86_64.c +++ b/wolfcrypt/src/sp_x86_64.c @@ -115,18 +115,18 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -156,12 +156,12 @@ static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -3078,18 +3078,18 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -3119,12 +3119,12 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -5976,18 +5976,18 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -6017,12 +6017,12 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -8183,18 +8183,18 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -8224,12 +8224,12 @@ static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -27324,18 +27324,18 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -27365,12 +27365,12 @@ static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -52272,18 +52272,18 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -52313,12 +52313,12 @@ static void sp_521_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; @@ -93587,18 +93587,18 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) for (i = 0; i < size; i++) { sp_digit mask = - (((sp_digit)(a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; + (((sp_digit)((int)a->used - i - 1)) >> (SP_WORD_SIZE - 1)) - 1; r[i] = a->dp[j] & mask; j += (int)(((sp_digit)1) - - (((sp_digit)(a->used - i - 2)) >> (SP_WORD_SIZE - 1))); + (((sp_digit)((int)a->used - i - 2)) >> (SP_WORD_SIZE - 1))); } #elif DIGIT_BIT > 64 - int i; + unsigned int i; int j = 0; word32 s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i] << s); r[j] &= 0xffffffffffffffffl; s = 64U - s; @@ -93628,12 +93628,12 @@ static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a) r[j] = 0; } #else - int i; + unsigned int i; int j = 0; int s = 0; r[0] = 0; - for (i = 0; i < a->used && j < size; i++) { + for (i = 0; i < (unsigned int)a->used && j < size; i++) { r[j] |= ((sp_digit)a->dp[i]) << s; if (s + DIGIT_BIT >= 64) { r[j] &= 0xffffffffffffffffl; diff --git a/wolfcrypt/src/wolfmath.c b/wolfcrypt/src/wolfmath.c index 900094dbb..6f2ddab1d 100644 --- a/wolfcrypt/src/wolfmath.c +++ b/wolfcrypt/src/wolfmath.c @@ -104,7 +104,7 @@ mp_digit get_digit(const mp_int* a, int n) if (a == NULL) return 0; - return (n >= a->used || n < 0) ? 0 : a->dp[n]; + return (n < 0 || (unsigned int)n >= (unsigned int)a->used) ? 0 : a->dp[n]; } #if defined(HAVE_ECC) || defined(WOLFSSL_MP_COND_COPY) @@ -119,7 +119,11 @@ mp_digit get_digit(const mp_int* a, int n) int mp_cond_copy(mp_int* a, int copy, mp_int* b) { int err = MP_OKAY; +#if defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL) + unsigned int i; +#else int i; +#endif #if defined(SP_WORD_SIZE) && SP_WORD_SIZE == 8 unsigned int mask = (unsigned int)0 - copy; #else @@ -174,7 +178,7 @@ int mp_rand(mp_int* a, int digits, WC_RNG* rng) if (rng == NULL) { ret = MISSING_RNG_E; } - else if (a == NULL || digits == 0) { + else if (a == NULL || digits <= 0) { ret = BAD_FUNC_ARG; } @@ -185,7 +189,7 @@ int mp_rand(mp_int* a, int digits, WC_RNG* rng) } #else #if defined(WOLFSSL_SP_MATH) || defined(WOLFSSL_SP_MATH_ALL) - if ((ret == MP_OKAY) && (digits > a->size)) + if ((ret == MP_OKAY) && ((unsigned int)digits > a->size)) #else if ((ret == MP_OKAY) && (digits > FP_SIZE)) #endif diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 4b16199e4..ec226a2f7 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -39833,7 +39833,7 @@ static int mp_test_add_sub_d(mp_int* a, mp_int* r1) for (i = 0; i <= DIGIT_BIT * 2; i++) { mp_zero(a); mp_set_bit(a, i); - if (a->used != (i + DIGIT_BIT) / DIGIT_BIT) + if ((int)a->used != (i + DIGIT_BIT) / DIGIT_BIT) return -12690; for (j = 0; j < i && j < DIGIT_BIT; j++) { mp_zero(r1); @@ -41594,13 +41594,18 @@ static int mp_test_mod_2d(mp_int* a, mp_int* r, mp_int* t, WC_RNG* rng) } #endif -#if (defined(HAVE_ECC) && defined(HAVE_COMP_KEY)) || defined(WOLFSSL_KEY_GEN) +#if defined(WOLFSSL_SP_MATH_ALL) || defined(OPENSSL_EXTRA) || \ + (defined(HAVE_ECC) && defined(HAVE_COMP_KEY)) static int mp_test_mod_d(mp_int* a, WC_RNG* rng) { int ret; mp_digit r; +#if defined(WOLFSSL_SP_MATH_ALL) || defined(WOLFSSL_SP_MATH) mp_digit rem; int i; +#endif + + (void)rng; if (mp_set(a, 1) != MP_OKAY) return -13130; @@ -41619,6 +41624,7 @@ static int mp_test_mod_d(mp_int* a, WC_RNG* rng) if (ret != MP_OKAY) return -13134; +#if defined(WOLFSSL_SP_MATH_ALL) || defined(WOLFSSL_SP_MATH) for (i = MP_MAX_TEST_BYTE_LEN - 16; i <= MP_MAX_TEST_BYTE_LEN; i++) { ret = randNum(a, i, rng, NULL); if (ret != MP_OKAY) @@ -41632,6 +41638,7 @@ static int mp_test_mod_d(mp_int* a, WC_RNG* rng) if (r != rem) return -13138; } +#endif return 0; } @@ -42320,7 +42327,8 @@ WOLFSSL_TEST_SUBROUTINE int mp_test(void) if ((ret = mp_test_mod_2d(&a, &r1, &p, &rng)) != 0) return ret; #endif -#if (defined(HAVE_ECC) && defined(HAVE_COMP_KEY)) || defined(WOLFSSL_KEY_GEN) +#if defined(WOLFSSL_SP_MATH_ALL) || defined(OPENSSL_EXTRA) || \ + (defined(HAVE_ECC) && defined(HAVE_COMP_KEY)) if ((ret = mp_test_mod_d(&a, &rng)) != 0) return ret; #endif diff --git a/wolfssl/wolfcrypt/sp_int.h b/wolfssl/wolfcrypt/sp_int.h index 284940327..020c3a6e6 100644 --- a/wolfssl/wolfcrypt/sp_int.h +++ b/wolfssl/wolfcrypt/sp_int.h @@ -768,12 +768,12 @@ typedef struct sp_ecc_ctx { */ typedef struct sp_int { /** Number of words that contain data. */ - int used; + unsigned int used; /** Maximum number of words in data. */ - int size; + unsigned int size; #ifdef WOLFSSL_SP_INT_NEGATIVE /** Indicates whether number is 0/positive or negative. */ - int sign; + unsigned int sign; #endif #ifdef HAVE_WOLF_BIGINT /** Unsigned binary (big endian) representation of number. */ @@ -784,10 +784,10 @@ typedef struct sp_int { } sp_int; typedef struct sp_int_minimal { - int used; - int size; + unsigned int used; + unsigned int size; #ifdef WOLFSSL_SP_INT_NEGATIVE - int sign; + unsigned int sign; #endif #ifdef HAVE_WOLF_BIGINT struct WC_BIGINT raw;