summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Add more regress tests for BN_usub().jsing2023-01-311-1/+22
| | | | | | This adds more tests for BN_usub(), particularly where b > a, which should be an error condition. One of these currently succeeds and produces incorrect results.
* Remove sparc related files from libcrypto.jsing2023-01-314-1678/+0
| | | | | | | | The sparc platform got retired a while back, however some parts remained hiding in libcrypto. Mop these up (along with the bn_arch.h that I introduced). Spotted by and ok tb@
* Fix logic of picmeup() to only produce one set of statements on OpenBSD; thismiod2023-01-301-1/+1
| | | | got accidentally lost in 1.4.
* Use utime in order to make benchmarks less noisy and more consistent.jsing2023-01-291-5/+14
|
* Set BN_FLG_CONSTTIME on benchmark inputs.jsing2023-01-291-1/+4
| | | | | The public APIs still change behaviour based on BN_FLG_CONSTTIME - set it to avoid benchmark noise.
* Add benchmarks for BN_div()jsing2023-01-291-10/+147
|
* Correct setup for BN_mul/BN_sqr benchmarks.jsing2023-01-291-4/+4
| | | | BN_rand() takes a bit length, not the top bit.
* Rename bn_mul.c regress to bn_mul_div.c.jsing2023-01-292-5/+5
|
* Remove the now empty/unused bn_depr.c.jsing2023-01-292-66/+1
|
* Use s2n-bignum assembly implementations for libcrypto bignum on amd64.jsing2023-01-292-3/+90
| | | | | | | This switches the core bignum assembly implementations from x86_64-gcc.c to s2n-bignum for amd64. ok miod@ tb@
* Stop installing x509_verify.htb2023-01-281-2/+1
| | | | ok jsing
* Switch regress to using x509_verify.h from libcrypto instead of thetb2023-01-284-8/+12
| | | | one in /usr/include/openssl.
* Stop relying on x509_verify.h being publictb2023-01-281-3/+2
| | | | | | | | | | | | Use x509_verify.h from the libcrypto sources instead of the public copy. The x509_verify.h header was installed as a public header since early on we had ideas of using a public API in libtls, but we eventually decided against that. It makes no sense to install a public header that hides everything behind LIBRESSL_INTERNAL. The public API will not be exposed anytime soon if at all. ok jsing
* Remove comment referencing bn_depr.c.jsing2023-01-281-6/+1
|
* Move the three functions that are in bn_depr.c back to bn_prime.c.jsing2023-01-282-53/+57
| | | | | | | They should go away, but they have not yet disappeared and this consolidates the source files. Discussed with tb@
* Move the more readable version of bn_mul_mont() from bn_asm.c to bn_mont.c.jsing2023-01-282-168/+55
| | | | | | | | | Nothing actually uses this code, as OPENSSL_BN_ASM_MONT is not defined unless there is an assembly implementation available (not to mention that defining both OPENSSL_NO_ASM and OPENSSL_BN_ASM_MONT at the same time is extra strange). Discussed with tb@
* Fix previous.jsing2023-01-281-4/+9
|
* Provide bn_div_rem_words() and make use of it.jsing2023-01-285-67/+87
| | | | | | | | | | | | | | | | Provide a function that divides a double word (h:l) by d, returning the quotient q and the remainder r, such that q * d + r is equal to the numerator. Call this from the three places that currently implement this themselves. This is implemented with some slight indirection, which allows for per architecture implementations, replacing the define/macro tangle, which messes with variables that are not passed to it. Also remove a duplicate of bn_div_words() for the BN_ULLONG && BN_DIV2W case - this is already handled. ok tb@
* Add openssl 3.0 interop teststb2023-01-275-12/+70
| | | | | | | | | | The plan is to retire the 1.0.2 interop tests soon so as to be able to drop the dead and dangerous OpenSSL 1.0.2 port. The cert part is extremely slow on arm64: the whole interop test on an m1 is about 10x slower (~45 min!) than on a modern amd64 laptop, so people running regress may want to wait a bit with adding OpenSSL 3 to their test boxes until this is sorted out.
* Check return value of X509_digestjob2023-01-241-2/+3
| | | | OK tb@
* Change include from _internal_s2n_bignum.h to s2n_bignum_internal.h.jsing2023-01-239-9/+9
|
* Include the ISC license from s2n-bignum's LICENSE file.jsing2023-01-239-9/+108
|
* Bring in various s2n-bignum functions for amd64.jsing2023-01-239-0/+1458
| | | | | | | | This brings in bignum_add(), bignum_cmadd(), bignum_cmul(), bignum_mul() and bignum_sub(), along with bignum_{mul,sqr}_4_8_alt() and bignum_{mul,sqr}_8_16_alt(). Discussed with tb@
* Move bn_mul_add_words() and bn_mul_words() from bn_asm.c to bn_mul.c.jsing2023-01-237-138/+156
| | | | | | These are wrapped with #ifndef HAVE_BN_ADD_MUL_WORDS/HAVE_BN_MUL_WORDS, which are defined for architectures that provide their own assembly versions.
* Move bn_sqr_words from bn_asm.c to bn_sqr.c.jsing2023-01-237-59/+69
| | | | | This is wrapped with #ifndef HAVE_BN_SQR_WORDS, which is then defined for architectures that provide their own assembly versions.
* Move bn_div_words from bn_asm.c to bn_div.c.jsing2023-01-237-86/+98
| | | | | This is wrapped with #ifndef HAVE_BN_DIV_WORDS, which are defined for architectures that provide their own assembly versions.
* Include bn_arch.h now that we're using defines from it.jsing2023-01-231-1/+2
|
* Move bn_add_words() and bn_sub_words from bn_asm.c to bn_add.c.jsing2023-01-237-159/+184
| | | | | These are wrapped with #ifndef HAVE_BN_ADD_WORDS/HAVE_BN_SUB_WORDS, which are defined for architectures that provide their own assembly versions.
* Enable bn_sqr() on amd64.jsing2023-01-211-1/+2
| | | | ok tb@
* Provide an implementation of bn_sqr() that calls s2n-bignum's bignum_sqr().jsing2023-01-213-3/+41
| | | | ok tb@
* Fix include.jsing2023-01-211-1/+1
|
* Include the ISC license from s2n-bignum's LICENSE file.jsing2023-01-211-1/+12
|
* Bring in s2n-bignum's bignum_sqr() for amd64.jsing2023-01-211-0/+185
| | | | ok tb@
* Include the ISC license from s2n-bignum's LICENSE file.jsing2023-01-212-1/+25
|
* Bring in the internal and "public" headers for s2n-bignum.jsing2023-01-212-0/+862
| | | | | | | | | s2n-bignum provides a collection of bignum routines that are written in pure machine code. Each function is written in constant-time style and has a formal proof. We intend on making use of these for libcrypto's bignum implementation on aarch64 and amd64. ok tb@
* Refactor BN_mul().jsing2023-01-211-67/+81
| | | | | | | | | | | | | This splits BN_mul() into two parts, one of which is a separate bn_mul() function. This makes the code more readable and managable, while also providing a better entry point for assembly optimisation. A separate bn_mul() is provided for the BN_RECURSION implementation, to reduce complexity. This also enables bn_mul_comba4() for four word long bignums - this was disabled for unknown reasons. ok tb@
* Refactor BN_sqr().jsing2023-01-211-50/+80
| | | | | | | | This splits BN_sqr() into two parts, one of which is a separate bn_sqr() function. This makes the code more readable and managable, while also providing a better entry point for assembly optimisation. ok tb@
* Provide basic benchmarks for BN_mul() and BN_sqr().jsing2023-01-212-2/+275
|
* Reorder functions and drop unnessary static prototypes.jsing2023-01-211-372/+363
| | | | No functional change.
* Refactor x509v3_cache_extensionsjob2023-01-203-41/+26
| | | | | | | Simplify x509v3_cache_extensions() by using a wrapper to avoid duplication of code for locking and checking the EXFLAG_INVALID flag. OK tb@
* Remove various #ifndef BN_SQR_COMBA.jsing2023-01-201-19/+1
| | | | | | bn_sqr_comba{4,8}() is now always available. ok tb@
* Move bn_{mul,sqr}_comba{4,8}() from bn_asm.c to bn_mul.c/bn_sqr.c.jsing2023-01-208-306/+302
| | | | | | | Wrap these in HAVE_BN_{MUL,SQR}_COMBA{4,8} defines. Add these defines to bn_arch.h where the architecture currently provides its own version. ok tb@
* Move {mul,sqr}_add_c{,2} macros from bn_asm.c to bn_local.h.jsing2023-01-203-153/+160
| | | | | | | | | | | These depend on other macros that are in already in bn_local.h and this makes them available to other source files. A lot more clean up will be needed in the future. Of course x86_64-gcc.c makes use of the same macro names - sprinkle some undef in there for the time being. ok tb@
* Remove unused code.jsing2023-01-203-467/+15
| | | | ok tb@
* Replace BN_DIV3W with HAVE_BN_DIV_3_WORDS (in bn_arch.h).jsing2023-01-203-6/+8
| | | | ok tb@
* Provide a per machine bn_arch.h.jsing2023-01-2015-1/+338
| | | | | | | This will provide a location for machine specific defines, prototypes and inline functions. ok tb@
* Reorder functions.jsing2023-01-201-344/+344
| | | | No functional change.
* Reorder functions for easier maintenance.jsing2023-01-201-30/+30
| | | | No functional change.
* Remove more unused assembly generation scripts.jsing2023-01-198-696/+0
|
* Remove various unused assembly files and assembly generation scripts.jsing2023-01-1910-7760/+0
| | | | | | These are just creating clutter and cause grep noise. ok miod@