Make BN_mod_exp2_mont() and BN_mod_exp_mont_word() internal
authortb <tb@openbsd.org>
Sat, 2 Mar 2024 09:27:31 +0000 (09:27 +0000)
committertb <tb@openbsd.org>
Sat, 2 Mar 2024 09:27:31 +0000 (09:27 +0000)
The former could be useful but nothing uses it. The latter is a
dangerous implementation detail of Montgomery exponentiation that
should never have been leaked out of the library. Fix this.

ok jsing

lib/libcrypto/Symbols.list
lib/libcrypto/Symbols.namespace
lib/libcrypto/bn/bn.h
lib/libcrypto/bn/bn_exp.c
lib/libcrypto/bn/bn_local.h
lib/libcrypto/hidden/openssl/bn.h

index c439138..5099a6f 100644 (file)
@@ -407,10 +407,8 @@ BN_mask_bits
 BN_mod_add
 BN_mod_add_quick
 BN_mod_exp
-BN_mod_exp2_mont
 BN_mod_exp_mont
 BN_mod_exp_mont_consttime
-BN_mod_exp_mont_word
 BN_mod_inverse
 BN_mod_lshift
 BN_mod_lshift1
index 772fb18..aff315a 100644 (file)
@@ -2221,8 +2221,6 @@ _libre_BN_lshift
 _libre_BN_lshift1
 _libre_BN_exp
 _libre_BN_mod_exp_mont_consttime
-_libre_BN_mod_exp_mont_word
-_libre_BN_mod_exp2_mont
 _libre_BN_mask_bits
 _libre_BN_print_fp
 _libre_BN_print
index 39a5180..7921075 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bn.h,v 1.76 2024/03/02 09:24:59 tb Exp $ */
+/* $OpenBSD: bn.h,v 1.77 2024/03/02 09:27:31 tb Exp $ */
 /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -391,11 +391,6 @@ int        BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
 #endif
 int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
     const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont);
-int    BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
-    const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
-int    BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
-    const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
-    BN_CTX *ctx, BN_MONT_CTX *m_ctx);
 
 int    BN_mask_bits(BIGNUM *a, int n);
 int    BN_print_fp(FILE *fp, const BIGNUM *a);
index e4e06db..0485242 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bn_exp.c,v 1.51 2024/03/02 09:24:59 tb Exp $ */
+/* $OpenBSD: bn_exp.c,v 1.52 2024/03/02 09:27:31 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -961,7 +961,6 @@ err:
        BN_CTX_end(ctx);
        return (ret);
 }
-LCRYPTO_ALIAS(BN_mod_exp_mont_word);
 
 int
 BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
@@ -1353,4 +1352,3 @@ err:
        BN_CTX_end(ctx);
        return (ret);
 }
-LCRYPTO_ALIAS(BN_mod_exp2_mont);
index e5c4cdd..5acb546 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bn_local.h,v 1.39 2024/03/02 09:24:59 tb Exp $ */
+/* $OpenBSD: bn_local.h,v 1.40 2024/03/02 09:27:31 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -308,6 +308,12 @@ int BN_div_ct(BIGNUM *q, BIGNUM *r, const BIGNUM *n, const BIGNUM *d,
 int BN_mod_ct(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 int BN_mod_nonct(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 
+int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
+    const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
+int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
+    const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
+    BN_CTX *ctx, BN_MONT_CTX *m_ctx);
+
 int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
     const BIGNUM *m, BN_CTX *ctx);
 
index 1aa5b10..f6f00cf 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bn.h,v 1.5 2024/03/02 09:24:59 tb Exp $ */
+/* $OpenBSD: bn.h,v 1.6 2024/03/02 09:27:31 tb Exp $ */
 /*
  * Copyright (c) 2023 Bob Beck <beck@openbsd.org>
  *
@@ -97,8 +97,6 @@ LCRYPTO_USED(BN_lshift);
 LCRYPTO_USED(BN_lshift1);
 LCRYPTO_USED(BN_exp);
 LCRYPTO_USED(BN_mod_exp_mont_consttime);
-LCRYPTO_USED(BN_mod_exp_mont_word);
-LCRYPTO_USED(BN_mod_exp2_mont);
 LCRYPTO_USED(BN_mask_bits);
 LCRYPTO_USED(BN_print_fp);
 LCRYPTO_USED(BN_print);