BN_copy now propagates BN_FLG_CONSTTIME
authorSamuel Weiser <samuel.weiser@iaik.tugraz.at>
Sat, 16 Sep 2017 14:52:44 +0000 (16:52 +0200)
committerMatt Caswell <matt@openssl.org>
Wed, 27 Sep 2017 09:09:39 +0000 (10:09 +0100)
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4377)

(cherry picked from commit 9f9442918aeaed5dc2442d81ab8d29fe3e1fb906)

crypto/bn/bn_lib.c
crypto/bn/bn_mont.c

index fd06d08a8371d4a32684bd04314973fb50975800..c2dff7da9b16be824178226b33d9018c93806ac2 100644 (file)
@@ -406,6 +406,9 @@ BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
     memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);
 #endif
 
+    if (BN_get_flags(b, BN_FLG_CONSTTIME) != 0)
+        BN_set_flags(a, BN_FLG_CONSTTIME);
+
     a->top = b->top;
     a->neg = b->neg;
     bn_check_top(a);
index 90e1ba296e23988fa2962dd2f39320fd37f4a6be..faea4684faf70280108cbe9534ed46f98a718167 100644 (file)
@@ -258,8 +258,6 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
     R = &(mont->RR);            /* grab RR as a temp */
     if (!BN_copy(&(mont->N), mod))
         goto err;               /* Set N */
-    if (BN_get_flags(mod, BN_FLG_CONSTTIME) != 0)
-        BN_set_flags(&(mont->N), BN_FLG_CONSTTIME);
     mont->N.neg = 0;
 
 #ifdef MONT_WORD