Unused variable removed.
[openssl.git] / crypto / bn / bn_gf2m.c
index c969685c87467a0b18d4c2580009f1fa77bd72e6..6edd8ab22b746e903de69197a6d995f69c6281ad 100644 (file)
  *
  */
 
+/* NOTE: This file is licensed pursuant to the OpenSSL license below
+ * and may be modified; but after modifications, the above covenant
+ * may no longer apply!  In such cases, the corresponding paragraph
+ * ["In addition, Sun covenants ... causes the infringement."] and
+ * this note can be edited out; but please keep the Sun copyright
+ * notice and attribution. */
+
 /* ====================================================================
  * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
  *
@@ -316,10 +323,10 @@ int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const unsigned int p[])
        int n, dN, d0, d1;
        BN_ULONG zz, *z;
        
-       /* Since the algorithm does reduction in place, if a == r, copy the
+       /* Since the algorithm does reduction in the r value, if a != r, copy the
         * contents of a into r so we can do reduction in r. 
         */
-       if ((a != NULL) && (a->d != r->d))
+       if (a != r)
                {
                if (!bn_wexpand(r, a->top)) return 0;
                for (j = 0; j < a->top; j++)
@@ -370,12 +377,16 @@ int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const unsigned int p[])
 
                for (k = 1; p[k] > 0; k++)
                        {
+                       BN_ULONG tmp_ulong;
+
                        /* reducing component t^p[k]*/
                        n = p[k] / BN_BITS2;   
                        d0 = p[k] % BN_BITS2;
                        d1 = BN_BITS2 - d0;
                        z[n] ^= (zz << d0);
-                       if (d0) z[n+1] ^= (zz >> d1);
+                       tmp_ulong = zz >> d1;
+                        if (d0 && tmp_ulong)
+                                z[n+1] ^= tmp_ulong;
                        }
 
                
@@ -427,7 +438,7 @@ int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const unsig
        BN_CTX_start(ctx);
        if ((s = BN_CTX_get(ctx)) == NULL) goto err;
        
-       zlen = a->top + b->top;
+       zlen = a->top + b->top + 4;
        if (!bn_wexpand(s, zlen)) goto err;
        s->top = zlen;
 
@@ -842,7 +853,8 @@ int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
  */
 int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const unsigned int p[], BN_CTX *ctx)
        {
-       int ret = 0, i, count = 0;
+       int ret = 0, count = 0;
+       unsigned int j;
        BIGNUM *a, *z, *rho, *w, *w2, *tmp;
        
        BN_CTX_start(ctx);
@@ -863,7 +875,7 @@ int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const unsigned int p
                {
                /* compute half-trace of a */
                if (!BN_copy(z, a)) goto err;
-               for (i = 1; i <= (p[0] - 1) / 2; i++)
+               for (j = 1; j <= (p[0] - 1) / 2; j++)
                        {
                        if (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;
                        if (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;
@@ -883,7 +895,7 @@ int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const unsigned int p
                        if (!BN_GF2m_mod_arr(rho, rho, p)) goto err;
                        if (!BN_zero(z)) goto err;
                        if (!BN_copy(w, rho)) goto err;
-                       for (i = 1; i <= p[0] - 1; i++)
+                       for (j = 1; j <= p[0] - 1; j++)
                                {
                                if (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;
                                if (!BN_GF2m_mod_sqr_arr(w2, w, p, ctx)) goto err;