BN_legendre is no longer needed now that OpenSSL has BN_kronecker.
authorBodo Möller <bodo@openssl.org>
Wed, 29 Nov 2000 19:59:59 +0000 (19:59 +0000)
committerBodo Möller <bodo@openssl.org>
Wed, 29 Nov 2000 19:59:59 +0000 (19:59 +0000)
crypto/bn/bn_modfs.c
crypto/bn/bn_modfs.h

index 6b88156..b4c245c 100644 (file)
 #define MAX_ROUNDS     10
 
 
-int BN_legendre(BIGNUM *a, BIGNUM *p, BN_CTX *ctx) 
-       {
-       BIGNUM *x, *y, *y2;
-       BN_ULONG m;
-       int L;
-
-       assert(a != NULL && p != NULL && ctx != NULL);
-
-       BN_CTX_start(ctx);
-       x = BN_CTX_get(ctx);
-       y = BN_CTX_get(ctx);
-       y2 = BN_CTX_get(ctx);
-       if (y2 == NULL) goto err;
-
-       if (!BN_nnmod(x, a, p, ctx)) goto err;
-       if (BN_is_zero(x)) 
-               {
-               BN_CTX_end(ctx);
-               return 0;
-               }
-
-       if (BN_copy(y, p) == NULL) goto err;
-       L = 1;
-
-       while (1)
-               {
-               if (!BN_rshift1(y2, y)) goto err;
-               if (BN_cmp(x, y2) > 0)
-                       {
-                       if (!BN_sub(x, y, x)) goto err;
-                       if (BN_mod_word(y, 4) == 3)
-                               L = -L;                 
-                       }
-               while (BN_mod_word(x, 4) == 0)
-                       BN_div_word(x, 4);
-               if (BN_mod_word(x, 2) == 0)
-                       {
-                       BN_div_word(x, 2);
-                       m = BN_mod_word(y, 8);
-                       if (m == 3 || m == 5) L = -L;                   
-                       }
-               if (BN_is_one(x)) 
-                       {
-                       BN_CTX_end(ctx);
-                       return L;
-                       }
-               
-               if (BN_mod_word(x, 4) == 3 && BN_mod_word(y, 4) == 3) L = -L;
-               BN_swap(x, y);
-
-               if (!BN_nnmod(x, x, y, ctx)) goto err;
-
-               }
-
-
-err:
-       BN_CTX_end(ctx);
-       return -2;
-
-       }
-
 int BN_mod_sqrt(BIGNUM *x, BIGNUM *a, BIGNUM *p, BN_CTX *ctx) 
 /* x^2 = a (mod p) */
        {
@@ -90,7 +29,7 @@ int BN_mod_sqrt(BIGNUM *x, BIGNUM *a, BIGNUM *p, BN_CTX *ctx)
        assert(x != NULL && a != NULL && p != NULL && ctx != NULL);
        assert(BN_cmp(a, p) < 0);
 
-       ret = BN_legendre(a, p, ctx);
+       ret = BN_kronecker(a, p, ctx);
        if (ret < 0 || ret > 1) return 0;
        if (ret == 0)
                {
@@ -120,7 +59,7 @@ int BN_mod_sqrt(BIGNUM *x, BIGNUM *a, BIGNUM *p, BN_CTX *ctx)
                {
                if (max++ > MAX_ROUNDS) goto err; /* if p is not prime could never stop*/
                if (!BN_add_word(m, 1)) goto err;
-               ret = BN_legendre(m, p, ctx);
+               ret = BN_kronecker(m, p, ctx);
                if (ret < -1 || ret > 1) goto err;
                }
        while (ret != -1);
index dd0677e..8233a80 100644 (file)
@@ -15,8 +15,6 @@
 
 #include <openssl/bn.h>
 
-
-int BN_legendre(BIGNUM *a, BIGNUM *p, BN_CTX *ctx);
 int BN_mod_sqrt(BIGNUM *x, BIGNUM *a, BIGNUM *p, BN_CTX *ctx);
 
 #endif