boringssl/crypto/bn
Brian Smith 86080c336f Verify RSA private key operation regardless of whether CRT is used.
Previously, the verification was only done when using the CRT method,
as the CRT method has been shown to be extremely sensitive to fault
attacks. However, there's no reason to avoid doing the verification
when the non-CRT method is used (performance-sensitive applications
should always be using the CRT-capable keys).

Previously, when we detected a fault (attack) through this verification,
libcrypto would fall back to the non-CRT method and assume that the
non-CRT method would give a correct result, despite having just
detecting corruption that is likely from an attack. Instead, just give
up, like NSS does.

Previously, the code tried to handle the case where the input was not
reduced mod rsa->n. This is (was) not possible, so avoid trying to
handle that. This simplifies the equality check and lets us use
|CRYPTO_memcmp|.

Change-Id: I78d1e55520a1c8c280cae2b7256e12ff6290507d
Reviewed-on: https://boringssl-review.googlesource.com/7582
Reviewed-by: David Benjamin <davidben@google.com>
2016-05-04 22:58:17 +00:00
..
asm bn/asm/x86_64-mont5.pl: unify gather procedure in hardly used path and reorganize/harmonize post-conditions. 2016-03-01 18:04:20 +00:00
add.c Switch unrolled loop in BN_usub with memcpy. 2015-12-16 17:38:48 +00:00
bn_asn1.c Rename the BIGNUM ASN.1 functions. 2016-01-27 22:37:44 +00:00
bn_test.cc Update some comments in bn_test.c in light of acb24518. 2016-02-02 18:22:19 +00:00
bn.c Set |bn->neg| to zero in |bn_set_words|. 2016-03-11 19:21:11 +00:00
CMakeLists.txt Add AArch64 Montgomery assembly. 2015-11-10 19:13:46 +00:00
cmp.c Verify RSA private key operation regardless of whether CRT is used. 2016-05-04 22:58:17 +00:00
convert.c Fix memory leak on error in BN_mpi2bn. 2016-04-29 16:20:14 +00:00
ctx.c Remove the func parameter to OPENSSL_PUT_ERROR. 2015-07-16 02:02:37 +00:00
div.c Move |bn_div_words| to crypto/bn/div.c and make it static. 2016-02-25 16:16:14 +00:00
exponentiation.c Remove unnecessary |BN_CTX_start|/|BN_CTX_end| in |BN_mod_exp_mont_consttime|. 2016-03-20 17:16:27 +00:00
gcd.c s/BN_BITS/BN_BITS2/ in |BN_mod_inverse_ex|; remove |BN_BITS| & |BN_MASK|. 2015-11-19 01:39:32 +00:00
generic.c Move |bn_div_words| to crypto/bn/div.c and make it static. 2016-02-25 16:16:14 +00:00
internal.h Avoid potential uninitialized memory read in crypto/ec/p256-x86_64.c. 2016-03-09 19:04:36 +00:00
kronecker.c
montgomery.c Make return value of |BN_MONT_CTX_set_locked| int. 2016-04-18 23:19:08 +00:00
mul.c Make local functions static. 2016-03-20 16:37:58 +00:00
prime.c Avoid signed/unsigned comparison in crypto/bn's |probable_prime|. 2015-10-26 21:27:12 +00:00
random.c Remove the func parameter to OPENSSL_PUT_ERROR. 2015-07-16 02:02:37 +00:00
rsaz_exp.c Use |alignas| for alignment. 2016-01-25 23:05:04 +00:00
rsaz_exp.h Fix license on rsaz_exp.h. 2015-07-27 22:21:11 +00:00
shift.c Remove the func parameter to OPENSSL_PUT_ERROR. 2015-07-16 02:02:37 +00:00
sqrt.c Remove the func parameter to OPENSSL_PUT_ERROR. 2015-07-16 02:02:37 +00:00