Commit Graph

6061 Commits

Author SHA1 Message Date
Sean Parkinson
7bd8ced7af ARM32 ASM: fix asm saving and restoring of registers
Fix push and pop generated at beginning and end of function.
2022-10-28 09:51:32 +10:00
JacobBarthelmeh
319901a85c Merge pull request #5743 from SparkiDev/tls_perf_fix_forcezero
TLS performance fix: ForceZero minimization
2022-10-27 13:43:17 -06:00
JacobBarthelmeh
7366a9edbd Merge pull request #5744 from SparkiDev/regression_fixes_4
Regresssion testing fixes
2022-10-27 11:49:52 -06:00
Sean Parkinson
fd7544ca19 Regresssion testing fixes
Ed25519 and Ed448 need to enable certs.

If no system CA certs can't be parsed,
wolfSSL_CTX_load_system_CA_certs() will fail. Don't try test if RSA and
ECC are not enabled.

Fix benchmark.c so that e is defined when WOLFSSL_BENCHMARK_ALL defined.

MAX_LENGTH_SZ is 4 and supports lengths up to 2^24 - one byte for length
and 3 bytes of length.
(new gcc compiler fix)
2022-10-27 17:47:48 +10: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
JacobBarthelmeh
1c09a67f6a Merge pull request #5735 from SparkiDev/aes_gcm_c_dec_auth
AES GCM decrypt C: don't decrypt when auth tag invalid
2022-10-26 22:41:25 -06:00
Hayden Roche
294a26ba0c Merge pull request #5708 from JacobBarthelmeh/OCSP 2022-10-26 15:43:15 -07:00
JacobBarthelmeh
33617588fc fix setting dynamic flag with ocsp and asn template 2022-10-26 10:31:50 -07:00
JacobBarthelmeh
a26b89f66b fix leak with multiple entries 2022-10-26 09:29:06 -07:00
Stanislav Klima
6fa43a3d84 removed backslash 2022-10-26 15:03:31 +02:00
Sean Parkinson
55ab33a4a4 AES GCM decrypt C: don't decrypt when auth tag invalid 2022-10-26 09:25:28 +10:00
Daniel Pouzzner
2575047ea2 wolfcrypt/src/port/arm/armv8-aes.c: define FIPS_NO_WRAPPERS, rather than undefine HAVE_FIPS, to fix FIPS builds. 2022-10-25 17:24:34 -05:00
Daniel Pouzzner
084fabc733 Merge pull request #5731 from SparkiDev/armv7a_aes_fixup
AES-CBC decrypt ARMv8 no hw crypto: fixes
2022-10-25 17:23:45 -05:00
Hayden Roche
e7a121325b Merge pull request #5720 from julek-wolfssl/nid-defines 2022-10-25 10:34:59 -07:00
David Garske
d052feeff2 Merge pull request #5675 from embhorn/zd14968
Fix coverity issues
2022-10-25 10:08:40 -07:00
Juliusz Sosinowicz
2ae815e2ee Use WOLFSSL_ERROR_MSG for error logs 2022-10-25 13:13:44 +02:00
Sean Parkinson
e9a7c36c7b AES-CBC decrypt ARMv8 no hw crypto: fixes
Handle in and out buffer being the same.
2022-10-25 11:32:47 +10:00
Daniel Pouzzner
3677253b55 fixes and comments for buildability, warnings, and clarity, re WOLFSSL_ARMASM_NO_HW_CRYPTO, in configure.ac, wolfcrypt/src/port/arm/armv8-aes.c, and wolfcrypt/test/test.c. 2022-10-24 17:31:48 -05:00
Hayden Roche
4859a00c2a Merge pull request #5698 from SparkiDev/aes_arm32_no_hw 2022-10-21 12:34:22 -07:00
Hayden Roche
1bde7b3d47 Merge pull request #5665 from SparkiDev/sp_msvc_x64_asm_fix 2022-10-20 15:09:29 -07:00
Juliusz Sosinowicz
3339443260 Change NID_* from enum to #define 2022-10-20 17:07:32 +02:00
Hayden Roche
86605c92ce Merge pull request #5714 from ejohnstown/inline-guard 2022-10-19 08:33:07 -07:00
John Safranek
353a8a0275 Inline Function Guard
Fixed an inline function aes.c that was included, but never used. Added
similar preprocessor guard around it as when it is used.
2022-10-18 10:51:51 -07:00
Hayden Roche
e3ced9f9ae Make some improvements to user_settings_asm.h.
For the CMake and autotools flows, enabling user_settings.h will define the
macro WOLFSSL_USER_SETTINGS_ASM. This will cause the generated
user_settings_asm.h to be included in the .S assembly files. If the user is
building without autotools or CMake, these files will include user_settings.h
directly, unless WOLFSSL_USER_SETTINGS_ASM is defined.
2022-10-18 09:20:06 -07:00
Sean Parkinson
591101fd8b AES for ARM32 without using crypto hardware instructions
AES-ECB, AES-CBC, AES-CTR, AES-GCM, AES-CCM
Fix ldrd and strd to use even first first register and have
second register be next after first.
2022-10-18 08:31:53 +10:00
Lealem Amedie
327b66d3ed Miscellaneous fixes from scan-build and KDF refactor & small build fixes 2022-10-17 14:34:08 -07:00
JacobBarthelmeh
6f1db6c03a Merge pull request #5697 from cconlon/pkcs7SignedCertSet
PKCS#7: Fix SignedData verification when signer cert is not first in SET
2022-10-14 16:05:40 -06:00
Hayden Roche
a1de8655da Merge pull request #5699 from SparkiDev/sp_cortexm_iccarm 2022-10-14 09:00:50 -07:00
David Garske
6685ce7a10 Merge pull request #5702 from haydenroche5/ecc_nb_shared_secret_fix
Fix output length bug in SP non-blocking ECC shared secret gen.
2022-10-13 18:15:54 -07:00
Hayden Roche
40f1ba7e33 Fix output length bug in SP non-blocking ECC shared secret gen.
This was incorrectly being set to 32 for P-384/521 due to a bug in the SP gen
script.
2022-10-13 16:18:20 -07:00
David Garske
e2566bab21 Various build fixes:
* Fix api.c build error with `NO_FILESYSTEM` and `WOLFSSL_CERT_EXT`.
* Fix for building tests/suites.c with static memory (missing `LARGEST_MEM_BUCKET`).
* Always expose `wc_ecc_set_rng` for compatibility.
2022-10-13 12:49:06 -07:00
Chris Conlon
1b0171fe3e fix PKCS7 SignedData verification when signer cert is not first in SET 2022-10-13 11:03:13 -06:00
Sean Parkinson
47e3ffade6 SP Cortex-M: suport for ICCARM
Change ifdefs to use GNUC form for conditional branch for ICCARM.
2022-10-13 14:26:43 +10:00
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
Eric Blankenhorn
b4e0137d37 Fix coverity issues 2022-10-07 14:49:05 -05: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
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
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
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
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