Fix bn_cmp_part_words() and move it to bn_lib.c.
authorUlf Möller <ulf@openssl.org>
Sat, 2 Dec 2000 07:28:43 +0000 (07:28 +0000)
committerUlf Möller <ulf@openssl.org>
Sat, 2 Dec 2000 07:28:43 +0000 (07:28 +0000)
crypto/bn/bn_lcl.h
crypto/bn/bn_lib.c
crypto/bn/bn_mul.c

index ccfe7bc40a2cbd77a8025b9a7182bdfb48779a47..96f0087c59ae91ce98d100522faaa65a6c0b59e5 100644 (file)
@@ -402,6 +402,8 @@ void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp);
 void bn_sqr_comba8(BN_ULONG *r,const BN_ULONG *a);
 void bn_sqr_comba4(BN_ULONG *r,const BN_ULONG *a);
 int bn_cmp_words(const BN_ULONG *a,const BN_ULONG *b,int n);
+int bn_cmp_part_words(const BN_ULONG *a, const BN_ULONG *b,
+       int cl, int dl);
 void bn_mul_recursive(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b,int n2,BN_ULONG *t);
 void bn_mul_part_recursive(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b,
        int tn, int n,BN_ULONG *t);
index a63c031216947fc94ee8caff98a06204878fd1ce..87972ce7b08fcfe7c66c1e2cb408f00e971a46b8 100644 (file)
@@ -777,3 +777,28 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n)
                }
        return(0);
        }
+
+int bn_cmp_part_words(const BN_ULONG *a, const BN_ULONG *b,
+       int cl, int dl)
+       {
+       int n,i;
+       n = cl-1;
+
+       if (dl < 0)
+               {
+               for (i=-dl; i>0; i++)
+                       {
+                       if (b[n+i] != 0)
+                               return -1; /* a < b */
+                       }
+               }
+       if (dl > 0)
+               {
+               for (i=dl; i>0; i--)
+                       {
+                       if (a[n+i] != 0)
+                               return 1; /* a > b */
+                       }
+               }
+       return bn_cmp_words(a,b,cl);
+       }
index ff351af10face9dacaa59277d1e6c184100ca65b..52e5ef2f1e0945b5d0cee359b55e5930b92673f5 100644 (file)
@@ -61,8 +61,8 @@
 #include "cryptlib.h"
 #include "bn_lcl.h"
 
-/* Here follows specialised variants of bn_cmp_words(), bn_add_words() and
-   bn_sub_words().  They all have the property performing operations on
+/* Here follows specialised variants of bn_add_words() and
+   bn_sub_words().  They have the property performing operations on
    arrays of different sizes.  The sizes of those arrays is expressed through
    cl, which is the common length ( basicall, min(len(a),len(b)) ), and dl,
    which is the delta between the two lengths, calculated as len(a)-len(b).
    These functions should probably end up in bn_asm.c as soon as there are
    assembler counterparts for the systems that use assembler files.  */
 
-int bn_cmp_part_words(const BN_ULONG *a, const BN_ULONG *b,
-       int cl, int dl)
-       {
-       if (dl < 0)             /* a < b */
-               return -1;
-       if (dl > 0)             /* a > b */
-               return 1;
-
-       return bn_cmp_words(a,b,cl);
-       }
-
 BN_ULONG bn_sub_part_words(BN_ULONG *r,
        const BN_ULONG *a, const BN_ULONG *b,
        int cl, int dl)