summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/reallocarray.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2025-05-27Make EVP_CIPHER_[gs]et_asn1_iv() local to evp_ciphertb9-153/+174
These formerly public functions have only ever been called from EVP_CIPHER_asn1_to_param() and EVP_CPIHER_param_to_asn1(), either directly if the EVP_CIPH_FLAG_DEFAULT_ASN1 flag is set, or indirectly when set as the .[gs]et_asn1_parameters() method of the EVP_CIPHER. This commit removes their use in .[gs]et_asn1_parameters() dating back to long before the EVP_CIPH_FLAG_DEFAULT_ASN1 was introduced in 2010. This way the only remaining consumer of .[gs]et_asn1_parameters() is RC2. ok jsing
2025-05-26GOST has left the buildingtb1-2/+2
(comment tweak, no code change)
2025-05-25Merge AES-IGE into aes.c.jsing3-121/+66
2025-05-25Simplify AES-IGE and remove code with implementation defined behaviour.jsing1-117/+40
Remove the UNALIGNED_MEMOPS_ARE_FAST from AES-IGE, which can result in implementation defined behaviour on i386/amd64. While we could keep this purely for aligned inputs and outputs, it's probably not that important and can be redone in a simpler form later if we want to do so. ok tb@
2025-05-25Remove bogus alias.jsing1-2/+1
2025-05-25Add test whether fflush() complies POSIX for the handling ofyasuoka1-1/+82
pushed-back wchar_t chars.
2025-05-25Add test for ungetwc().yasuoka2-1/+94
2025-05-25Merge RC2 into a single file.jsing6-548/+301
Discussed with tb@
2025-05-25Provide an EC method that uses homogeneous projective coordinates.jsing3-2/+870
This makes use of EC_FIELD_ELEMENT to perform fixed width constant time operations. Addition and doubling of points makes use of the formulas from "Complete addition formulas for prime order elliptic curves" (https://eprint.iacr.org/2015/1060). These are complete and operate in constant time. Further work will continue in tree. ok tb@
2025-05-25Implement EC field element operations.jsing5-31/+299
Provide EC_FIELD_ELEMENT and EC_FIELD_MODULUS, which allow for operations on fixed width fields in constant time. These can in turn be used to implement Elliptic Curve cryptography for prime fields, without needing to use BN. This will improve the code, reduces timing leaks and enable further optimisation. ok beck@ tb@
2025-05-25openssl speed: clean up time_fjoshua1-79/+76
Rename Time_F to time_f and tidy up implementation and usage. time_f still uses app_timer_{user,real}, which I will clean up in a future commit. ok jsing
2025-05-25Provide bn_mod_{add,sub,mul}_words().jsing4-5/+94
These implement constant time modular addition, subtraction and multiplication in the Montegomery domain. ok tb@
2025-05-25openssl speed: remove whirlpooljoshua2-41/+12
whirlpool was previously removed from libcrypto, and OPENSSL_NO_WHIRLPOOL will always be defined. Remove whirlpool support from the openssl speed command entirely. ok jsing tb
2025-05-25Fix previous.jsing3-72/+6
2025-05-25Provide additional variants of bn_add_words()/bn_sub_words().jsing3-6/+190
Move bn_add_words() and bn_sub_words() from bn_add.c to bn_add_sub.c. These have effectively been replaced in the previous rewrites. Remove the asserts - if bad lengths are passed the results will be incorrect and things will fail (these should use size_t instead of int, but that is a problem for another day). Provide bn_sub_words_borrow(), which computes a subtraction but only returns the resulting borrow. Provide bn_add_words_masked() and bn_sub_words_masked(), which perform an masked addition or subtraction. These can also be used to implement constant time addition and subtraction, especially for reduction. ok beck@ tb@
2025-05-25Fix handling of different length inputs in bn_sub().jsing1-3/+3
In the diff_len < 0 case, it incorrectly uses 0 - b[0], which mishandles the borrow - fix this by using bn_subw_subw(). Do the same in the diff_len > 0 case for consistency. Note that this is never currently reached since BN_usub() requires a >= b. ok beck@ tb@
2025-05-25Add tests for the functions in <stdio_ext.h>.yasuoka7-2/+455
2025-05-25Include "stdio" in SUBDIR. This should have been done along with theyasuoka1-4/+4
previous commit.
2025-05-24Create bm->buf from the start to avoid arithmetic on NULLtb1-1/+7
This is a different way of avoiding the pointer arithmetic on NULL and avoids test breakage in pyca/cryptography. This is also a gross hack that penalizes existing callers of BIO_s_mem(), but this is rarely called in a hot loop and if so that will most likely be a test. ok kenjiro joshua jsing
2025-05-24Revert "bio_mem: avoid pointer arithmetic on NULL"tb1-4/+2
This causes a test failure in pyca/cryptography.
2025-05-24openssl pkcs8: zap an outdated lietb1-4/+1
2025-05-24explain more precisely how to initialize malloc_options;schwarze1-4/+12
OK deraadt@
2025-05-24Add regress/lib/libc/stdio/test_fflush.c to test fflush() behavior foryasuoka2-0/+236
reading FILE objects. It will fail until fflush() complies POSIX-2008. ok tb asou
2025-05-24openssl speed: remove MAX_BLOCK_SIZE definejoshua1-8/+2
ok jsing
2025-05-24Provide method specific functions for EC POINT infinity.jsing3-10/+27
Provide method specific functions for EC_POINT_set_to_infinity() and EC_POINT_is_at_infinity(). These are not always the same thing and will depend on the coordinate system in use. ok beck@ tb@
2025-05-24openssl speed: move key{16,24,32} above speed_mainjoshua1-33/+25
Also, reuse the same keys for Camellia instead of having duplicates. ok jsing tb
2025-05-24Mop up ghash arm assembly remnants.jsing1-18/+1
2025-05-24Provide openssl_init_crypto_constructor() and invoke via a constructor.jsing1-3/+14
There are a very large number of entry points to libcrypto, which means it is easy to run code prior to OPENSSL_init_crypto() being invoked. This means that CPU capability detection will not have been run, leading to poor choices with regards to the use of accelerated implementations. Now that our CPU capability detection code has been cleaned up and is safe, provide an openssl_init_crypto_constructor() that runs CPU capability detection and invoke it as a library constructor. This should only be used to invoke code that does not do memory allocation or trigger signals. ok tb@
2025-05-24Remove remnants of OPENSSL_cpuid_setup().jsing3-20/+10
This is no longer used.
2025-05-24Disable libcrypto assembly on arm.jsing5-257/+2
The arm CPU capability detection is uses SIGILL and is unsafe to call from some contexts. Furthermore, this is only useful to detect NEON support, which is then unused on OpenBSD due to __STRICT_ALIGNMENT. Requiring a minimum of ARMv7+VFP+NEON is also not unreasonable. The SHA-1, SHA-256 and SHA-512 (non-NEON) C code performs within ~5% of the assembly, as does RSA when using the C based Montgomery multiplication. The C versions of AES and GHASH code are around ~40-50% of the assembly, howeer if you care about performance you really want to use Chacha20Poly1305 on this platform. This will enable further clean up to proceed. ok joshua@ kinjiro@ tb@
2025-05-24Adapt to new maloc_options declarationotto1-2/+2
2025-05-24Adapt test to new malloc_options regimeotto1-7/+8
2025-05-24Update and improve documentation for pkcs8 -v2tb1-12/+8
with input from jsing
2025-05-24Crank default salt length of PBE2 to 16 octetstb2-4/+13
FIPS is currently revising their PBKDF2 recommendations and apparently they want to require 16 octets. https://github.com/pyca/cryptography/issues/12949 https://github.com/libressl/portable/issues/1168 ok kenjiro joshua jsing
2025-05-24Switch the default PBMAC to hmacWithSHA256tb1-2/+2
Using hmacWithSHA1 isn't outrageously bad, but newly generated encrypted password files ought to be using something better. Make it so. https://github.com/pyca/cryptography/issues/12949 https://github.com/libressl/portable/issues/1168 ok joshua
2025-05-24Switch default to PBES2 for openssl pkcs8 -topk8tb1-3/+3
We currently use the glorious default of NID_pbeWithMD5AndDES_CBC which we inherited from OpenSSL. This could have been worse - there is also NID_pbeWithMD2AndDES_CBC... The way this diff works is that the undocumented PKCS8_encrypt() API uses the PKCS#5v2 code path when it's passed a NID of -1 and requires a cipher to succeed, otherwise it uses the PKCS#5v1.5 path. So pass in a sensible cipher, namely AES-CBC-256, and let layers of muppetry cascade to doing something resembling the right thing. This still uses the default of hmacWithSHA1 and a somewhat short salt, which will be improved in a subsequent commit. https://github.com/pyca/cryptography/issues/12949 https://github.com/libressl/portable/issues/1168 ok kenjiro joshua jsing
2025-05-24openssl speed: use single md buffer for digestsjoshua1-31/+10
ok jsing tb
2025-05-23Add the ability to run individual ruby ssl test for figuring outbeck1-1/+16
what is going on when these break ok tb@
2025-05-23When commons were deprecated, noone noticed that malloc_options in staticderaadt2-7/+10
binaries had become unlinkable. Change the libc definition to weak to solve that, and to "const char * const" so that noone will try to set it late. It must be stable before the first malloc() call, which could be before main()... discussion with otto, kettenis, tedu
2025-05-22Do a clean up pass over the GCM code.jsing1-92/+86
Rework some logic, add explicit numerical checks, move assignment out of variable declaration and use post-increment/post-decrement unless there is a specific reason to do pre-increment. ok kenjiro@ tb@
2025-05-22Use timingsafe_memcmp() in CRYPTO_gcm128_finish().jsing1-2/+2
When checking the GCM tag, use timingsafe_memcmp() instead of memcmp(). ok tb@
2025-05-22Simplify SSL_alert_desc_stringtb1-67/+2
SSL_alert_desc_string() is only used by our good old friends M2Crypto and Net::SSLeay. While some of the two-letter combinations can be made sense of without looking at the switch, I guess, this is just a completely useless interface. The same level of uselessness can be acchieved in a single line matching BoringSSL. ok joshua kenjiro
2025-05-22Fix HTTP CONNECT proxy support to not treat responses likedjm1-5/+5
"HTTP/1.0 200poo" as success; patch from Spiros Thanasoulas
2025-05-22asn1: merge invalid generalized time tests into invalid time testsjoshua1-16/+10
Previously, invalid generalized time tests were split into a separate set of test vectors and a flag was used when calling the test function to indicate they should be tested as generalized only. This simplifies the code a bit, and makes converting to the new test framework easier. ok jsing
2025-05-22Convert sha_test to use new test frameworkjoshua2-153/+141
ok beck
2025-05-22Convert md_test to use new test frameworkjoshua2-122/+106
ok jsing tb beck
2025-05-22Fix test_errorf macro expanding to two linesjoshua1-4/+8
This caused test_fail to always be called when used in certain conditions, and wrapping with do {} while (0) fixes this.
2025-05-22Add basic HKDF test using EVP_PKEY_HKDFkenjiro1-1/+81
Add a basic test case for HKDF using EVP_PKEY_HKDF to evp_test.c. This test verifies the correct derivation of output keying material using SHA-256, matching the test vector from RFC 5869 Appendix A.1. ok tb@ joshua@
2025-05-21Reorder some functions.jsing1-20/+20
2025-05-21Remove GHASH_CHUNK and size_t related code from GCM encrypt/decrypt.jsing1-220/+1
This adds significant complexity to the code. On amd64 and aarch64 it results in a minimal slowdown for aligned inputs and a performance improvement for unaligned inputs. ok beck@ joshua@ tb@