diff options
author | Andy Polyakov <appro@openssl.org> | 2018-07-06 14:54:34 +0200 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2018-08-01 16:14:41 +0200 |
commit | c1c0e4f1a358072767860764cd43335fc7316176 (patch) | |
tree | 8e9c9f4f7c3ebf63dbf510b2b169bdc4814ca9ee /crypto | |
parent | 7cca1f96bf82b22ab49f179bae7df1562d0a104b (diff) |
bn/bn_mont.c: improve readability of post-condition code.
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6810)
(cherry picked from commit 6c90182a5f87af1a1e462536e7123ad2afb84c43)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/bn/bn_mont.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/crypto/bn/bn_mont.c b/crypto/bn/bn_mont.c index c1703650ef..cc8f927ee2 100644 --- a/crypto/bn/bn_mont.c +++ b/crypto/bn/bn_mont.c @@ -233,15 +233,14 @@ static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont) */ ap = &(r->d[nl]); + carry -= bn_sub_words(rp, ap, np, nl); /* - * |v| is one if |ap| - |np| underflowed or zero if it did not. Note |v| - * cannot be -1. That would imply the subtraction did not fit in |nl| words, - * and we know at most one subtraction is needed. + * |carry| is -1 if |ap| - |np| underflowed or zero if it did not. Note + * |carry| cannot be 1. That would imply the subtraction did not fit in + * |nl| words, and we know at most one subtraction is needed. */ - v = bn_sub_words(rp, ap, np, nl) - carry; - v = 0 - v; for (i = 0; i < nl; i++) { - rp[i] = (v & ap[i]) | (~v & rp[i]); + rp[i] = (carry & ap[i]) | (~carry & rp[i]); ap[i] = 0; } bn_correct_top(r); |