Skip to content

Commit 1de2d6c

Browse files
committed
deprecate mp_expt_d and mp_n_root in favor of mp_expt and mp_root
1 parent 380d03b commit 1de2d6c

14 files changed

+162
-141
lines changed

bn_deprecated.c

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,38 @@ mp_err mp_prime_is_divisible(const mp_int *a, mp_bool *result)
195195
mp_err mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
196196
{
197197
(void)fast;
198-
return mp_expt_d(a, b, c);
198+
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
199+
return MP_VAL;
200+
}
201+
return mp_expt(a, (uint32_t)b, c);
202+
}
203+
#endif
204+
#ifdef BN_MP_EXPT_D_C
205+
mp_err mp_expt_d(const mp_int *a, mp_digit b, mp_int *c)
206+
{
207+
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
208+
return MP_VAL;
209+
}
210+
return mp_expt(a, (uint32_t)b, c);
199211
}
200212
#endif
201213
#ifdef BN_MP_N_ROOT_EX_C
202214
mp_err mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
203215
{
204216
(void)fast;
205-
return mp_n_root(a, b, c);
217+
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
218+
return MP_VAL;
219+
}
220+
return mp_root(a, (uint32_t)b, c);
221+
}
222+
#endif
223+
#ifdef BN_MP_N_ROOT_C
224+
mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
225+
{
226+
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
227+
return MP_VAL;
228+
}
229+
return mp_root(a, (uint32_t)b, c);
206230
}
207231
#endif
208232
#endif

bn_mp_expt_d.c renamed to bn_mp_expt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#include "tommath_private.h"
2-
#ifdef BN_MP_EXPT_D_C
2+
#ifdef BN_MP_EXPT_C
33
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
44
/* SPDX-License-Identifier: Unlicense */
55

66
/* calculate c = a**b using a square-multiply algorithm */
7-
mp_err mp_expt_d(const mp_int *a, mp_digit b, mp_int *c)
7+
mp_err mp_expt(const mp_int *a, uint32_t b, mp_int *c)
88
{
99
mp_err err;
1010

bn_mp_ilogb.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ static mp_digit s_digit_ilogb(mp_digit base, mp_digit n)
7070
as is the output of mp_bitcount.
7171
With the same problem: max size is INT_MAX * MP_DIGIT not INT_MAX only!
7272
*/
73-
mp_err mp_ilogb(const mp_int *a, mp_digit base, mp_int *c)
73+
mp_err mp_ilogb(const mp_int *a, uint32_t base, mp_int *c)
7474
{
7575
mp_err err;
7676
mp_ord cmp;
@@ -145,7 +145,7 @@ mp_err mp_ilogb(const mp_int *a, mp_digit base, mp_int *c)
145145
err = MP_VAL;
146146
goto LBL_ERR;
147147
}
148-
if ((err = mp_expt_d(&bi_base, (mp_digit)(mid - low), &t)) != MP_OKAY) {
148+
if ((err = mp_expt(&bi_base, (uint32_t)(mid - low), &t)) != MP_OKAY) {
149149
goto LBL_ERR;
150150
}
151151
if ((err = mp_mul(&bracket_low, &t, &bracket_mid)) != MP_OKAY) {

bn_mp_n_root.c renamed to bn_mp_root.c

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include "tommath_private.h"
2-
#ifdef BN_MP_N_ROOT_C
2+
#ifdef BN_MP_ROOT_C
33
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
44
/* SPDX-License-Identifier: Unlicense */
55

@@ -12,7 +12,7 @@
1212
* which will find the root in log(N) time where
1313
* each step involves a fair bit.
1414
*/
15-
mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
15+
mp_err mp_root(const mp_int *a, uint32_t b, mp_int *c)
1616
{
1717
mp_int t1, t2, t3, a_;
1818
mp_ord cmp;
@@ -36,26 +36,17 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
3636
ilog2 = mp_count_bits(a);
3737

3838
/*
39-
GCC and clang do not understand the sizeof tests and complain,
40-
icc (the Intel compiler) seems to understand, at least it doesn't complain.
41-
2 of 3 say these macros are necessary, so there they are.
39+
If "b" is larger than INT_MAX it is also larger than
40+
log_2(n) because the bit-length of the "n" is measured
41+
with an int and hence the root is always < 2 (two).
4242
*/
43-
#if ( !(defined MP_8BIT) && !(defined MP_16BIT) )
44-
/*
45-
The type of mp_digit might be larger than an int.
46-
If "b" is larger than INT_MAX it is also larger than
47-
log_2(n) because the bit-length of the "n" is measured
48-
with an int and hence the root is always < 2 (two).
49-
*/
50-
if (sizeof(mp_digit) >= sizeof(int)) {
51-
if (b > (mp_digit)(INT_MAX/2)) {
52-
mp_set(c, 1uL);
53-
c->sign = a->sign;
54-
err = MP_OKAY;
55-
goto LBL_ERR;
56-
}
43+
if (b > (uint32_t)(INT_MAX/2)) {
44+
mp_set(c, 1uL);
45+
c->sign = a->sign;
46+
err = MP_OKAY;
47+
goto LBL_ERR;
5748
}
58-
#endif
49+
5950
/* "b" is smaller than INT_MAX, we can cast safely */
6051
if (ilog2 < (int)b) {
6152
mp_set(c, 1uL);
@@ -84,7 +75,7 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
8475
/* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */
8576

8677
/* t3 = t1**(b-1) */
87-
if ((err = mp_expt_d(&t1, b - 1u, &t3)) != MP_OKAY) {
78+
if ((err = mp_expt(&t1, b - 1u, &t3)) != MP_OKAY) {
8879
goto LBL_ERR;
8980
}
9081
/* numerator */
@@ -124,7 +115,7 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
124115
/* result can be off by a few so check */
125116
/* Loop beneath can overshoot by one if found root is smaller than actual root */
126117
for (;;) {
127-
if ((err = mp_expt_d(&t1, b, &t2)) != MP_OKAY) {
118+
if ((err = mp_expt(&t1, b, &t2)) != MP_OKAY) {
128119
goto LBL_ERR;
129120
}
130121
cmp = mp_cmp(&t2, &a_);
@@ -142,7 +133,7 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
142133
}
143134
/* correct overshoot from above or from recurrence */
144135
for (;;) {
145-
if ((err = mp_expt_d(&t1, b, &t2)) != MP_OKAY) {
136+
if ((err = mp_expt(&t1, b, &t2)) != MP_OKAY) {
146137
goto LBL_ERR;
147138
}
148139
if (mp_cmp(&t2, &a_) == MP_GT) {

demo/test.c

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,7 @@ static int test_mp_sqrt(void)
801801
printf("\nmp_sqrt() error!");
802802
goto LBL_ERR;
803803
}
804-
mp_n_root(&a, 2uL, &c);
804+
mp_root(&a, 2uL, &c);
805805
if (mp_cmp_mag(&b, &c) != MP_EQ) {
806806
printf("mp_sqrt() bad result!\n");
807807
goto LBL_ERR;
@@ -1405,8 +1405,10 @@ static mp_err s_rs(const mp_int *a, int radix, int *size)
14051405
static int test_mp_ilogb(void)
14061406
{
14071407
mp_int a, lb;
1408-
mp_digit d, base;
1408+
mp_digit d;
1409+
uint32_t base;
14091410
int size;
1411+
const uint32_t max_base = MP_MIN(UINT32_MAX, MP_DIGIT_MAX);
14101412

14111413
if (mp_init_multi(&a, &lb, NULL) != MP_OKAY) {
14121414
goto LBL_ERR;
@@ -1418,11 +1420,11 @@ static int test_mp_ilogb(void)
14181420
1 x MP_VAL
14191421
*/
14201422
mp_set(&a, 42uL);
1421-
base = 0uL;
1423+
base = 0u;
14221424
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
14231425
goto LBL_ERR;
14241426
}
1425-
base = 1uL;
1427+
base = 1u;
14261428
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
14271429
goto LBL_ERR;
14281430
}
@@ -1433,7 +1435,7 @@ static int test_mp_ilogb(void)
14331435
2 2 1
14341436
2 3 1
14351437
*/
1436-
base = 2uL;
1438+
base = 2u;
14371439
mp_zero(&a);
14381440
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
14391441
goto LBL_ERR;
@@ -1455,7 +1457,7 @@ static int test_mp_ilogb(void)
14551457
3 2 0
14561458
3 3 1
14571459
*/
1458-
base = 3uL;
1460+
base = 3u;
14591461
mp_zero(&a);
14601462
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
14611463
goto LBL_ERR;
@@ -1478,7 +1480,7 @@ static int test_mp_ilogb(void)
14781480
if (mp_rand(&a, 10) != MP_OKAY) {
14791481
goto LBL_ERR;
14801482
}
1481-
for (base = 2uL; base < 65uL; base++) {
1483+
for (base = 2u; base < 65u; base++) {
14821484
if (mp_ilogb(&a, base, &lb) != MP_OKAY) {
14831485
goto LBL_ERR;
14841486
}
@@ -1499,7 +1501,7 @@ static int test_mp_ilogb(void)
14991501
if (mp_rand(&a, 1) != MP_OKAY) {
15001502
goto LBL_ERR;
15011503
}
1502-
for (base = 2uL; base < 65uL; base++) {
1504+
for (base = 2u; base < 65u; base++) {
15031505
if (mp_ilogb(&a, base, &lb) != MP_OKAY) {
15041506
goto LBL_ERR;
15051507
}
@@ -1512,15 +1514,15 @@ static int test_mp_ilogb(void)
15121514
}
15131515
}
15141516

1515-
/*Test upper edgecase with base MP_MASK and number (MP_MASK/2)*MP_MASK^10 */
1516-
mp_set(&a, MP_MASK);
1517-
if (mp_expt_d(&a, 10uL, &a) != MP_OKAY) {
1517+
/*Test upper edgecase with base UINT32_MAX and number (UINT32_MAX/2)*UINT32_MAX^10 */
1518+
mp_set(&a, max_base);
1519+
if (mp_expt(&a, 10uL, &a) != MP_OKAY) {
15181520
goto LBL_ERR;
15191521
}
1520-
if (mp_add_d(&a, (MP_MASK>>1), &a) != MP_OKAY) {
1522+
if (mp_add_d(&a, max_base / 2, &a) != MP_OKAY) {
15211523
goto LBL_ERR;
15221524
}
1523-
if (mp_ilogb(&a, MP_MASK, &lb) != MP_OKAY) {
1525+
if (mp_ilogb(&a, max_base, &lb) != MP_OKAY) {
15241526
goto LBL_ERR;
15251527
}
15261528
if (mp_cmp_d(&lb, 10uL) != MP_EQ) {
@@ -1667,7 +1669,7 @@ static int test_mp_decr(void)
16671669
}
16681670

16691671
/*
1670-
Cannot test mp_exp(_d) without mp_n_root and vice versa.
1672+
Cannot test mp_exp(_d) without mp_root and vice versa.
16711673
So one of the two has to be tested from scratch.
16721674
16731675
Numbers generated by
@@ -1688,7 +1690,7 @@ static int test_mp_decr(void)
16881690
All numbers as strings to simplifiy things, especially for the
16891691
low-mp branch.
16901692
*/
1691-
static int test_mp_n_root(void)
1693+
static int test_mp_root(void)
16921694
{
16931695
mp_int a, c, r;
16941696
mp_err e;
@@ -1891,10 +1893,10 @@ static int test_mp_n_root(void)
18911893
#else
18921894
for (j = 3; j < 100; j++) {
18931895
#endif
1894-
mp_n_root(&a, (mp_digit) j, &c);
1896+
mp_root(&a, (uint32_t)j, &c);
18951897
mp_read_radix(&r, root[i][j-3], 10);
18961898
if (mp_cmp(&r, &c) != MP_EQ) {
1897-
fprintf(stderr, "mp_n_root failed at input #%d, root #%d\n", i, j);
1899+
fprintf(stderr, "mp_root failed at input #%d, root #%d\n", i, j);
18981900
goto LTM_ERR;
18991901
}
19001902
}
@@ -2104,7 +2106,7 @@ int unit_tests(int argc, char **argv)
21042106
T(mp_is_square),
21052107
T(mp_kronecker),
21062108
T(mp_montgomery_reduce),
2107-
T(mp_n_root),
2109+
T(mp_root),
21082110
T(mp_or),
21092111
T(mp_prime_is_prime),
21102112
T(mp_prime_rand),

libtommath_VS2008.vcproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@
437437
>
438438
</File>
439439
<File
440-
RelativePath="bn_mp_expt_d.c"
440+
RelativePath="bn_mp_expt.c"
441441
>
442442
</File>
443443
<File
@@ -572,10 +572,6 @@
572572
RelativePath="bn_mp_mulmod.c"
573573
>
574574
</File>
575-
<File
576-
RelativePath="bn_mp_n_root.c"
577-
>
578-
</File>
579575
<File
580576
RelativePath="bn_mp_neg.c"
581577
>
@@ -672,6 +668,10 @@
672668
RelativePath="bn_mp_reduce_setup.c"
673669
>
674670
</File>
671+
<File
672+
RelativePath="bn_mp_root.c"
673+
>
674+
</File>
675675
<File
676676
RelativePath="bn_mp_rshd.c"
677677
>

makefile

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,21 @@ OBJECTS=bn_conversion.o bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o b
3030
bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
3131
bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o \
3232
bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o \
33-
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o \
33+
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt.o \
3434
bn_mp_exptmod.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_grow.o \
3535
bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o \
3636
bn_mp_init_set.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o \
3737
bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \
3838
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
39-
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o \
40-
bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
41-
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
42-
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
43-
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
44-
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
45-
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
46-
bn_mp_set_double.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o \
47-
bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o \
39+
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
40+
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o \
41+
bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o \
42+
bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o \
43+
bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o \
44+
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o \
45+
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_double.o \
46+
bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o \
47+
bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o \
4848
bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o \
4949
bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o \
5050
bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o \

makefile.mingw

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,21 @@ OBJECTS=bn_conversion.o bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o b
3333
bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
3434
bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o \
3535
bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o \
36-
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o \
36+
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt.o \
3737
bn_mp_exptmod.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_grow.o \
3838
bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o \
3939
bn_mp_init_set.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o \
4040
bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \
4141
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
42-
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o \
43-
bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
44-
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
45-
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
46-
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
47-
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
48-
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
49-
bn_mp_set_double.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o \
50-
bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o \
42+
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
43+
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o \
44+
bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o \
45+
bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o \
46+
bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o \
47+
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o \
48+
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_double.o \
49+
bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o \
50+
bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o \
5151
bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o \
5252
bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o \
5353
bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o \

0 commit comments

Comments
 (0)