Skip to content

Commit deea98b

Browse files
committed
deprecate mp_prime_is_divisible and ltm_prime_tab
* it is an implementation detail used for prime testing * there is upcoming work by @czurnieden regarding a generalised prime sieve * furthermore remove jacobi test (replaced by kronecker)
1 parent 07c1898 commit deea98b

15 files changed

+141
-184
lines changed

bn_deprecated.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ int mp_get_bit(const mp_int *a, int b)
1212
return (s_mp_get_bit(a, (unsigned int)b) == MP_YES) ? MP_YES : MP_NO;
1313
}
1414
#endif
15-
#ifdef BN_S_MP_JACOBI_C
16-
mp_err s_mp_jacobi(const mp_int *a, const mp_int *n, int *c)
15+
#ifdef BN_MP_JACOBI_C
16+
mp_err mp_jacobi(const mp_int *a, const mp_int *n, int *c)
1717
{
1818
if (a->sign == MP_NEG) {
1919
return MP_VAL;
@@ -24,12 +24,6 @@ mp_err s_mp_jacobi(const mp_int *a, const mp_int *n, int *c)
2424
return mp_kronecker(a, n, c);
2525
}
2626
#endif
27-
#ifdef BN_MP_JACOBI_C
28-
mp_err mp_jacobi(const mp_int *a, const mp_int *n, int *c)
29-
{
30-
return s_mp_jacobi(a, n, c);
31-
}
32-
#endif
3327
#ifdef BN_MP_PRIME_RANDOM_EX_C
3428
mp_err mp_prime_random_ex(mp_int *a, int t, int size, int flags, private_mp_prime_callback cb, void *dat)
3529
{
@@ -146,4 +140,10 @@ mp_err mp_tc_div_2d(const mp_int *a, int b, mp_int *c)
146140
return mp_signed_rsh(a, b, c);
147141
}
148142
#endif
143+
#ifdef BN_MP_PRIME_IS_DIVISIBLE_C
144+
mp_err mp_prime_is_divisible(const mp_int *a, mp_bool *result)
145+
{
146+
return s_mp_prime_is_divisible(a, result);
147+
}
148+
#endif
149149
#endif

bn_mp_prime_is_prime.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,21 @@ mp_err mp_prime_is_prime(const mp_int *a, int t, mp_bool *result)
5151
}
5252

5353
/* is the input equal to one of the primes in the table? */
54-
for (ix = 0; ix < MP_PRIME_SIZE; ix++) {
55-
if (mp_cmp_d(a, ltm_prime_tab[ix]) == MP_EQ) {
54+
for (ix = 0; ix < PRIVATE_MP_PRIME_TAB_SIZE; ix++) {
55+
if (mp_cmp_d(a, s_mp_prime_tab[ix]) == MP_EQ) {
5656
*result = MP_YES;
5757
return MP_OKAY;
5858
}
5959
}
6060
#ifdef MP_8BIT
6161
/* The search in the loop above was exhaustive in this case */
62-
if ((a->used == 1) && (MP_PRIME_SIZE >= 31)) {
62+
if ((a->used == 1) && (PRIVATE_MP_PRIME_TAB_SIZE >= 31)) {
6363
return MP_OKAY;
6464
}
6565
#endif
6666

6767
/* first perform trial division */
68-
if ((err = mp_prime_is_divisible(a, &res)) != MP_OKAY) {
68+
if ((err = s_mp_prime_is_divisible(a, &res)) != MP_OKAY) {
6969
return err;
7070
}
7171

@@ -205,13 +205,13 @@ mp_err mp_prime_is_prime(const mp_int *a, int t, mp_bool *result)
205205
p_max = t;
206206
}
207207

208-
if (p_max > MP_PRIME_SIZE) {
208+
if (p_max > PRIVATE_MP_PRIME_TAB_SIZE) {
209209
err = MP_VAL;
210210
goto LBL_B;
211211
}
212212
/* we did bases 2 and 3 already, skip them */
213213
for (ix = 2; ix < p_max; ix++) {
214-
mp_set(&b, ltm_prime_tab[ix]);
214+
mp_set(&b, s_mp_prime_tab[ix]);
215215
if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) {
216216
goto LBL_B;
217217
}

bn_mp_prime_next_prime.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@ mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style)
1313
int x, y;
1414
mp_err err;
1515
mp_bool res = MP_NO;
16-
mp_digit res_tab[MP_PRIME_SIZE], step, kstep;
16+
mp_digit res_tab[PRIVATE_MP_PRIME_TAB_SIZE], step, kstep;
1717
mp_int b;
1818

1919
/* force positive */
2020
a->sign = MP_ZPOS;
2121

2222
/* simple algo if a is less than the largest prime in the table */
23-
if (mp_cmp_d(a, ltm_prime_tab[MP_PRIME_SIZE-1]) == MP_LT) {
23+
if (mp_cmp_d(a, s_mp_prime_tab[PRIVATE_MP_PRIME_TAB_SIZE-1]) == MP_LT) {
2424
/* find which prime it is bigger than */
25-
for (x = MP_PRIME_SIZE - 2; x >= 0; x--) {
26-
if (mp_cmp_d(a, ltm_prime_tab[x]) != MP_LT) {
25+
for (x = PRIVATE_MP_PRIME_TAB_SIZE - 2; x >= 0; x--) {
26+
if (mp_cmp_d(a, s_mp_prime_tab[x]) != MP_LT) {
2727
if (bbs_style == 1) {
2828
/* ok we found a prime smaller or
2929
* equal [so the next is larger]
3030
*
3131
* however, the prime must be
3232
* congruent to 3 mod 4
3333
*/
34-
if ((ltm_prime_tab[x + 1] & 3u) != 3u) {
34+
if ((s_mp_prime_tab[x + 1] & 3u) != 3u) {
3535
/* scan upwards for a prime congruent to 3 mod 4 */
36-
for (y = x + 1; y < MP_PRIME_SIZE; y++) {
37-
if ((ltm_prime_tab[y] & 3u) == 3u) {
38-
mp_set(a, ltm_prime_tab[y]);
36+
for (y = x + 1; y < PRIVATE_MP_PRIME_TAB_SIZE; y++) {
37+
if ((s_mp_prime_tab[y] & 3u) == 3u) {
38+
mp_set(a, s_mp_prime_tab[y]);
3939
return MP_OKAY;
4040
}
4141
}
4242
}
4343
} else {
44-
mp_set(a, ltm_prime_tab[x + 1]);
44+
mp_set(a, s_mp_prime_tab[x + 1]);
4545
return MP_OKAY;
4646
}
4747
}
@@ -80,8 +80,8 @@ mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style)
8080
}
8181

8282
/* generate the restable */
83-
for (x = 1; x < MP_PRIME_SIZE; x++) {
84-
if ((err = mp_mod_d(a, ltm_prime_tab[x], res_tab + x)) != MP_OKAY) {
83+
for (x = 1; x < PRIVATE_MP_PRIME_TAB_SIZE; x++) {
84+
if ((err = mp_mod_d(a, s_mp_prime_tab[x], res_tab + x)) != MP_OKAY) {
8585
return err;
8686
}
8787
}
@@ -102,13 +102,13 @@ mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style)
102102
step += kstep;
103103

104104
/* compute the new residue without using division */
105-
for (x = 1; x < MP_PRIME_SIZE; x++) {
105+
for (x = 1; x < PRIVATE_MP_PRIME_TAB_SIZE; x++) {
106106
/* add the step to each residue */
107107
res_tab[x] += kstep;
108108

109109
/* subtract the modulus [instead of using division] */
110-
if (res_tab[x] >= ltm_prime_tab[x]) {
111-
res_tab[x] -= ltm_prime_tab[x];
110+
if (res_tab[x] >= s_mp_prime_tab[x]) {
111+
res_tab[x] -= s_mp_prime_tab[x];
112112
}
113113

114114
/* set flag if zero */

bn_prime_tab.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,20 @@ const mp_digit ltm_prime_tab[] = {
4343
0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653
4444
#endif
4545
};
46+
47+
#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 301)
48+
#pragma GCC diagnostic push
49+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
50+
const mp_digit *s_mp_prime_tab = ltm_prime_tab;
51+
#pragma GCC diagnostic pop
52+
#elif defined(_MSC_VER) && _MSC_VER >= 1500
53+
#pragma warning(push)
54+
#pragma warning(disable: 4996)
55+
const mp_digit *s_mp_prime_tab = ltm_prime_tab;
56+
#pragma warning(pop)
57+
#else
58+
const mp_digit *s_mp_prime_tab = ltm_prime_tab;
59+
#endif
60+
61+
4662
#endif

bn_mp_prime_is_divisible.c renamed to bn_s_mp_prime_is_divisible.c

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

66
/* determines if an integers is divisible by one
7-
* of the first MP_PRIME_SIZE primes or not
7+
* of the first PRIME_SIZE primes or not
88
*
99
* sets result to 0 if not, 1 if yes
1010
*/
11-
mp_err mp_prime_is_divisible(const mp_int *a, mp_bool *result)
11+
mp_err s_mp_prime_is_divisible(const mp_int *a, mp_bool *result)
1212
{
1313
int ix;
1414
mp_err err;
@@ -17,9 +17,9 @@ mp_err mp_prime_is_divisible(const mp_int *a, mp_bool *result)
1717
/* default to not */
1818
*result = MP_NO;
1919

20-
for (ix = 0; ix < MP_PRIME_SIZE; ix++) {
20+
for (ix = 0; ix < PRIVATE_MP_PRIME_TAB_SIZE; ix++) {
2121
/* what is a mod LBL_prime_tab[ix] */
22-
if ((err = mp_mod_d(a, ltm_prime_tab[ix], &res)) != MP_OKAY) {
22+
if ((err = mp_mod_d(a, s_mp_prime_tab[ix], &res)) != MP_OKAY) {
2323
return err;
2424
}
2525

demo/test.c

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -170,66 +170,6 @@ static int test_mp_rand(void)
170170
return err == MP_OKAY ? EXIT_SUCCESS : EXIT_FAILURE;
171171
}
172172

173-
static int test_s_mp_jacobi(void)
174-
{
175-
struct s_mp_jacobi_st {
176-
unsigned long n;
177-
int c[16];
178-
};
179-
180-
static struct s_mp_jacobi_st jacobi[] = {
181-
{ 3, { 1, -1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1 } },
182-
{ 5, { 0, 1, -1, -1, 1, 0, 1, -1, -1, 1, 0, 1, -1, -1, 1, 0 } },
183-
{ 7, { 1, -1, 1, -1, -1, 0, 1, 1, -1, 1, -1, -1, 0, 1, 1, -1 } },
184-
{ 9, { -1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1 } },
185-
};
186-
187-
int i, n, cnt;
188-
mp_err err, should;
189-
mp_int a, b;
190-
if (mp_init_multi(&a, &b, NULL)!= MP_OKAY) {
191-
return EXIT_FAILURE;
192-
}
193-
194-
mp_set_int(&a, 0uL);
195-
mp_set_int(&b, 1uL);
196-
if ((err = s_mp_jacobi(&a, &b, &i)) != MP_OKAY) {
197-
printf("Failed executing s_mp_jacobi(0 | 1) %s.\n", mp_error_to_string(err));
198-
goto LBL_ERR;
199-
}
200-
if (i != 1) {
201-
printf("Failed trivial s_mp_jacobi(0 | 1) %d != 1\n", i);
202-
goto LBL_ERR;
203-
}
204-
for (cnt = 0; cnt < (int)(sizeof(jacobi)/sizeof(jacobi[0])); ++cnt) {
205-
mp_set_int(&b, jacobi[cnt].n);
206-
/* only test positive values of a */
207-
for (n = -5; n <= 10; ++n) {
208-
mp_set_int(&a, (unsigned int)abs(n));
209-
should = MP_OKAY;
210-
if (n < 0) {
211-
mp_neg(&a, &a);
212-
/* Until #44 is fixed the negative a's must fail */
213-
should = MP_VAL;
214-
}
215-
if ((err = s_mp_jacobi(&a, &b, &i)) != should) {
216-
printf("Failed executing s_mp_jacobi(%d | %lu) %s.\n", n, jacobi[cnt].n, mp_error_to_string(err));
217-
goto LBL_ERR;
218-
}
219-
if ((err == MP_OKAY) && (i != jacobi[cnt].c[n + 5])) {
220-
printf("Failed trivial s_mp_jacobi(%d | %lu) %d != %d\n", n, jacobi[cnt].n, i, jacobi[cnt].c[n + 5]);
221-
goto LBL_ERR;
222-
}
223-
}
224-
}
225-
226-
mp_clear_multi(&a, &b, NULL);
227-
return EXIT_SUCCESS;
228-
LBL_ERR:
229-
mp_clear_multi(&a, &b, NULL);
230-
return EXIT_FAILURE;
231-
}
232-
233173
static int test_mp_kronecker(void)
234174
{
235175
struct mp_kronecker_st {
@@ -2051,7 +1991,6 @@ int unit_tests(int argc, char **argv)
20511991
T(mp_sqrtmod_prime),
20521992
T(mp_xor),
20531993
T(s_mp_balance_mul),
2054-
T(s_mp_jacobi),
20551994
T(s_mp_karatsuba_mul),
20561995
T(s_mp_karatsuba_sqr),
20571996
T(s_mp_toom_mul),

libtommath_VS2008.vcproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -612,10 +612,6 @@
612612
RelativePath="bn_mp_prime_frobenius_underwood.c"
613613
>
614614
</File>
615-
<File
616-
RelativePath="bn_mp_prime_is_divisible.c"
617-
>
618-
</File>
619615
<File
620616
RelativePath="bn_mp_prime_is_prime.c"
621617
>
@@ -856,6 +852,10 @@
856852
RelativePath="bn_s_mp_mul_high_digs_fast.c"
857853
>
858854
</File>
855+
<File
856+
RelativePath="bn_s_mp_prime_is_divisible.c"
857+
>
858+
</File>
859859
<File
860860
RelativePath="bn_s_mp_rand_jenkins.c"
861861
>

makefile

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,20 @@ bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o
3838
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
3939
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
4040
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
41-
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
42-
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
43-
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
44-
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 \
45-
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
46-
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 \
47-
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
48-
bn_mp_signed_bin_size.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o \
49-
bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o \
50-
bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o bn_mp_toradix_n.o \
51-
bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o \
52-
bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o \
53-
bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o \
54-
bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_rand_jenkins.o \
41+
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o \
42+
bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o \
43+
bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o \
44+
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 \
45+
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 \
46+
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o \
47+
bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o \
48+
bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
49+
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
50+
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
51+
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
52+
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
53+
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
54+
bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o \
5555
bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o \
5656
bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
5757

makefile.mingw

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,20 @@ bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o
4141
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
4242
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
4343
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
44-
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
45-
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
46-
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
47-
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 \
48-
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
49-
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 \
50-
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
51-
bn_mp_signed_bin_size.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o \
52-
bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o \
53-
bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o bn_mp_toradix_n.o \
54-
bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o \
55-
bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o \
56-
bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o \
57-
bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_rand_jenkins.o \
44+
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o \
45+
bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o \
46+
bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o \
47+
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 \
48+
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 \
49+
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o \
50+
bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o \
51+
bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
52+
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
53+
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
54+
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
55+
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
56+
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
57+
bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o \
5858
bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o \
5959
bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
6060

0 commit comments

Comments
 (0)