summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorNicola Tuveri <nic.tuv@gmail.com>2020-06-13 17:29:09 +0300
committerNicola Tuveri <nic.tuv@gmail.com>2020-06-21 15:46:54 +0300
commit35bb0e44c6168facbb3acedbc7d4f2dcbdd65224 (patch)
treee8f54bc00c2f5224fa81213109751465cbbf32c8 /include
parent4dcfdfce93d6c5b5065323b0488ea93a938acb49 (diff)
Refactor BN_R_NO_INVERSE logic in internal functions
Closes #12129 As described in https://github.com/openssl/openssl/issues/12129 the readability of the internal functions providing the two alternative implementations for `BN_mod_inverse()` is a bit lacking. Both these functions are now completely internal, so we have the flexibility needed to slightly improve readability and remove unnecessary NULL checks. The main changes here are: - rename `BN_mod_inverse_no_branch()` as `bn_mod_inverse_no_branch()`: this function is `static` so it is not even visible within the rest of libcrypto. By convention upcase prefixes are reserved for public functions. - remove `if (pnoinv == NULL)` checks in `int_bn_mod_inverse()`: this function is internal to the BN module and we can guarantee that all callers pass non-NULL arguments. - `bn_mod_inverse_no_branch()` takes an extra `int *pnoinv` argument, so that it can signal if no inverse exists for the given inputs: in this way the caller is in charge of raising `BN_R_NO_INVERSE` as it is the case for the non-consttime implementation of `int_bn_mod_inverse()`. - `BN_mod_inverse()` is a public function and must guarantee that the internal functions providing the actual implementation receive valid arguments. If the caller passes a NULL `BN_CTX` we create a temporary one for internal use. - reorder function definitions in `crypto/bn/bn_gcd.c` to avoid forward declaration of `static` functions (in preparation for inlining) - inline `bn_mod_inverse_no_branch()`. (Backport to 1.1.1 from https://github.com/openssl/openssl/pull/12142) (cherry picked from commit 5d8b3a3ef2941b8822523742a0408ca6896aa65d) Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/12169)
Diffstat (limited to 'include')
-rw-r--r--include/openssl/bn.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/openssl/bn.h b/include/openssl/bn.h
index 8af05d00e5..88091df693 100644
--- a/include/openssl/bn.h
+++ b/include/openssl/bn.h
@@ -56,7 +56,7 @@ extern "C" {
* avoid leaking exponent information through timing,
* BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
* BN_div() will call BN_div_no_branch,
- * BN_mod_inverse() will call BN_mod_inverse_no_branch.
+ * BN_mod_inverse() will call bn_mod_inverse_no_branch.
*/
# define BN_FLG_CONSTTIME 0x04
# define BN_FLG_SECURE 0x08