summaryrefslogtreecommitdiff
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-07-02Convert some tables to C99 initializerstb3-42/+249
ok & "happy pirate day" beck
2023-07-02Fix return values of ecx methodstb1-5/+5
It is hard to get your return values right if you choose them to be a random subset of {-2, ..., 3}. The item_verify() and the digestverify() methods don't return 0 on error, but -1. Here 0 means "failed to verify", obviously. ok jsing
2023-07-02Demacro SHA-512.jsing1-54/+112
Use static inline functions instead of macros to implement SHA-512. At the same time, make two key changes - firstly, rather than trying to outsmart the compiler and shuffle variables around, write the algorithm the way it is documented and actually swap the variable contents. Secondly, instead of interleaving the message schedule update and the round, do the full message schedule update first, then process the round. Overall, we get safer and more readable code. Additionally, the compiler can generate smaller and faster code (with a gain of 5-10% across a range of architectures). ok beck@ tb@
2023-07-02Fix typo in previoustb1-2/+2
2023-07-02Use asprintf() to avoid repetition in string constantstb1-6/+13
... since ASN1_bn_print() is stupid. ok jsing
2023-07-02Split ECPKParameters_print()tb1-121/+150
This function has two entirely independent parts, so instead of a huge if/else just use two functions. In ecpk_print_explicity parameters() do some additional boring cleanup such as switching to actually using the local BN_CTX and shuffling things into a slightly more sensible order. ok jsing
2023-07-02Switch sign_sig() and sign_setup() to using BN_CTXtb1-47/+73
Both these functions use a BN_CTX internally to deal with the EC API that usually requires one. However, they don't actually make use of it. Get the BIGNUMs from the BN_CTX instead, which simplifies the cleanup. Also defer allocation of the ECDSA_SIG to the very end. Instead of using its internal r and s, use two local r and s variables and transfer those to the ECDSA_SIG on success. ok beck jsing
2023-07-02Revert hunk accidentally committed in r1.39tb1-11/+1
2023-07-02Rework handling of the out_kinv and out_r pointerstb1-8/+15
suggested by jsing
2023-07-02Replace bn_sqr_words() with bn_sqr_add_words().jsing1-35/+23
In order to implement efficient squaring, we compute the sum of products (omitting the squares), double the sum of products and then finally compute and add in the squares. However, for reasons unknown the final calculation was implemented as two separate steps. Replace bn_sqr_words() with bn_sqr_add_words() such that we do the computation in one step, avoid the need for temporary BN and remove needless overhead. This gives us a performance gain across most architectures (even with the loss of sse2 on i386, for example). ok tb@
2023-07-02Rename ctx_in into in_ctx, kinvp into out_kinv and rp into out_rtb1-12/+13
2023-07-02Rename a few variables from X to xtb1-14/+14
2023-07-02Simplify things by switching to bn_rand_interval()tb1-22/+19
This avoids some silly dances in ECDSA signature generation by replacing them with a single API call. Also garbage collect the now unnecessary range. ok beck jsing
2023-07-02Unconditionally zero the ECDH keytb1-6/+3
While memset() is quite expensive, we can afford zeroing a few extra bytes to make this code more readable. ok beck jsing
2023-07-02Teach openssl ca about Ed25519 certificatestb1-18/+27
This adds a few logic curlies to end up setting the EVP_MD to EVP_md_null() as required by the API. This way ASN1_item_sign() now knows how to behave. "ok = (rv == 2);" beck
2023-07-02Teach openssl req about EdDSA certstb1-1/+8
After a few things in libcrypto were adjusted, this diff makes issuing certificate requests with Ed25519 work. ok beck
2023-07-02Remove the ability to do tls 1.0 and 1.1 from libtls.beck7-44/+31
With this change any requests from configurations to request versions of tls before tls 1.2 will use tls 1.2. This prepares us to deprecate tls 1.0 and tls 1.1 support from libssl. ok tb@
2023-07-02ECDSA_size(): move order a few lines downtb1-2/+2
2023-07-02Invert method checks to avoid stupid line breakstb1-22/+26
2023-07-02Move the EC_POINT a bit down and a * to the right placetb1-3/+3
2023-07-02ech_key.c: Fix includestb1-3/+4
We need stdint.h for uintptr_t, stdlib.h for malloc, ec.h for various things, but there's no need for objects. or sha.h.
2023-07-01Document that small allocations are initially junked with 0xdf nowotto1-3/+3
2023-07-01Reverse polarity to avoid an overlong linetb1-5/+6
2023-07-01Reword comment to fit on a single linetb1-5/+2
2023-07-01tmp is a silly name for a point on an elliptic curvetb1-6/+6
2023-07-01Garbage collect the now unused lentb1-5/+3
2023-07-01Test and assign for EC_KEY_get0_private_key()tb1-3/+2
2023-07-01Add a missing NULL check for grouptb1-2/+3
ok jsing
2023-07-01Reference commit needed in the next major bumptb1-2/+2
2023-07-01Simplify handling of rettb1-6/+6
ok jsing
2023-07-01Use BN_bn2binpad() instead of handrolling ittb1-5/+3
As ugly as the BN_bn2binpad() internals are, what it does is quite handy with all sorts of EC stuff. So use it here too and eliminate some ugly manual pointer zeroing and offsets. Also switch len and buflen from size_t to int to remove an iffy cast: both are set by functions that return a non-negative int. ok jsing
2023-07-01Remove unused y from ECDH key computationtb1-5/+5
ok jsing
2023-07-01crypto.h: move the error stuff to the endtb1-21/+21
The other public headers have function and reason codes at the end because the error header was inlined. This was also the case here, too, until the automatic library initialization was appended.
2023-07-01Simplify ASN1_bn_print() usage in ec/tb2-30/+20
ASN1_bn_print() doesn't print anything if the BIGNUM passed in is NULL. Also simplify the handling of the point conversion form of the generator. ok jsing
2023-06-30whitespacetb1-2/+2
2023-06-30Recommit "Allow to ask for deeper callers for leak reports usingotto2-12/+71
malloc options" Now only enabled for platforms where it's know to work and written as a inline functions instead of a macro.
2023-06-29Drop the no longer necessary -DLIBRESSL_CRYPTO_INTERNALtb1-2/+2
ok miod
2023-06-29Move check_defer() and obj_cleanup_defer to evp/names.ctb2-7/+5
These formerly public symbols are the last things hidden by LIBRESSL_CRYPTO_INTERNAL. Most of their use is in evp/names.c Unfortunately, check_defer() needs to know about NUM_NIDS, so its implementation needs to remain in obj_dat.c, the only file that can include obj_dat.h due to NID tables. ok miod
2023-06-28Adjust EC_GROUP_get_basis_type() documentationtb1-64/+8
After the GF2m removal, this function always returns 0, so adjust the documentation and remove EC_GROUP_get_{trinomial,pentanomial}_basis() that were left behind. Also add a tiny grammar tweak in the HISTORY section.
2023-06-27Zap stray spacetb1-2/+2
2023-06-27Switch from get_rfc*() to BN_get_rfc*()tb1-7/+7
The existence of the public get_rfc*() API is a historic curiosity that may soon be corrected. We inherited its use and it survived in libssl until now. Switch to the better named BN_get_rfc*() wrappers. ok jsing
2023-06-27Remove some dead code from ECPKParameters_print()tb1-31/+6
This code is unreachable since binary curve support was removed. There is a lot more to clean up in here... ok jsing
2023-06-27Remove the now unused poly[] from EC_GROUPtb1-15/+2
This was needed for defining the multiplication over binary fields. Since that code is gone, this is no longer needed. ok jsing
2023-06-27Simplify EC_GROUP_get_basis_type()tb1-18/+2
The remaining EC_METHODs in libcrypto all have a field type of NID_X9_62_prime_field, so this function always returns 0. Make that more obvious. ok jsing
2023-06-26Adjust EVP_PKEY_CTRL_HKDF_KEY to OpenSSL's semanticstb1-2/+9
For some reason there is no NULL check on setting the HKDF key for p2 like in the other cases in the switch, instead OpenSSL fail in memdup, nulling out the key but leaving he key_len at the old value. This looks accidental but our behavior makes some haproxy regress tests segfault. So mimic weird OpenSSL semantics but in addition set the key_len to 0. Reported by Ilya Shipitsin ok jsing
2023-06-25Add missing RCS markertb1-0/+1
2023-06-25Remove unneeded bn_local.h and drop a NULL checktb1-5/+3
2023-06-25Move ECDSA_size() to ecs_ossl.c to match what was done in ecdhtb2-34/+34
2023-06-25With ech_local.h gone, we no longer need to -I ecdhtb1-2/+1
2023-06-25Remove ech_local.htb1-65/+0