ec/ecp_nistz256.c: harmonize with latest indent script.
[oweals/openssl.git] / crypto / bn / bn_exp.c
index c121122f3cb28668fb900cb90475443afdfe8296..9dc24e60ac7e4c0c0d5e8a60a91659d55a205a11 100644 (file)
  *
  */
 
-#define OPENSSL_FIPSAPI
+
 
 #include "cryptlib.h"
 #include "bn_lcl.h"
@@ -200,7 +200,8 @@ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
        bn_check_top(p);
        bn_check_top(m);
 
-       /* For even modulus  m = 2^k*m_odd,  it might make sense to compute
+       /*-
+        * For even modulus  m = 2^k*m_odd,  it might make sense to compute
         * a^p mod m_odd  and  a^p mod 2^k  separately (with Montgomery
         * exponentiation for the odd part), using appropriate exponent
         * reductions, and combine the results using the CRT.
@@ -239,7 +240,7 @@ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
         * the top bit being set.  It was caused by an error in BN_div
         * with negatives.  There was also another problem when for a^b%m
         * a >= m.  eay 07-May-97 */
-/*     if ((m->d[m->top-1]&BN_TBIT) && BN_is_odd(m)) */
+       /* if ((m->d[m->top-1]&BN_TBIT) && BN_is_odd(m)) */
 
        if (BN_is_odd(m))
                {
@@ -903,14 +904,14 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
     else
 #endif
 #if defined(OPENSSL_BN_ASM_MONT5)
-    /* This optimization uses ideas from http://eprint.iacr.org/2011/239,
-     * specifically optimization of cache-timing attack countermeasures
-     * and pre-computation optimization. */
-
-    /* Dedicated window==4 case improves 512-bit RSA sign by ~15%, but as
-     * 512-bit RSA is hardly relevant, we omit it to spare size... */ 
-    if (window==5)
+    if (window==5 && top>1)
        {
+       /* This optimization uses ideas from http://eprint.iacr.org/2011/239,
+        * specifically optimization of cache-timing attack countermeasures
+        * and pre-computation optimization. */
+
+       /* Dedicated window==4 case improves 512-bit RSA sign by ~15%, but as
+        * 512-bit RSA is hardly relevant, we omit it to spare size... */ 
        void bn_mul_mont_gather5(BN_ULONG *rp,const BN_ULONG *ap,
                        const void *table,const BN_ULONG *np,
                        const BN_ULONG *n0,int num,int power);