David Garske
dee01cfe9b
Fixes SP math all build issue with small-stack and no hardening. Fixes ZD15388
2022-12-23 13:22:40 -08:00
Sean Parkinson
162dca87c3
SP math: rework mod 3
...
Simplification when only calculating mod and modulus is 3.
2^(2*n) * x mod 3 = x mod 3.
Add all digits and calculate mod 3 of sum.
2022-12-23 09:21:13 +10:00
Sean Parkinson
45e3c721b3
Fixes from regression testing.
...
Fix random prime generation for big endian to set low bits after
shifting top word.
Allow SP_MATH to be built without RSA, DH and ECC - needed for PKCS#12.
Add DH 2048 bit parameters to cert_test.c for test.c when NO_ASN and
WOLFSSL_SP_MATH.
2022-12-16 14:43:29 +10:00
Sean Parkinson
6db2ea0672
SP int: fix when ECC specific size code included
...
Was enabled when !SP and HAVE_ECC
Now enabled when !WOLFSSL_SP_MATH and HAVE_ECC
2022-12-06 09:44:05 +10:00
Daniel Pouzzner
595f8a30d6
wolfcrypt/src/sp_int.c: fix bugprone-macro-parentheses in ALLOC_SP_INT() and ALLOC_SP_INT_ARRAY() introduced in aeca8cb17a.
2022-12-05 15:21:17 -06:00
David Garske
d3441545ef
Merge pull request #5852 from SparkiDev/sp_c_perf_2
...
SP C, SP int: improve performance
2022-12-05 11:51:28 -08:00
David Garske
5dee15d074
Merge pull request #5850 from SparkiDev/sp_exptmod_nct_err_fix
...
SP int: fix check of err in _sp_exptmod_nct
2022-12-05 11:24:12 -08:00
David Garske
304f287a7e
Merge pull request #5828 from SparkiDev/sp_int_static_size
...
SP int: check size required when using sp_int on stack
2022-12-05 11:23:25 -08:00
Sean Parkinson
22141faf16
SP C, SP int: improve performance
...
In SP C: Improve performance of large digit mul and sqr.
In SP int: include optimized 16 digit mul and sqr when compiling SAKKE.
2022-12-05 14:17:09 +10:00
Sean Parkinson
4601a57ff2
SP int: fix check of err in _sp_exptmod_nct
2022-12-05 09:36:28 +10:00
Daniel Pouzzner
cd1a61288b
wolfcrypt/src/sp_int.c: in _sp_mont_red(), add missing const in SP_WORD_SIZE == 32 codepath.
2022-12-03 10:14:15 -06:00
Sean Parkinson
3239ff5b0e
SP int: fixes for static analyser clang-tidy
...
Const poison sp_int.c to allow static analysers to work better.
sp_prime_is_prime_ex() checks whether a->used is negative to avoid bad
behavior.
2022-12-02 13:57:32 +10:00
David Garske
c079455d3e
Merge pull request #5839 from SparkiDev/sp_int_pub_apis
...
SP int: fix which APIs are public available wiht WOLFSSL_SP_MATH
2022-12-01 19:33:11 -08:00
Sean Parkinson
39716737c1
SP int: fix which APIs are public available wiht WOLFSSL_SP_MATH
...
Make sp_rshd not available when WOLFSSL_SP_MATH in header.
sp_rshd is not required by any wolfCrypt code.
Fix sp_rshd comment on #endif
Make sp_div publicly available in some WOLFSSL_SP_MATH builds.
Delare sp_div for some WOLFSSL_SP_MATH builds.
Fix test.c to compile with WOLFSL_SP_MATH and HAVE_VALGRIND.
2022-12-02 09:11:35 +10:00
David Garske
5f410b47b7
Merge pull request #5829 from SparkiDev/sp_invmod_fixes
...
SP int: fix error checks when modulus even
2022-12-01 15:05:22 -08:00
Sean Parkinson
aeca8cb17a
SP int: check size required when using sp_int on stack
...
SP int can be configured to declare temporary sp_ints.
Check that the requested number of digits is not larger than the max
supported (SP_INT_DIGITS).
Also check arrays of sp_ints too.
2022-12-01 12:53:52 +10:00
Sean Parkinson
c7c80be15e
SP int: sp_invmod_div check div result before proceeding
2022-11-30 18:33:35 +10:00
Sean Parkinson
faf848a915
SP int: fix error checks when modulus even
2022-11-30 18:15:30 +10:00
Sean Parkinson
61c2fd9a2b
SP int: don't call sp_clear unless no longer using sp_int
...
Put in casts to be sure no compiler complains.
Tidy up other parts of the code.
2022-11-30 16:36:48 +10:00
kaleb-himes
4d2b893fb3
Initialize variable causing failures with gcc-11 and gcc-12
2022-11-29 14:59:53 -07:00
Sean Parkinson
7005d416ce
SP int: Comment and rework some code
...
Improvements to sp_int.c that make it slightly quicker and documented.
2022-11-28 18:06:09 +10:00
Hideki Miyazaki
454cd02627
fix compile error due to Werro=undef on gcc-4.8
2022-11-09 14:00:50 +09:00
Sean Parkinson
bd83345c02
Merge pull request #5773 from dgarske/async_v5.5.3
...
Fixes for various tests that do not properly handle `WC_PENDING_E`
2022-11-08 14:47:23 +10:00
Sean Parkinson
b845c8bfc8
SP int: support mingw64 again
...
Check for _MSC_VER to determine that we are compiling for MSVC.
2022-11-07 16:34:26 +10:00
David Garske
1ee3a78e4a
Fixes for various tests that do not properly handle WC_PENDING_E.
2022-11-04 14:56:40 -07:00
Sean Parkinson
b1e37377a1
TLS performance fix: ForceZero minimization
...
Don't ForceZero the output buffer before free.
ForceZero it when encryption fails.
ShrinkInputBuffer needs to zeroize input buffer even if not currently
encrypting as it may be using the buffer on wolfSSL object reuse.
Fix SP to zeroize the whole buffer.
Fix DH to check cBuf when WOLFSSL_CHECK_MEM_ZERO defined.
2022-10-27 17:00:42 +10:00
Sean Parkinson
800830187b
Fixes for SP and x86_64 with MSVC
...
Add inline implementations of assembly snippets for MSVC.
Missing multiplier when index memory address.
2022-10-06 15:35:50 +10:00
Sean Parkinson
34fd412fd6
SP int all: sp_mod
...
sp_mod wasn't checking return of sp_init_size.
Add _sp_init_size change and change calls.
2022-09-27 10:05:13 +10:00
JacobBarthelmeh
1e348eb7bd
sanity check on return value
2022-09-26 10:40:41 -07:00
David Garske
0b81a584cc
Merge pull request #5604 from SparkiDev/mp_init_size_fizes_2
...
SP int: mp_init_size fixes when SP_WORD_SIZE == 8
2022-09-19 06:50:26 -07:00
Sean Parkinson
e7dba670d6
SP int: mp_init_size fix for sp_mont_norm
...
sp_mont_norm should check wrong parameter when determining whether the
calculation values will fit.
2022-09-19 10:04:30 +10:00
Sean Parkinson
02e51953fd
SP int: mp_init_size fixes when SP_WORD_SIZE == 8
...
Setting an integer may have a value larger than one word being set.
Check size of SP int in this case.
2022-09-19 09:26:47 +10:00
Daniel Pouzzner
0fc80f5f85
wolfcrypt/src/sp_int.c: catch and propagate errors from sp_init_size() in sp_invmod() and sp_gcd() to fix clang-analyzer-core.UndefinedBinaryOperatorResult.
2022-09-17 12:55:48 -05:00
Sean Parkinson
e52730d008
SP int: mp_init_size() and check size fixes
...
Check size passed to mp_init_size() 1..SP_INT_DIGITS.
More checks of parameters to SP int functions to ensure result is big
enough to hold value calculated.
2022-09-16 10:13:33 +10:00
Daniel Pouzzner
d18a654f74
wolfcrypt/src/sp_int.c: address peer review around _sp_zero(), sp_init(), and sp_init_size(), re sp_int_minimal.
2022-09-15 14:33:45 -05:00
Daniel Pouzzner
5d2610c96d
wolfssl/wolfcrypt/sp_int.h and wolfcrypt/src/sp_int.c: add struct sp_int_minimal, with same structure as struct sp_int but only one digit, to allow error-free access to sp_ints allocated with ALLOC_SP_INT() with fewer than SP_INT_DIGITS digits, and use the new type in _sp_zero() and sp_init_size() to eliminate -Werror=array-bounds on _sp_zero() under gcc-13.
2022-09-15 13:16:27 -05:00
Sean Parkinson
05634e286d
SP math: fix build configuration with opensslall
...
./configure '--disable-shared' '--enable-keygen' '--enable-certgen'
'--enable-certreq' '--enable-certext' '--enable-ocsp' '--enable-crl'
'--enable-pwdbased' '--enable-opensslall' '--enable-pkcs7'
'--enable-pkcs12' '--enable-sp' '--enable-sp-math' '--disable-rsa'
'--disable-dh' '--enable-ecc'
2022-09-07 15:42:33 +10:00
Sean Parkinson
8b2719cc83
SP math: don't modify sign in sp_div
...
Not need to modify sign of a and d in sp_div().
Signs cached at start and used to calculate sign result.
2022-08-26 08:47:49 +10:00
Sean Parkinson
d087cbea1b
Rework sp_div to work around static analysis error
...
Fix _sp_exptmod_mont_ext() to handle when number of bits in exponent is
a multiple of the window size.
2022-08-24 12:31:21 +10:00
David Garske
da422eb422
Merge pull request #5406 from SparkiDev/mp_int_size
...
Maths bit size: ensure size is right
2022-07-28 15:36:58 -07:00
Daniel Pouzzner
545ba58cc0
sp_int.c sp_div(): add missing (err == MP_OKAY) clause to fix null ptr deref.
2022-07-28 09:28:36 -05:00
Sean Parkinson
460845ba49
Maths bit size: ensure size is right
...
Ensure WOLFSSL_MAX_RSA_BITS works.
Fix SP math size defines.
Regression testing maths implementations.
2022-07-27 18:58:30 +10:00
Sean Parkinson
c2476e3858
SP int: exptmod ensure base is less than modulus
...
Ensure sp_div uses rem only when rem is big enough.
2022-07-27 08:48:28 +10:00
David Garske
97970d87a5
Merge pull request #5350 from SparkiDev/sp_math_fixes_1
...
SP math
2022-07-25 08:18:55 -07:00
Kareem
dc92ec2aa9
Update sp_rand_prime's preprocessor gating to match wolfSSL_BN_generate_prime_ex's.
2022-07-22 11:07:46 -07:00
Jacob Barthelmeh
8eaa85e412
update copyright year to 2022
2022-07-19 10:44:31 -06:00
Sean Parkinson
33b3ebb1e9
SP int ARM32: replace clz instruction when not supported
2022-07-14 09:37:28 +10:00
Sean Parkinson
96fe356dd8
SP math
...
Enable ForceZero for SP math and all RSA.
Disable use of 128-bit type in SP unless WOLFSSL_UINT128_T_DEFINED is
defined.
2022-07-13 14:54:34 +10:00
Daniel Pouzzner
ccc5952369
global fixup to check or explicitly ignore return values from failable library/system calls that weren't already being checked;
...
add wolfCrypt error codes IO_FAILED_E "Input/output failure" and SYSLIB_FAILED_E "System/library call failed";
tests/api.c and tests/unit.c: flush stdout for error message in Fail() macro, add fflush(stdout) after printf()s, print success message at end of unit_test(), and send several error messages to stderr instead of stdout;
wolfcrypt/test/test.c: add fallthrough macro definition of printf() that pairs it with fflush(stdout);
unit.h: in definition of macro AssertPtr(), add PRAGMA_GCC("GCC diagnostic ignored \"-Wpedantic\"");
sp_int.c: refactor several lingering instances of "if (0) { ... }" code pattern to #if 0 ... #endif.
2022-07-11 22:28:09 -05:00
Sean Parkinson
992c7b3b6f
SP math all: fix div word for ARM32
...
Fixup sp_mulmod NULL access.
2022-07-07 08:56:31 +10:00