boringssl/crypto
David Benjamin cfd50c63a1 Route the tuned add/dbl implementations out of EC_METHOD.
Some consumer stumbled upon EC_POINT_{add,dbl} being faster with a
"custom" P-224 curve than the built-in one and made "custom" clones to
work around this. Before the EC_FELEM refactor, EC_GFp_nistp224_method
used BN_mod_mul for all reductions in fallback point arithmetic (we
primarily support the multiplication functions and keep the low-level
point arithmetic for legacy reasons) which took quite a performance hit.

EC_FELEM fixed this, but standalone felem_{mul,sqr} calls out of
nistp224 perform a lot of reductions, rather than batching them up as
that implementation is intended. So it is still slightly faster to use a
"custom" curve.

Custom curves are the last thing we want to encourage, so just route the
tuned implementations out of EC_METHOD to close this gap. Now the
built-in implementation is always solidly faster than (or identical to)
the custom clone.  This also reduces the number of places where we mix
up tuned vs. generic implementation, which gets us closer to making
EC_POINT's representation EC_METHOD-specific.

Change-Id: I843e1101a6208eaabb56d29d342e886e523c78b4
Reviewed-on: https://boringssl-review.googlesource.com/c/32848
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: Adam Langley <agl@google.com>
2018-11-06 00:17:19 +00:00
..
asn1 Fix undefined function pointer casts in {d2i,i2d}_Foo_{bio,fp} 2018-10-01 17:34:53 +00:00
base64 Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
bio Always push errors on BIO_read_asn1 failure. 2018-10-11 19:53:15 +00:00
bn_extra Replace BIO_new + BIO_set_fp with BIO_new_fp. 2018-09-26 17:21:08 +00:00
buf Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
bytestring Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
chacha Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
cipher_extra Test CBC padding more aggressively. 2018-10-30 20:53:00 +00:00
cmac Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
conf Use proper functions for lh_*. 2018-10-15 23:37:04 +00:00
curve25519 Automatically disable assembly with MSAN. 2018-09-07 21:12:37 +00:00
dh Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
digest_extra Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
dsa Tidy up dsa_sign_setup. 2018-10-25 21:51:57 +00:00
ec_extra Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
ecdh_extra Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
ecdsa_extra Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
engine Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
err Add an interface for QUIC integration. 2018-10-31 20:38:10 +00:00
evp Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
fipsmodule Route the tuned add/dbl implementations out of EC_METHOD. 2018-11-06 00:17:19 +00:00
hkdf Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
hmac_extra Convert a number of tests to GTest. 2017-06-01 17:02:13 +00:00
lhash Fix undefined function pointer casts in LHASH. 2018-10-15 23:53:24 +00:00
obj Use proper functions for lh_*. 2018-10-15 23:37:04 +00:00
pem Rewrite PEM_X509_INFO_read_bio. 2018-10-01 17:35:10 +00:00
perlasm Don't include quotes in heredocs. 2018-09-14 16:51:00 +00:00
pkcs7 Fix undefined function pointer casts in {d2i,i2d}_Foo_{bio,fp} 2018-10-01 17:34:53 +00:00
pkcs8 Fix undefined function pointer casts in {d2i,i2d}_Foo_{bio,fp} 2018-10-01 17:34:53 +00:00
poly1305 Automatically disable assembly with MSAN. 2018-09-07 21:12:37 +00:00
pool Use proper functions for lh_*. 2018-10-15 23:37:04 +00:00
rand_extra [rand] Disable RandTest.Fork on Fuchsia 2018-10-16 18:57:29 +00:00
rc4 Flatten most of the crypto target. 2018-09-05 23:41:25 +00:00
rsa_extra Rename OPENSSL_NO_THREADS, part 1. 2018-09-26 19:10:02 +00:00
stack Test the binary search more aggressively. 2018-10-02 00:02:19 +00:00
test Add some RAND_bytes tests. 2018-09-06 23:54:57 +00:00
x509 Always push errors on BIO_read_asn1 failure. 2018-10-11 19:53:15 +00:00
x509v3 Fix undefined function pointer casts in {d2i,i2d}_Foo_{bio,fp} 2018-10-01 17:34:53 +00:00
CMakeLists.txt Add a test for STACK_OF(T). 2018-09-26 23:28:50 +00:00
compiler_test.cc Test that nullptr has the obvious memory representation. 2017-07-28 17:39:28 +00:00
constant_time_test.cc Add a test for CRYPTO_memcmp. 2018-03-27 16:22:47 +00:00
cpu-aarch64-fuchsia.c Add cpu-aarch64-fuchsia.c 2018-02-13 20:12:47 +00:00
cpu-aarch64-linux.c Add cpu-aarch64-fuchsia.c 2018-02-13 20:12:47 +00:00
cpu-arm-linux_test.cc Fix GCC (8.2.1) build error. 2018-09-06 15:38:11 +00:00
cpu-arm-linux.c Fix corner case in cpuinfo parser. 2018-09-05 00:00:14 +00:00
cpu-arm-linux.h Fix corner case in cpuinfo parser. 2018-09-05 00:00:14 +00:00
cpu-arm.c Rewrite ARM feature detection. 2016-03-26 04:54:44 +00:00
cpu-intel.c Change OPENSSL_cpuid_setup to reserve more extended feature space. 2018-04-19 20:48:58 +00:00
cpu-ppc64le.c Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
crypto.c Automatically disable assembly with MSAN. 2018-09-07 21:12:37 +00:00
ex_data.c Unexport more of lhash. 2017-10-25 04:17:18 +00:00
internal.h Remove support for GCC 4.7. 2018-10-18 19:01:20 +00:00
mem.c Use sdallocx, if available, when deallocating. 2018-09-17 21:02:59 +00:00
refcount_c11.c Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
refcount_lock.c Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
refcount_test.cc Rename OPENSSL_NO_THREADS, part 1. 2018-09-26 19:10:02 +00:00
self_test.cc Extract FIPS KAT tests into a function. 2018-01-22 20:16:38 +00:00
thread_none.c Rename OPENSSL_NO_THREADS, part 1. 2018-09-26 19:10:02 +00:00
thread_pthread.c Delete |pthread_key_t| on dlclose. 2018-02-20 19:53:24 +00:00
thread_test.cc Rename OPENSSL_NO_THREADS, part 1. 2018-09-26 19:10:02 +00:00
thread_win.c Reland "Fix bssl client/server's error-handling." 2018-05-07 17:19:59 +00:00
thread.c Remove a bunch of unnecessary includes. 2016-06-28 20:31:14 +00:00