Commit Graph

6786 Commits

Author SHA1 Message Date
Sean Parkinson
46091b7c7d Curve448 32-bit C code: handle corner case
For sqr and mul (28/32 bits) the sums of products can exceed maximum
64-bit signed value. Handle last sum value, that may cause overflow,
separately.
Fix formatting of overflow last line.
2022-10-10 11:33:46 +10:00
Tesfa Mael
e4da4f60d9 Implemented suggested changes 2022-10-07 11:24:09 -07:00
Tesfa Mael
a738927846 Add CRL binary search, CRL_STATIC_REVOKED_LIST 2022-10-07 11:24:09 -07:00
Sean Parkinson
34a03f6646 AES-GCM x86: fix for AESNI implementation
Jump to non-inplace decrypt update when pointers are different.
2022-10-07 08:16:08 +10:00
kaleb-himes
6178b3e365 Fixup builds using WOLFSSL_LOG_PRINTF (SGX test exposed) 2022-10-05 13:54:22 -06:00
Hayden Roche
6f4af1581b Merge pull request #5650 from SparkiDev/aes_x86_asm 2022-10-04 16:40:02 -07:00
Sean Parkinson
c989dd9590 Merge pull request #5641 from haydenroche5/user_settings_asm
Generate an assembler-safe user_settings.h in configure.ac and CMakeLists.txt.
2022-10-05 07:51:56 +10:00
Hayden Roche
79d9bc376f Merge pull request #5631 from dgarske/smallstack 2022-10-04 14:39:17 -07:00
Sean Parkinson
66ce7635b9 AES x86 ASM: new assembly
Added new x86 assembly for AES.
AES-CBC decrypt only 4 blocks at a time (not 6 or 8) due to reduces
register count.
GCM implementation for AVX2, AVX1 and AESNI only.
Disabled looking for other assembly files for x86.
2022-10-05 07:34:42 +10:00
David Garske
0006d1f91c Fix benchmark with small stack and WOLFSSL_RSA_VERIFY_ONLY. 2022-10-04 08:39:42 -07:00
Hayden Roche
3bcd4b45df Generate an assembler-safe user_settings.h in configure.ac and CMakeLists.txt.
For user_settings.h builds, .S assembly files need to include user_settings.h
in order to get the defines used by the build. However, a user_settings.h may
contain code only understood by a C compiler and not the assembler (e.g. a
typedef). This commit makes it so our autotools and CMake builds produce a file
user_settings_asm.h when doing a user_settings.h build. This generated header
contains only the preprocessor directives from the user_settings.h. As a result,
it can be safely included by our assembly code files.
2022-10-03 16:00:32 -07:00
David Garske
09f4a94b24 Fixes for small stack in TLS v1.3, HKDF and SHA2. Add new WC_ASN_HASH_SHA256 build option to allow forcing SHA2-256 for the internal certificate calculations. Fixes for integer.c with small stack (allocate only the size needed, not the max). 2022-10-03 12:52:11 -07:00
Lealem Amedie
e77c3849a0 Fix for evp key leak in unit tests 2022-09-30 16:02:07 -07:00
David Garske
f9506dc05a Add small stack to DoClientHello Suites (360 bytes). Add small stack for DRBG health test. Refactor of the small stack into its own header, to allow easier use in other files. Minor build fixes. 2022-09-30 14:06:31 -07:00
Daniel Pouzzner
548d432df3 wolfcrypt/test/test.c: fix gating, and smallstack refactors, for ecc_test_deterministic_k(), ecc384_test_deterministic_k(), and ecc521_test_deterministic_k(). 2022-09-30 12:06:15 -05:00
Daniel Pouzzner
ddad526e64 wolfcrypt/benchmark/benchmark.c: fix clang-tidy complaints around ungrouped string continuation and unparenthesized macro args. 2022-09-30 12:05:57 -05:00
Hayden Roche
591d1ada94 Merge pull request #5615 from JacobBarthelmeh/RSAPSS 2022-09-29 14:39:05 -07:00
David Garske
5524500e85 Merge pull request #5166 from sjaeckel/versal-bringup
Versal bringup
2022-09-29 13:27:13 -07:00
Steffen Jaeckel
0e57e9858f Integrate Xilinx Versal
* add Versal specific glue
   The same structure of an "XSecure client" is used throughout the API's,
   therefor define it once and re-use in all clients.
* integrate Versal AES-GCM engine
* integrate Versal SHA3-384 engine
* add versal support to tests
  - There's no intermediate-hash API for Versal.
* add specific test with large AAD
   Test only with `n*16 byte` wide chunks of AAD, so it gets processed in the
   hardware engine.
* add specific test with misaligned AES-GCM arguments
* integrate Versal RSA engine
* disable failing RSA test-case when Xilinx Crypto is enabled
* introduce define `WOLFSSL_XILINX_CRYPT_VERSAL`
* integrate Versal TRNG engine
* allow using Versal TRNG w/o wolfcrypt DRBG
   Versal TRNG already provides a HRNG mode which does the same as the
   wolfcrypt DRBG implementation.
* add support for user-supplied nonce to Versal TRNG
* add `wc_XsecureErrorToString()` to map PLM error codes to messages.
* integrate Versal EcDSA engine
* update tests to work with Versal EcDSA
   If deterministic K is enabled, the tests failed here since the Versal
   EcDSA engine doesn't support the SECP256R1 curve yet.
* Xilinx crypto engines like aligned memory very much
   Make this a default choice, not via the user configuration.
* add Xilinx-specific `WOLFSSL_MSG()` equivalent
   `WOLFSSL_XIL_MSG()` does the same as `WOLFSSL_MSG()` besides waiting for
   1 second before printing to stdout, since the PLM maybe prints to same and
   outputs would be mixed up.
   This waiting can be disabled by defining `WOLFSSL_XIL_MSG_NO_SLEEP`.
* add option to enable DPA CounterMeasures in AES-GCM crypto engine
* add "command mode" to Xilinx bare-metal example
* update Xilinx default user settings
* add script to execute benchmarks
* add scripts to create graphics
* add Vitis 2022.1 example projects

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
2022-09-29 09:39:57 -06:00
Steffen Jaeckel
f24cf38f01 Update benchmarks
* add option to run benchmarks with and w/o AAD
   This adds the possibility to benchmark AES-GCM and AES-CCM both with and
   w/o AAD, with the option to also run both.
   The default behavior when wolfSSL provides the `main()` function is
   unchanged.
   The default behavior when wolfSSL doesn't provide the `main()` function has
   been changed to "run both benchmarks - with and w/o ADD".
* add option to run benchmarks against 4096bit RSA&DH keys
* remove `BENCH_SIZE` macro from benchmark.c
* pre-define benchmark sizes in a single place, before it had to be done in two places
* improve `benchmark_static_init()`
   - static variable doesn't need to be in global scope
   - add option to force re-init
   - add more static variables to be reset
* add `-blocks` option to benchmarks
* expose benchmark `main()` as `wolfcrypt_benchmark_main()`
* fix benchmark `-?` output
* use correct SI/Binary prefix in benchmarks
* use a separate column per detail in CSV output of benchmark
* add `-aad_size` option to benchmark
* don't always print symmetric CSV headers
* always use M[i]B/s when output format is CSV
* Versal specific patches for benchmarks
   This also removes the default define for `COUNTS_PER_SECOND` for Xilinx
   targets, since I prefer to have a build failure over wrongly calculated
   output.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
2022-09-29 09:39:57 -06:00
Steffen Jaeckel
f4e258d196 Generic changes
* fix compilation warning
* adjust SHA3-384 test error-codes
   The way the codes were constructed before, they were not unique.
* unify code
   Instead of having `ifdef`'s in the code, define our own wrapper around
   the keysource as required.
* add CMake option for help-text in wolfCrypt tests
* expose test `main()` as `wolfcrypt_test_main()`
* Don't overwrite previously set errors
* add FreeRTOS support for Xilinx demo
* move `fp_reverse` from `tfm.c` to `wolfmath.c` and rename to
  `mp_reverse`.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
2022-09-29 09:39:57 -06:00
Sean Parkinson
5a55ec6968 ARM32 assembly code: fixed scripts
Generation scripts fixed for ARM32.
Regenerated output inlcudes:
  - support for ARM32 architectures less than 7
  - SP code also ensures parameters are in specific registers
2022-09-29 09:04:05 +10:00
Sean Parkinson
754d274d8c Merge pull request #5593 from rizlik/ticket_nonce_size
tls13: support ticketNonce with size bigger than MAX_TICKET_NONCE_SZ
2022-09-29 08:11:22 +10:00
Marco Oliverio
56d6087749 tls13: support ticketNonce bigger than MAX_TICKET_NONCE_SZ
to enable it, use WOLFSSL_TICKET_NONCE_MALLOC define
2022-09-28 19:54:14 +02:00
kaleb-himes
d61656d5e7 Do not perform IV Wrap test when using cert3389 inlined armasm 2022-09-27 17:15:19 -06:00
JacobBarthelmeh
ffe052e845 Merge pull request #5634 from douzzer/20220926-fixes
20220926-fixes
2022-09-27 11:49:20 -06:00
Daniel Pouzzner
cc03e3fdab wolfcrypt/src/misc.c ByteReverseWords(): mollify MSVC re C4311. 2022-09-27 10:05:07 -05:00
Daniel Pouzzner
cfe0278d35 wolfcrypt/src/misc.c ByteReverseWords(): fix misaligned word accesses under armv7a-asm. 2022-09-27 02:02:31 -05: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
55a0f6d97b Support for RTEMS in the DEOS user_settings.h template and time. Fix for bio.c and OPENSSL_EXTRA which needs XATOI. Fix for SP math ECC with 384-bit and 521-bit curves enabled. 2022-09-25 10:41:05 -07:00
Daniel Pouzzner
f80fb7f1aa Merge pull request #5625 from dgarske/esp32_cleanups
Fixes for various build configurations
2022-09-23 20:46:44 -05:00
David Garske
221fd275fd Fixes for building without SHAKE. 2022-09-23 14:50:16 -07:00
David Garske
606f58a851 Spelling and whitespace cleanups. 2022-09-23 13:58:58 -07:00
David Garske
b42631c721 Fix for ESP32 wolfcrypt_test entry point. 2022-09-23 13:58:49 -07:00
David Garske
7a69415e79 Fix for possible memory leak on failure in RSA/DH public key decode with heap based math. 2022-09-23 13:53:16 -07:00
David Garske
c29e602ea5 Fix for building with WOLFSSL_ASN_TEMPLATE and IGNORE_NAME_CONSTRAINTS. 2022-09-23 13:52:55 -07:00
David Garske
7970d5d794 Merge pull request #5152 from SparkiDev/armv7a_neon_asm
ARM ASM: ARMv7a with NEON instructions
2022-09-23 08:46:03 -07:00
John Safranek
62670d9263 Merge pull request #5619 from kaleb-himes/AZURE-fix2
Fix undesirable kyber dependencies when not building kyber (#2)
2022-09-22 19:55:50 -07:00
Sean Parkinson
1b9656f72d ARM ASM: add fpu directive to assembly files 2022-09-23 12:31:39 +10:00
Sean Parkinson
aa1a95e70b Merge pull request #5621 from tmael/sp_1024_sakke
Wrap 1024 single precision math with WOLFCRYPT_HAVE_SAKKE
2022-09-23 08:52:05 +10:00
Tesfa Mael
7805ffeee0 Fix enable-sp=1024 2022-09-22 14:03:40 -07:00
John Safranek
f113e92495 Merge pull request #5612 from kareem-wolfssl/base16Ending
Update Base16_Encode so the ending null terminator is optional.
2022-09-22 13:24:19 -07:00
kaleb-himes
938ab16907 Also address assembly file 2022-09-22 14:15:46 -06:00
kaleb-himes
77676537f6 Fix undesirable kyber dependencies when not building kyber (#2) 2022-09-22 10:43:03 -06:00
John Safranek
13555bebcd Merge pull request #5617 from kaleb-himes/FIX-AZURE-TEST
Fix undesirable kyber dependencies when not building kyber
2022-09-22 09:04:35 -07:00
tim-weller-wolfssl
62766b0758 Updates to remove warnings and build issues found with IAR tools. Update test function / example to avoid memory leak. Update to pass error codes along rather than mask them at lower levels.
Make logic to avoid masking return error conditionally compiled based on STSAFE configuration

Update logic at second crypto-callback location to return error code rather than mask it
2022-09-21 14:16:49 -05:00
John Safranek
913bbc8f79 Merge pull request #5613 from kareem-wolfssl/staticEccFix
Fix bad casts in wc_EccPublicKeyDecode when using WOLFSSL_ECC_CURVE_STATIC with custom curves.
2022-09-21 11:38:06 -07:00
kaleb-himes
d672f10f7e Fix undesirable kyber dependencies when not building kyber 2022-09-21 09:58:38 -06:00
JacobBarthelmeh
2bf583aa57 Merge pull request #5526 from miyazakh/qt_jenkins_fix
Fix qt nightly test failure
2022-09-21 09:38:45 -06:00