Remove unused code.
authorjsing <jsing@openbsd.org>
Fri, 20 Jan 2023 12:16:46 +0000 (12:16 +0000)
committerjsing <jsing@openbsd.org>
Fri, 20 Jan 2023 12:16:46 +0000 (12:16 +0000)
ok tb@

lib/libcrypto/bn/bn_local.h
lib/libcrypto/bn/bn_mul.c
lib/libcrypto/man/bn_dump.3

index 48d24c5..08e7064 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bn_local.h,v 1.3 2022/11/30 03:08:39 jsing Exp $ */
+/* $OpenBSD: bn_local.h,v 1.4 2023/01/20 12:16:46 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -498,16 +498,10 @@ void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
 void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b,
     int n, int tna, int tnb, BN_ULONG *t);
 void bn_sqr_recursive(BN_ULONG *r, const BN_ULONG *a, int n2, BN_ULONG *t);
-void bn_mul_low_normal(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n);
-void bn_mul_low_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
-    BN_ULONG *t);
-void bn_mul_high(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, BN_ULONG *l, int n2,
-    BN_ULONG *t);
-BN_ULONG bn_add_part_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
-    int cl, int dl);
 BN_ULONG bn_sub_part_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
     int cl, int dl);
-int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num);
+int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
+    const BN_ULONG *np, const BN_ULONG *n0, int num);
 
 void bn_correct_top(BIGNUM *a);
 int bn_expand(BIGNUM *a, int bits);
index 5437e7e..b7a7f8b 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bn_mul.c,v 1.26 2023/01/20 10:00:51 jsing Exp $ */
+/* $OpenBSD: bn_mul.c,v 1.27 2023/01/20 12:16:46 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
 
 #include "bn_local.h"
 
-/* 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).
-   All lengths are the number of BN_ULONGs...  For the operations that require
-   a result array as parameter, it must have the length cl+abs(dl).
-   These functions should probably end up in bn_asm.c as soon as there are
-   assembler counterparts for the systems that use assembler files.  */
-
-BN_ULONG
-bn_add_part_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int cl,
-    int dl)
-{
-       BN_ULONG c, l, t;
-
-       assert(cl >= 0);
-       c = bn_add_words(r, a, b, cl);
-
-       if (dl == 0)
-               return c;
-
-       r += cl;
-       a += cl;
-       b += cl;
-
-       if (dl < 0) {
-               int save_dl = dl;
-               while (c) {
-                       l = (c + b[0]) & BN_MASK2;
-                       c = (l < c);
-                       r[0] = l;
-                       if (++dl >= 0)
-                               break;
-
-                       l = (c + b[1]) & BN_MASK2;
-                       c = (l < c);
-                       r[1] = l;
-                       if (++dl >= 0)
-                               break;
-
-                       l = (c + b[2]) & BN_MASK2;
-                       c = (l < c);
-                       r[2] = l;
-                       if (++dl >= 0)
-                               break;
-
-                       l = (c + b[3]) & BN_MASK2;
-                       c = (l < c);
-                       r[3] = l;
-                       if (++dl >= 0)
-                               break;
-
-                       save_dl = dl;
-                       b += 4;
-                       r += 4;
-               }
-               if (dl < 0) {
-                       if (save_dl < dl) {
-                               switch (dl - save_dl) {
-                               case 1:
-                                       r[1] = b[1];
-                                       if (++dl >= 0)
-                                               break;
-                               case 2:
-                                       r[2] = b[2];
-                                       if (++dl >= 0)
-                                               break;
-                               case 3:
-                                       r[3] = b[3];
-                                       if (++dl >= 0)
-                                               break;
-                               }
-                               b += 4;
-                               r += 4;
-                       }
-               }
-               if (dl < 0) {
-                       for (;;) {
-                               r[0] = b[0];
-                               if (++dl >= 0)
-                                       break;
-                               r[1] = b[1];
-                               if (++dl >= 0)
-                                       break;
-                               r[2] = b[2];
-                               if (++dl >= 0)
-                                       break;
-                               r[3] = b[3];
-                               if (++dl >= 0)
-                                       break;
-
-                               b += 4;
-                               r += 4;
-                       }
-               }
-       } else {
-               int save_dl = dl;
-               while (c) {
-                       t = (a[0] + c) & BN_MASK2;
-                       c = (t < c);
-                       r[0] = t;
-                       if (--dl <= 0)
-                               break;
-
-                       t = (a[1] + c) & BN_MASK2;
-                       c = (t < c);
-                       r[1] = t;
-                       if (--dl <= 0)
-                               break;
-
-                       t = (a[2] + c) & BN_MASK2;
-                       c = (t < c);
-                       r[2] = t;
-                       if (--dl <= 0)
-                               break;
-
-                       t = (a[3] + c) & BN_MASK2;
-                       c = (t < c);
-                       r[3] = t;
-                       if (--dl <= 0)
-                               break;
-
-                       save_dl = dl;
-                       a += 4;
-                       r += 4;
-               }
-               if (dl > 0) {
-                       if (save_dl > dl) {
-                               switch (save_dl - dl) {
-                               case 1:
-                                       r[1] = a[1];
-                                       if (--dl <= 0)
-                                               break;
-                               case 2:
-                                       r[2] = a[2];
-                                       if (--dl <= 0)
-                                               break;
-                               case 3:
-                                       r[3] = a[3];
-                                       if (--dl <= 0)
-                                               break;
-                               }
-                               a += 4;
-                               r += 4;
-                       }
-               }
-               if (dl > 0) {
-                       for (;;) {
-                               r[0] = a[0];
-                               if (--dl <= 0)
-                                       break;
-                               r[1] = a[1];
-                               if (--dl <= 0)
-                                       break;
-                               r[2] = a[2];
-                               if (--dl <= 0)
-                                       break;
-                               r[3] = a[3];
-                               if (--dl <= 0)
-                                       break;
-
-                               a += 4;
-                               r += 4;
-                       }
-               }
-       }
-       return c;
-}
-
 #if defined(OPENSSL_NO_ASM) || !defined(OPENSSL_BN_ASM_PART_WORDS)
+/*
+ * Here follows a specialised variant of bn_sub_words(), which has the property
+ * performing operations on arrays of different sizes. The sizes of those arrays
+ * is expressed through cl, which is the common length (basically,
+ * min(len(a),len(b))), and dl, which is the delta between the two lengths,
+ * calculated as len(a)-len(b). All lengths are the number of BN_ULONGs. For the
+ * operations that require a result array as parameter, it must have the length
+ * cl+abs(dl).
+ */
 BN_ULONG
 bn_sub_part_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int cl,
     int dl)
@@ -407,199 +246,7 @@ bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb)
        }
 }
 
-void
-bn_mul_low_normal(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n)
-{
-       bn_mul_words(r, a, n, b[0]);
-
-       for (;;) {
-               if (--n <= 0)
-                       return;
-               bn_mul_add_words(&(r[1]), a, n, b[1]);
-               if (--n <= 0)
-                       return;
-               bn_mul_add_words(&(r[2]), a, n, b[2]);
-               if (--n <= 0)
-                       return;
-               bn_mul_add_words(&(r[3]), a, n, b[3]);
-               if (--n <= 0)
-                       return;
-               bn_mul_add_words(&(r[4]), a, n, b[4]);
-               r += 4;
-               b += 4;
-       }
-}
-
 #ifdef BN_RECURSION
-/* a and b must be the same size, which is n2.
- * r needs to be n2 words and t needs to be n2*2
- * l is the low words of the output.
- * t needs to be n2*3
- */
-void
-bn_mul_high(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, BN_ULONG *l, int n2,
-    BN_ULONG *t)
-{
-       int i, n;
-       int c1, c2;
-       int neg, oneg, zero;
-       BN_ULONG ll, lc, *lp, *mp;
-
-       n = n2 / 2;
-
-       /* Calculate (al-ah)*(bh-bl) */
-       neg = zero = 0;
-       c1 = bn_cmp_words(&(a[0]), &(a[n]), n);
-       c2 = bn_cmp_words(&(b[n]), &(b[0]), n);
-       switch (c1 * 3 + c2) {
-       case -4:
-               bn_sub_words(&(r[0]), &(a[n]), &(a[0]), n);
-               bn_sub_words(&(r[n]), &(b[0]), &(b[n]), n);
-               break;
-       case -3:
-               zero = 1;
-               break;
-       case -2:
-               bn_sub_words(&(r[0]), &(a[n]), &(a[0]), n);
-               bn_sub_words(&(r[n]), &(b[n]), &(b[0]), n);
-               neg = 1;
-               break;
-       case -1:
-       case 0:
-       case 1:
-               zero = 1;
-               break;
-       case 2:
-               bn_sub_words(&(r[0]), &(a[0]), &(a[n]), n);
-               bn_sub_words(&(r[n]), &(b[0]), &(b[n]), n);
-               neg = 1;
-               break;
-       case 3:
-               zero = 1;
-               break;
-       case 4:
-               bn_sub_words(&(r[0]), &(a[0]), &(a[n]), n);
-               bn_sub_words(&(r[n]), &(b[n]), &(b[0]), n);
-               break;
-       }
-
-       oneg = neg;
-       /* t[10] = (a[0]-a[1])*(b[1]-b[0]) */
-       /* r[10] = (a[1]*b[1]) */
-# ifdef BN_MUL_COMBA
-       if (n == 8) {
-               bn_mul_comba8(&(t[0]), &(r[0]), &(r[n]));
-               bn_mul_comba8(r, &(a[n]), &(b[n]));
-       } else
-# endif
-       {
-               bn_mul_recursive(&(t[0]), &(r[0]), &(r[n]), n, 0, 0, &(t[n2]));
-               bn_mul_recursive(r, &(a[n]), &(b[n]), n, 0, 0, &(t[n2]));
-       }
-
-       /* s0 == low(al*bl)
-        * s1 == low(ah*bh)+low((al-ah)*(bh-bl))+low(al*bl)+high(al*bl)
-        * We know s0 and s1 so the only unknown is high(al*bl)
-        * high(al*bl) == s1 - low(ah*bh+s0+(al-ah)*(bh-bl))
-        * high(al*bl) == s1 - (r[0]+l[0]+t[0])
-        */
-       if (l != NULL) {
-               lp = &(t[n2 + n]);
-               c1 = (int)(bn_add_words(lp, &(r[0]), &(l[0]), n));
-       } else {
-               c1 = 0;
-               lp = &(r[0]);
-       }
-
-       if (neg)
-               neg = (int)(bn_sub_words(&(t[n2]), lp, &(t[0]), n));
-       else {
-               bn_add_words(&(t[n2]), lp, &(t[0]), n);
-               neg = 0;
-       }
-
-       if (l != NULL) {
-               bn_sub_words(&(t[n2 + n]), &(l[n]), &(t[n2]), n);
-       } else {
-               lp = &(t[n2 + n]);
-               mp = &(t[n2]);
-               for (i = 0; i < n; i++)
-                       lp[i] = ((~mp[i]) + 1) & BN_MASK2;
-       }
-
-       /* s[0] = low(al*bl)
-        * t[3] = high(al*bl)
-        * t[10] = (a[0]-a[1])*(b[1]-b[0]) neg is the sign
-        * r[10] = (a[1]*b[1])
-        */
-       /* R[10] = al*bl
-        * R[21] = al*bl + ah*bh + (a[0]-a[1])*(b[1]-b[0])
-        * R[32] = ah*bh
-        */
-       /* R[1]=t[3]+l[0]+r[0](+-)t[0] (have carry/borrow)
-        * R[2]=r[0]+t[3]+r[1](+-)t[1] (have carry/borrow)
-        * R[3]=r[1]+(carry/borrow)
-        */
-       if (l != NULL) {
-               lp = &(t[n2]);
-               c1 = (int)(bn_add_words(lp, &(t[n2 + n]), &(l[0]), n));
-       } else {
-               lp = &(t[n2 + n]);
-               c1 = 0;
-       }
-       c1 += (int)(bn_add_words(&(t[n2]), lp, &(r[0]), n));
-       if (oneg)
-               c1 -= (int)(bn_sub_words(&(t[n2]), &(t[n2]), &(t[0]), n));
-       else
-               c1 += (int)(bn_add_words(&(t[n2]), &(t[n2]), &(t[0]), n));
-
-       c2 = (int)(bn_add_words(&(r[0]), &(r[0]), &(t[n2 + n]), n));
-       c2 += (int)(bn_add_words(&(r[0]), &(r[0]), &(r[n]), n));
-       if (oneg)
-               c2 -= (int)(bn_sub_words(&(r[0]), &(r[0]), &(t[n]), n));
-       else
-               c2 += (int)(bn_add_words(&(r[0]), &(r[0]), &(t[n]), n));
-
-       if (c1 != 0) /* Add starting at r[0], could be +ve or -ve */
-       {
-               i = 0;
-               if (c1 > 0) {
-                       lc = c1;
-                       do {
-                               ll = (r[i] + lc) & BN_MASK2;
-                               r[i++] = ll;
-                               lc = (lc > ll);
-                       } while (lc);
-               } else {
-                       lc = -c1;
-                       do {
-                               ll = r[i];
-                               r[i++] = (ll - lc) & BN_MASK2;
-                               lc = (lc > ll);
-                       } while (lc);
-               }
-       }
-       if (c2 != 0) /* Add starting at r[1] */
-       {
-               i = n;
-               if (c2 > 0) {
-                       lc = c2;
-                       do {
-                               ll = (r[i] + lc) & BN_MASK2;
-                               r[i++] = ll;
-                               lc = (lc > ll);
-                       } while (lc);
-               } else {
-                       lc = -c2;
-                       do {
-                               ll = r[i];
-                               r[i++] = (ll - lc) & BN_MASK2;
-                               lc = (lc > ll);
-                       } while (lc);
-               }
-       }
-}
-
 /* Karatsuba recursive multiplication algorithm
  * (cf. Knuth, The Art of Computer Programming, Vol. 2) */
 
@@ -912,29 +559,6 @@ bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n, int tna,
                }
        }
 }
-
-/* a and b must be the same size, which is n2.
- * r needs to be n2 words and t needs to be n2*2
- */
-void
-bn_mul_low_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2, BN_ULONG *t)
-{
-       int n = n2 / 2;
-
-
-       bn_mul_recursive(r, a, b, n, 0, 0, &(t[0]));
-       if (n >= BN_MUL_LOW_RECURSIVE_SIZE_NORMAL) {
-               bn_mul_low_recursive(&(t[0]), &(a[0]), &(b[n]), n, &(t[n2]));
-               bn_add_words(&(r[n]), &(r[n]), &(t[0]), n);
-               bn_mul_low_recursive(&(t[0]), &(a[n]), &(b[0]), n, &(t[n2]));
-               bn_add_words(&(r[n]), &(r[n]), &(t[0]), n);
-       } else {
-               bn_mul_low_normal(&(t[0]), &(a[0]), &(b[n]), n);
-               bn_mul_low_normal(&(t[n]), &(a[n]), &(b[0]), n);
-               bn_add_words(&(r[n]), &(r[n]), &(t[0]), n);
-               bn_add_words(&(r[n]), &(r[n]), &(t[n]), n);
-       }
-}
 #endif /* BN_RECURSION */
 
 int
index 36ae660..cfe707b 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: bn_dump.3,v 1.7 2022/11/22 19:00:15 schwarze Exp $
+.\" $OpenBSD: bn_dump.3,v 1.8 2023/01/20 12:16:46 jsing Exp $
 .\" full merge up to:
 .\" OpenSSL crypto/bn/README.pod aebb9aac Jul 19 09:27:53 2016 -0400
 .\"
@@ -50,7 +50,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 .\" OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: November 22 2022 $
+.Dd $Mdocdate: January 20 2023 $
 .Dt BN_DUMP 3
 .Os
 .Sh NAME
 .Nm bn_sqr_comba8 ,
 .Nm bn_cmp_words ,
 .Nm bn_mul_normal ,
-.Nm bn_mul_low_normal ,
 .Nm bn_mul_recursive ,
 .Nm bn_mul_part_recursive ,
-.Nm bn_mul_low_recursive ,
-.Nm bn_mul_high ,
 .Nm bn_sqr_normal ,
 .Nm bn_sqr_recursive ,
 .Nm bn_expand ,
 .Fa "int nb"
 .Fc
 .Ft void
-.Fo bn_mul_low_normal
-.Fa "BN_ULONG *r"
-.Fa "BN_ULONG *a"
-.Fa "BN_ULONG *b"
-.Fa "int n"
-.Fc
-.Ft void
 .Fo bn_mul_recursive
 .Fa "BN_ULONG *r"
 .Fa "BN_ULONG *a"
 .Fa "BN_ULONG *tmp"
 .Fc
 .Ft void
-.Fo bn_mul_low_recursive
-.Fa "BN_ULONG *r"
-.Fa "BN_ULONG *a"
-.Fa "BN_ULONG *b"
-.Fa "int n2"
-.Fa "BN_ULONG *tmp"
-.Fc
-.Ft void
-.Fo bn_mul_high
-.Fa "BN_ULONG *r"
-.Fa "BN_ULONG *a"
-.Fa "BN_ULONG *b"
-.Fa "BN_ULONG *l"
-.Fa "int n2"
-.Fa "BN_ULONG *tmp"
-.Fc
-.Ft void
 .Fo bn_sqr_normal
 .Fa "BN_ULONG *r"
 .Fa "BN_ULONG *a"
@@ -545,21 +518,6 @@ It computes
 and places the result in
 .Fa r .
 .Pp
-.Fn bn_mul_low_normal r a b n
-operates on the
-.Fa n
-word arrays
-.Fa r ,
-.Fa a
-and
-.Fa b .
-It computes the
-.Fa n
-low words of
-.Fa a Ns * Ns Fa b
-and places the result in
-.Fa r .
-.Pp
 .Fn bn_mul_recursive r a b n2 dna dnb t
 operates on the word arrays
 .Fa a
@@ -601,34 +559,6 @@ word arrays
 and
 .Fa tmp .
 .Pp
-.Fn bn_mul_low_recursive r a b n2 tmp
-operates on the
-.Fa n2
-word arrays
-.Fa r
-and
-.Fa tmp
-and the
-.Fa n2 Ns /2
-word arrays
-.Fa a
-and
-.Fa b .
-.Pp
-.Fn bn_mul_high r a b l n2 tmp
-operates on the
-.Fa n2
-word arrays
-.Fa r ,
-.Fa a ,
-.Fa b
-and
-.Fa l
-(?) and the
-.Pf 3* Fa n2
-word array
-.Fa tmp .
-.Pp
 .Xr BN_mul 3
 calls
 .Fn bn_mul_normal ,