summaryrefslogtreecommitdiff
path: root/src/regress/lib/libcrypto/x509 (unfollow)
Commit message (Collapse)AuthorFilesLines
18 hourscms_RecipientInfo_pwri_crypt: fix incorrect return checktb1-3/+3
ok jsing
18 hourscms_RecipientInfo_pwri_crypt: plug leak of kekalgtb1-3/+3
ok jsing
46 hourslibcrypto: rsa gen: min. distance between p and qjan1-3/+19
This is required in NIST Special Publication 800-56B Revision 2 "Recommendation for Pair-Wise Key Establishment Using Integer Factorization Cryptography": 6 RSA Key Pairs 6.2 Criteria for RSA Key Pairs for Key Establishment 6.2.1 Definition of a Key Pair 3. The prime factors p and q shall be generated using one of the methods specified in Appendix B.3 of FIPS 186 such that: c. |p – q| > 2nBits/2−100 ok djm@, tb@
3 daysBump libressl version to 4.2.0tb1-3/+3
The version check will break the rust-openssl regress unless you have rust-openssl-tests-20250927p0.
3 daysRevert NULL,0 -> OPENSSL_FILE,OPENSSL_LINE from r1.78tb1-9/+9
This wasn't part of the initial proposal and causes issues in curl downstream. We could pile more hacks on top of this, but at some point this is getting too silly. Relatedly, most of the FOOerr() could be removed, although PEMerr(), RSAerr() and SSLerr() are used by some downstreams and probably not worth patching out. Discussed with @vszakats in https://github.com/libressl/portable/issues/1154
14 daysec_asn1_test: add an example using BLS12-377tb1-1/+80
This exercises the cofactor guessing code with a large cofactor. Thanks to Daniel Bleichenbacher for pointing out this example. This contains a hack to use a bogus OID since this curve has none.
2025-09-16wycheproof: provide PBKDF2 test harnesstb1-2/+58
Skip the tests for now since they increase the test's runtime by ~50%. A later commit will gate these tests behind REGRESS_SKIP_SLOW.
2025-09-16mlkem_generate_key_external_entropy: normalize sizeof() usetb1-2/+2
2025-09-16Simplify MLKEM_{private,public}_key_new()tb1-19/+7
This removes two unnecessary variables in each of these functions, normalizes the sizeof() use and undoes unnecessary line wraps. ok deraadt djm kenjiro
2025-09-15wycheproof: run HMACSM3 tests against libcryptotb1-4/+7
2025-09-15aes: move explicit_bzero() after NULL checktb1-5/+7
CID 621601 621602 ok djm jsg jsing miod
2025-09-15MLKEM_private_key_new: add missing space before =tb1-2/+2
2025-09-14wycheproof: run ML-KEM test vectors against libcryptotb1-2/+139
2025-09-14mlkem_public_to_private: fix overread/information leaktb1-3/+3
After the guts of MLKEM_public_key were changed from a union to a struct, the aligner grew the struct, leaking as many bytes of private key data as the struct grew (on normal platforms that would be 2). Ideally this would all be a bit more robust. CID 621603 621604 ok jsing kenjiro
2025-09-09wycheproof: zap stray empty linetb1-2/+1
2025-09-08Call aes_set_encrypt_key_generic() from aes_set_decrypt_key_generic().jsing1-2/+2
With the renaming, aes_set_decrypt_key_generic() should now call aes_set_encrypt_key_generic() directly.
2025-09-08Allow generic AES implementation to be used as a fallback.jsing3-19/+65
Rename the C based AES implementation to *_generic() and provide *_internal() wrappers for these. This allows for architectures to provide accelerated versions without having to also provide a fallback implementation. ok tb@
2025-09-08Zero the round keys on AES_set_{en,de}crypt_key() function entry.jsing1-1/+5
This avoids leaving previous round keys around on failure, or leaving parts of previous round keys behind if reused with a smaller key size. ok tb@
2025-09-08Validate AES_set_{encrypt,decrypt}_key() inputs at API boundary.jsing2-18/+28
Every aes_set_{encrypt,decrypt}_key_internal() implementation is currently required to check the inputs and return appropriate error codes. Pull the input validation up to the API boundary, setting key->rounds at the same time. Additionally, call aes_set_encrypt_key_internal() directly from aes_set_decrypt_key_internal(), rather than going back through the public API. ok tb@
2025-09-08wycheproof: rework test selectiontb1-69/+82
Since this has grown organically, the test selection has become a weird mix of globs, regexes and test variants and it is hard to reason about what is run and why. Instead, load all the json files from testvectors_v1/ and look at algorithm (almost always available) and test schema to figure out if we support it in libcrypto and the test harness. This separates the logic of the test runner better from the test selection. Also make it a fatal error if we don't explicitly skip an unknown algorithm.
2025-09-08wycheproof: skip tests using curve448/edwards448tb1-7/+12
2025-09-08wycheproof: skip tests using SHAKE-128 and SHAKE-256tb1-1/+17
2025-09-08wycheproof: rename skipSmallCurve() into skipCurve()tb1-4/+6
This prepares an upcoming change by not only skipping small curves but also binary curves that have test vectors.
2025-09-08wycheproof: determine the test variant from the JSON schematb1-30/+41
2025-09-07wycheproof: retire the ECDSA webcrypto teststb1-71/+2
The webcrypto test files for P-256, P-384, and P-521 are identical to the P1363 test files for these curves with the hashes SHA-256, SHA-384, and SHA-512, respectively. The only real differences in the test paths is the Go glue code to translate to libcrypto, so they're pointless.
2025-09-07Remove BN_DIV2W.jsing3-28/+4
The BN_DIV2W define provides a code path for double word division via the C compiler, which is only enabled on hppa. Simplify the code and mop this up. ok tb@
2025-09-07Re-enable bn_sqr_words() assembly.jsing3-8/+8
This is now only on amd64.
2025-09-07Rename old assembly bn_sqr_words() to bn_sqr_word_wise().jsing6-30/+27
bn_sqr_words() does not actually compute the square of the words, it only computes the square of each individual word - rename it to reflect reality. Discussed with tb@
2025-09-06wycheproof: go fmttb1-4/+4
2025-09-06wycheproof: use a cleaner way of dealing with P1363 signature lengthtb1-4/+12
2025-09-05Deduplicate the mlkem 768 and mlkem 1024 code.beck6-1788/+527
This moves everything not public to mlkem_internal.c removing the old files and doing some further cleanup on the way. With this landed mlkem is out of my stack and can be changed without breaking my subsequent changes ok tb@
2025-09-05wycheproof: check for the v1 directory since v0 will go awaytb1-2/+2
2025-09-05wycheproof: port the MI primes check to v1tb2-3/+24
2025-09-05wycheproof: remove support for v0 test vectorstb1-68/+38
2025-09-05wycheproof: drop JOSE teststb1-2/+1
These are no longer supported in v1 and we skipped them anyway.
2025-09-05wycheproof: move AES key wrap tests to v1tb1-4/+4
2025-09-05wycheproof: add support for EcCurve teststb1-1/+103
This checks for a collection of prime order groups (secp, Brainpool, FRP) the curve parameters are corrct. The collection is a superset of our built-in curves, so we get one more validation for exxentially free.
2025-09-05wycheproof: add custom JSON unmarshaler big integerstb1-9/+58
Since the wycheproof tests were written in Java, they inherited some of that language's weirdnesses. For example, the hex representation may have odd length, is 2-complement and needs zero-padding if the top bit of a nibble is set, similar to ASN.1 integers. This is needed for correctly decoding the Primality test cases, which worked nicely in v0 but no longer for v1. Convert the Primality test to use this.
2025-09-05wycheproof: make RSA tests worktb1-43/+79
There's more work needed here since some of the tests are designed to test the signing side of things, where we only verify. To be dealt with later.
2025-09-05wycheproof: move ECDSA tests to v1tb1-14/+15
This excludes the bitcoin tests since our ECDSA_verify() doesn't have the logic to enforce s < order / 2 to avoid the well-known malleability issue with secp256k1 that (r, s) is valid if and only if (r, order - s) is valid. Moreover, add a workaround for overly picky P1363 tests where only correctly padded P1363 signatures are accepted. As the test authors say "To our knowledge no standard (i.e., IEEE P1363 or RFC 7515) requires any explicit checks of the signature size during signature verification." In fact, the problem really is in the test code, not in libcrypto and is a bit annoying to fix in a non-silly way.
2025-09-05wycheproof: move ECDH tests to v1 (skip PEM for now)tb1-6/+5
2025-09-05wycheproof: move AES to v1 and explicitly skip gmac testtb1-3/+3
2025-09-04wycheproof: go fmttb1-6/+6
2025-09-04wycheproof: move HKDF to v1tb1-2/+2
2025-09-04wycheproof: move EdDSA to v1tb1-7/+7
eddsa_test.json is now ed25519_test.json and again key* was renamed to PublicKey*.
2025-09-04wycheproof: move DSA to v1tb1-6/+6
key* are now called PublicKey*, so change teh json tags accordingly.
2025-09-04wycheproof: move x25519 to v1tb1-5/+5
2025-09-04wycheproof: migrate {,X}ChaCha20-Poly1305 to v1tb1-3/+3
2025-09-04wycheproof: migrate HMAC to v1tb1-3/+3
This is straightforward since the schema did not change. This adds coverage for HMAC-SHA512/224 and HMAC-SHA512/256.
2025-09-04wycheproof: add struct to support the testvector_v1 schematb1-7/+26