summaryrefslogtreecommitdiffstats
path: root/crypto/bn
diff options
context:
space:
mode:
authorUlf Möller <ulf@openssl.org>2000-12-02 07:28:43 +0000
committerUlf Möller <ulf@openssl.org>2000-12-02 07:28:43 +0000
commit52a1bab2d9891810618569e6c744375b768fce8c (patch)
tree74d989ab4d71ed0fc1e4a891de56ed8d778954ba /crypto/bn
parent0826c85f4c453b5fd3af1ed08e52d0179d58029d (diff)
Fix bn_cmp_part_words() and move it to bn_lib.c.
Diffstat (limited to 'crypto/bn')
-rw-r--r--crypto/bn/bn_lcl.h2
-rw-r--r--crypto/bn/bn_lib.c25
-rw-r--r--crypto/bn/bn_mul.c15
3 files changed, 29 insertions, 13 deletions
diff --git a/crypto/bn/bn_lcl.h b/crypto/bn/bn_lcl.h
index ccfe7bc40a..96f0087c59 100644
--- a/crypto/bn/bn_lcl.h
+++ b/crypto/bn/bn_lcl.h
@@ -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);
diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c
index a63c031216..87972ce7b0 100644
--- a/crypto/bn/bn_lib.c
+++ b/crypto/bn/bn_lib.c
@@ -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);
+ }
diff --git a/crypto/bn/bn_mul.c b/crypto/bn/bn_mul.c
index ff351af10f..52e5ef2f1e 100644
--- a/crypto/bn/bn_mul.c
+++ b/crypto/bn/bn_mul.c
@@ -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).
@@ -71,17 +71,6 @@
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)