mbedtls/library
Gilles Peskine 1acf7cb76c Avoid reallocating during subtraction
mbedtls_mpi_sub_abs systematically allocated a new mpi when the result
was aliased with the right operand (i.e. X = A - X). This aliasing
very commonly happens during ECP operations. Rewrite the function to
allocate only if the result might not fit otherwise.

This costs a few bytes of code size in bignum.o, and might make
mbedtls_mpi_sub_abs very very slightly slower when no reallocation is
done. However, there is a substantial performance gain in ECP
operations with Montgomery curves (10-20% on my PC).

test_suite_ecp drops from 1422794 to 1271506 calls to calloc().

This commit also fixes a bug whereby mbedtls_mpi_sub_abs would leak
memory when X == B (so TB was in use) and the result was negative.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
2020-12-07 22:51:25 +01:00
..
.gitignore Split libs with make + general make cleanups 2015-06-25 10:59:56 +02:00
aes.c Merge pull request #3823 from gabor-mezei-arm/3818_MBEDTLS_AES_SETKEY_DEC_ALT_excludes_MBEDTLS_CIPHER_MODE_XTS 2020-11-09 20:44:08 +01:00
aesni.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
arc4.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
aria.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
asn1parse.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
asn1write.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
base64.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
bignum.c Avoid reallocating during subtraction 2020-12-07 22:51:25 +01:00
blowfish.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
camellia.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ccm.c Fix additional data length field check for CCM 2020-10-08 12:09:44 +02:00
certs.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
chacha20.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
chachapoly.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
check_crypto_config.h Minor updates to address review comments 2020-11-30 21:06:05 -08:00
cipher.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
cipher_wrap.c Do not set IV size for ECB mode ciphers 2020-11-06 09:40:21 +01:00
cmac.c Fix mismatched function parameters (prototype/definition) 2020-11-25 01:13:12 -03:00
CMakeLists.txt Build: Use new-style syntax in link-libraries 2020-10-20 13:44:44 +01:00
common.h Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ctr_drbg.c Support set *_drbg reseed interval before seed 2020-11-25 14:25:56 -08:00
debug.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
des.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
dhm.c Merge development into development-restricted 2020-08-20 11:07:12 +01:00
ecdh.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ecdsa.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ecjpake.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ecp.c List Montgomery curves in mbedtls_ecp_curve_list() 2020-09-30 17:02:25 +02:00
ecp_curves.c Optimize fix_negative 2020-12-07 22:51:25 +01:00
entropy.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
entropy_poll.c Fix the build when _GNU_SOURCE is defined to a non-empty value 2020-10-01 11:27:17 +02:00
error.c Simplify conditional guards in error.c 2020-11-16 15:02:16 +01:00
gcm.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
havege.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
hkdf.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
hmac_drbg.c Support set *_drbg reseed interval before seed 2020-11-25 14:25:56 -08:00
Makefile Merge pull request #3568 from hanno-arm/tls13_experimental_key_schedule_1 2020-09-16 11:40:06 +01:00
md.c Merge pull request #3578 from gilles-peskine-arm/md_setup-leak-development 2020-08-21 09:19:12 +02:00
md2.c Use single-line string literals. 2020-08-21 21:08:56 +02:00
md4.c Use single-line string literals. 2020-08-21 21:08:56 +02:00
md5.c Use single-line string literals. 2020-08-21 21:08:56 +02:00
memory_buffer_alloc.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
net_sockets.c Use socklen_t on Android and other POSIX-compliant system 2020-09-30 16:53:37 +08:00
nist_kw.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
oid.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
padlock.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
pem.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
pk.c psa: Move from key handle to key identifier 2020-11-10 16:00:41 +01:00
pk_wrap.c psa: Move from key handle to key identifier 2020-11-10 16:00:41 +01:00
pkcs5.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
pkcs11.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
pkcs12.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
pkparse.c fix return code 2020-09-22 11:57:16 +02:00
pkwrite.c psa: Move from key handle to key identifier 2020-11-10 16:00:41 +01:00
platform.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
platform_util.c Fixes two _POSIX_C_SOURCE typos. 2020-11-13 09:20:18 +00:00
poly1305.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
psa_crypto.c Update guards for ALG_SHA_224 and ALG_SHA_384 in crypto library 2020-12-03 06:07:04 -08:00
psa_crypto_core.h Improve/fix documentation 2020-11-20 13:57:15 +01:00
psa_crypto_driver_wrappers.c Plug in the entry point for public key export through driver 2020-11-20 17:31:24 +01:00
psa_crypto_driver_wrappers.h Plug in the entry point for public key export through driver 2020-11-20 17:31:24 +01:00
psa_crypto_invasive.h psa: Fix references to macros in comments 2020-11-10 16:18:07 +01:00
psa_crypto_its.h psa: Fix references to macros in comments 2020-11-10 16:18:07 +01:00
psa_crypto_se.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
psa_crypto_se.h Changes PSA key storage format to include key bits 2020-10-07 10:54:24 +02:00
psa_crypto_service_integration.h Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
psa_crypto_slot_management.c Improve/fix documentation 2020-11-20 13:57:15 +01:00
psa_crypto_slot_management.h Improve/fix documentation 2020-11-20 13:57:15 +01:00
psa_crypto_storage.c psa: Fix references to macros in comments 2020-11-10 16:18:07 +01:00
psa_crypto_storage.h psa: Fix references to macros in comments 2020-11-10 16:18:07 +01:00
psa_its_file.c psa_its: Annotate file removal after a failed creation 2020-08-25 22:49:19 +02:00
ripemd160.c Use single-line string literals. 2020-08-21 21:08:56 +02:00
rsa.c Restore retry in rsa_prepare_blinding() 2020-09-25 08:43:57 -05:00
rsa_internal.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
sha1.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
sha256.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
sha512.c Use single-line string literals. 2020-08-21 21:08:56 +02:00
ssl_cache.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ssl_ciphersuites.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ssl_cli.c psa: Move from key handle to key identifier 2020-11-10 16:00:41 +01:00
ssl_cookie.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ssl_invasive.h Merge pull request #736 from mpg/cf-varpos-copy-dev-restricted 2020-08-25 14:35:55 +01:00
ssl_msg.c Fix: Add missing arguments to debug message. 2020-12-02 10:13:02 +01:00
ssl_srv.c Merge pull request #3547 from ronald-cron-arm/psa-openless 2020-11-20 18:48:33 +01:00
ssl_ticket.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
ssl_tls.c Change function casting in ssl_calc_finished_tls_sha384 2020-11-25 07:30:26 -03:00
ssl_tls13_keys.c Comment on hardcoding of maximum HKDF key expansion of 255 Bytes 2020-09-16 09:50:17 +01:00
ssl_tls13_keys.h Comment on hardcoding of maximum HKDF key expansion of 255 Bytes 2020-09-16 09:50:17 +01:00
threading.c Fixes two _POSIX_C_SOURCE typos. 2020-11-13 09:20:18 +00:00
timing.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
version.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
version_features.c Comply with mbedtls naming rules 2020-10-29 01:14:49 +01:00
x509.c x509.c: Remove one unnecessary cast 2020-09-01 11:04:53 +02:00
x509_create.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
x509_crl.c Merge development into development-restricted 2020-08-20 11:07:12 +01:00
x509_crt.c Merge pull request #3433 from raoulstrackx/raoul/verify_crl_without_time 2020-08-26 12:56:11 +02:00
x509_csr.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
x509write_crt.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
x509write_csr.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00
xtea.c Update copyright notices to use Linux Foundation guidance 2020-08-19 10:35:41 +02:00