summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509_v3.c (unfollow)
Commit message (Collapse)AuthorFilesLines
22 hoursEC_GROUP_new_by_curve_name.3: escape a - in code.tb1-3/+3
2 daysc2sp: drop OpenSSL 1.1 and 3.2, add 3.5tb1-2/+2
3 daysEC_POINT_point2oct: remove in_ prefix in RETURN VALUEStb1-5/+5
3 daysEC_GROUP_new_curve_GFp: some fixes in the RETURN VALUE sectiontb1-9/+12
3 daysFix markup for EC_GROUP_set_point_conversion_formtb1-4/+5
4 daysFix up a few dangling referencestb4-13/+12
4 daysRework EC documentationtb13-1242/+1998
This replaces the giant, poor quality and outdated EC_GROUP_copy.3, EC_GROUP_new.3, and EC_POINT_new.3 manuals with seven new manuals written from scratch. * EC_GROUP_new_by_curve_name() is the entry point for builtin curves, * EC_GROUP_new_curve_GFp() describes lower level API that should not usually be needed apart from a handful of accessors. * EC_GROUP_check() contains two functions that applications should not need because either you know for certain something is an elliptic curve (so these checks are pointless) or you should not use it. * EC_GROUP_get_curve_name() describes some low level ASN.1 footguns and corresponding getters. * EC_POINT_new() contains the simple EC_POINT allocation and freeing API * EC_POINT_get_affine_coordinates() contains the coordinate accessors * EC_POINT_point2oct() is about encoding elliptic curve points While all this is quite far from perfect, the diff is getting too big and it will be easier to improve this in tree. It is definitely more repetitive than I would like it to be. Reviews, tweaks and general feedback are of course welcome. discussed with jsing
4 daysBN_new: zap an anachronistic admonitiontb1-4/+2
-This type should be considered opaque and fields should not be modified -or accessed directly. The type has long been opaque and reasonable people will not do things that permit them to access the fields of opaque types directly. Of course, in the vicinity of OpenSSL code and API all sorts of insanity actually exist.
4 daysRestore two #if defined(GHASH) that were incorrectly removed.jsing1-5/+5
Also condition on defined(GHASH_CHUNK) since this is used within these blocks. This makes the conditionals consistent with other usage. Fixes build with TABLE_BITS == 1.
4 daysUnifdef OPENSSL_SMALL_FOOTPRINT.jsing1-13/+5
ok tb@
4 daysUse the OPENSSL_SMALL_FOOTPRINT code in gcm_init_4bit().jsing1-32/+2
A modern compiler will unroll these loops - LLVM produces identical code (at least on arm64). Drop the manually unrolled version and have code that is more readable and maintainable. ok tb@
6 daysMop up all of the GETU32/BSWAP4/BSWAP8 macros since they're now unused.jsing2-44/+2
ok beck@ tb@
6 daysRewrite gcm_gmult_1bit() to avoid sizeof(long) hacks.jsing1-22/+8
We're already using 64 bit variables, so just continue to do so and let the compiler deal with code generation. While here, use unsigned right shifts instead of relying on signed right shifts and implementation-defined behaviour (which the original code did). Feedback from lucas@ ok beck@ tb@
6 daysFix CRYPTO_gcm128_decrypt() when compiled with TABLE_BITS == 1.jsing1-3/+3
This appears to have been broken since 2013 when OpenSSL commit 3b4be0018b5 landed. This added in_t and out_t variables, but continued to use in and out instead. Yet another reason why untested conditional code is a bad thing. ok beck@ tb@
6 daysUnifdef OPENSSL_SMALL_FOOTPRINT.jsing5-23/+5
We do not build with OPENSSL_SMALL_FOOTPRINT and it removes more untested code paths. Request by tb@ (and it was already on my TODO list!)
7 daysMop up OPENSSL_FIPSAPI define.jsing1-3/+1
7 daysUse OPENSSL_assert() instead of assert().jsing1-10/+6
While here, tidy up the assignment of n and test directly. ok tb@
7 daysRemove now unused PUTU32 macros from modes_local.h.jsing1-3/+1
ok tb@
7 daysUse crypto_load_be32toh()/crypto_store_htobe32() instead of GETU32/PUTU32.jsing1-4/+6
ok tb@
8 daysMop up unused MODES_DEBUG.jsing7-49/+7
8 daysFix another #include that was hiding.jsing1-2/+2
8 daysTidy includes.jsing6-14/+25
8 daysUse standard integer types rather than custom typedefs.jsing2-25/+21
Replace u32 with uint32_t, remove unused u16 and replace u8 with uint8_t. ok tb@
9 daysMove AES public functions from aes_core.c to aes.c.jsing2-56/+47
This is where almost all of the public functions exist. ok beck@ tb@
10 daysFix x509's -nameopt default and spell an option correctlykn1-4/+4
Feedback OK tb
11 daysFix indentation and line wrapping.jsing1-17/+15
11 daysRemove BS-AES and VP-AES from EVP.jsing3-137/+9
The bitsliced and vector permutation AES implementations were created around 2009, in attempts to speed up AES on Intel hardware. Both require SSSE3 which existed from around 2006. Intel introduced AES-NI in 2008 and a large percentage of Intel/AMD CPUs made in the last 15 years include it. AES-NI is significantly faster and requires less code. Furthermore, the BS-AES and VP-AES implementations are wired directly into EVP (as is AES-NI currently), which means that any consumers of the AES_* API are not able to benefit from acceleration. Removing these greatly simplifies the EVP AES code - if you just happen to have a CPU that supports SSSE3 but not AES-NI, then you'll now use the regular AES assembly implementations instead. ok kettenis@ tb@
11 daysSSL_set_tlsext_host_name: as a setter it cannot take a const ssltb1-3/+3
11 daysRemove two unused defines, update standard referencetb1-7/+3
ok jsing
11 daysUse 'ctx' for sha3_ctx variables, rather than the less readable 'c'.jsing2-36/+36
ok tb@
11 daysFix annoying whitespacetb4-52/+52
11 daysPull casts from void * to uint8_t * up to variables, rather than inline.jsing1-9/+11
ok tb@
11 daysUse two temporary variables in sha3_keccakf(), rather than reusing bc[0].jsing1-8/+8
ok tb@
11 daysUse crypto_rol_u64() instead of a separate ROTL64 define.jsing1-5/+4
ok tb@
12 daysUse hyphenated spelling for the SHAs except for the APItb12-41/+42
The mix of SHA256 and SHA-256 is jarring, so use FIPS's spelling. Leave HMAC-SHA256 as it is and fix a nearby RIPEMD-160.
2025-04-14Enable remaining tests with NULL, 0tb2-9/+3
Now that libc is fixed, we can do this also for md5, rmd160 and sha1.
2025-04-14Link hash regress to buildtb1-1/+2
2025-04-14Add some regress coverage for the hashes in libctb2-0/+946
Prompted by a pending diff by claudio
2025-04-14Update openssl.1 for msie_hack removaltb1-21/+4
ok jmc jsing
2025-04-14Remove openssl ca -msie_hacktb1-31/+2
The nineties called and wanted their garbage back. ok jsing
2025-04-13parse_test_file()tb1-1/+3
gcc 14 needs a hint that ld != NULL beyond the use of ld->data in the previous line. I guess aggressive inlining is becoming too aggressive. What a pile of junk.
2025-04-13Avoid compiler warning on some OStb1-1/+1
Some OS declare arc4random() with __attribute__((warn_unused_result)) causing this test to whine. So explicitly ignore the return value. Reported by scheiba in libressl/portable Fixes #1151
2025-03-28x509_policy: zap an extra stb1-2/+2
2025-03-28x509_policy: certificats -> certificatestb1-2/+2
2025-03-28typos: us -> is, te -> the (twice)tb1-3/+3
2025-03-28typo: primtive -> primitivetb2-4/+4
2025-03-25Fix RETURN VALUES for EVP_CIPHER_CTX_ctrl(3)tb1-9/+4
The current documentation was clearly incorrect since a return of -1 from the methods is explicitly intercepted and translated to 0. schwarze and I both audited the tree and concluded that only 0 and 1 is possible. OpenSSL 3 broke this API contract and now has explicit return -1 in the convoluted 200-line maze this simple function has become with recent provider improvements. So add a small sentence hinting at that. Nobody will be surprised to read that with OpenSSL's characteristic penchant for needless inconsistency the return value checks in their tree are all over the place and sometimes incorrect. ok schwarze (with two tweaks)
2025-03-24Explicitly pass group generator to mul_double_nonct() from EC_POINT_mul().jsing4-35/+33
EC_POINT_mul() has a complex multi-use interface - there are effectively three different ways it will behave, depending on which arguments are NULL. In the case where we compute g_scalar * generator + p_scalar * point, the mul_double_nonct() function pointer is called, however only g_scalar, p_scalar and point are passed - it is expected that the lower level implementation (in this case ec_wnaf_mul()) will use the generator from the group. Change mul_double_nonct(), ec_mul_double_nonct() and ec_wnaf_mul() so that they take scalar1, point1, scalar2 and point2. This removes all knowledge of g_scalar and the generator from the multiplication code, keeping it limited to EC_POINT_mul(). While here also consistently pass scalar then point, rather than a mix of scalar/point and point/scalar. ok tb@
2025-03-24Check group generator in EC_POINT_mul().jsing1-1/+6
When a non-NULL generator scalar is passed to EC_POINT_mul(), the group's generator will be used in multiplication. Add a check that ensures that the group generator is non-NULL, in order to avoid needing to handle this elsewhere (currently in the lower level point multiplication code). ok tb@
2025-03-20Plug a memory leak in x509_name_encode()tb1-2/+4
This is nearly identical to a leak fixed by miod 10 years ago in x509_name_canon() but was missed in r1.30. This entire file needs a metric ton of bleach, but my head currently spins too much for tackling this, so go with the cheap one-liner. From Niels Dossche