Skip to content

Commit 4a00b14

Browse files
committed
addition of mp_expt (all input bigint)
1 parent 2033fb9 commit 4a00b14

File tree

11 files changed

+370
-83
lines changed

11 files changed

+370
-83
lines changed

bn_mp_expt.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include "tommath_private.h"
2+
#ifdef BN_MP_EXPT_C
3+
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
4+
/* SPDX-License-Identifier: Unlicense */
5+
6+
/* exponentiate a^b = c with a, b, c big integers */
7+
int mp_expt(const mp_int *a, const mp_int *b, mp_int *c)
8+
{
9+
mp_int tmp,e;
10+
int err;
11+
12+
/* only positive exponents for now */
13+
if (b->sign == MP_NEG) {
14+
return MP_VAL;
15+
}
16+
17+
if ((err = mp_init_multi(&tmp,&e,NULL)) != MP_OKAY) {
18+
return err;
19+
}
20+
if ((err = mp_copy(a,&tmp)) != MP_OKAY) {
21+
return err;
22+
}
23+
if ((err = mp_copy(b,&e)) != MP_OKAY) {
24+
return err;
25+
}
26+
if ((err = mp_set_int(c,1)) != MP_OKAY) {
27+
return err;
28+
}
29+
while (!IS_ZERO(&e)) {
30+
if (mp_isodd(&e)) {
31+
if ((err = mp_mul(c,&tmp,c)) != MP_OKAY) {
32+
return err;
33+
}
34+
}
35+
if ((err = mp_div_2(&e, &e)) != MP_OKAY) {
36+
return err;
37+
}
38+
if (!IS_ZERO(&e)) {
39+
if ((err = mp_sqr(&tmp,&tmp)) != MP_OKAY) {
40+
return err;
41+
}
42+
}
43+
}
44+
if (a->sign == MP_NEG) {
45+
c->sign = (mp_isodd(b))?MP_NEG:MP_ZPOS;
46+
}
47+
mp_clear_multi(&tmp,&e,NULL);
48+
return MP_OKAY;
49+
}
50+
51+
#endif

callgraph.txt

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1995,6 +1995,177 @@ BN_MP_EXPTMOD_FAST_C
19951995
+--->BN_MP_EXCH_C
19961996

19971997

1998+
BN_MP_EXPT_C
1999+
+--->BN_MP_INIT_MULTI_C
2000+
| +--->BN_MP_INIT_C
2001+
| +--->BN_MP_CLEAR_C
2002+
+--->BN_MP_COPY_C
2003+
| +--->BN_MP_GROW_C
2004+
+--->BN_MP_SET_INT_C
2005+
| +--->BN_MP_SET_LONG_C
2006+
+--->BN_MP_ISODD_C
2007+
+--->BN_MP_MUL_C
2008+
| +--->BN_FAST_S_MP_MUL_DIGS_C
2009+
| | +--->BN_MP_GROW_C
2010+
| | +--->BN_MP_CLAMP_C
2011+
| +--->BN_MP_BALANCE_MUL_C
2012+
| | +--->BN_MP_INIT_SIZE_C
2013+
| | | +--->BN_MP_INIT_C
2014+
| | +--->BN_MP_CLEAR_C
2015+
| | +--->BN_MP_LSHD_C
2016+
| | | +--->BN_MP_GROW_C
2017+
| | | +--->BN_MP_RSHD_C
2018+
| | | | +--->BN_MP_ZERO_C
2019+
| | +--->BN_MP_ADD_C
2020+
| | | +--->BN_S_MP_ADD_C
2021+
| | | | +--->BN_MP_GROW_C
2022+
| | | | +--->BN_MP_CLAMP_C
2023+
| | | +--->BN_MP_CMP_MAG_C
2024+
| | | +--->BN_S_MP_SUB_C
2025+
| | | | +--->BN_MP_GROW_C
2026+
| | | | +--->BN_MP_CLAMP_C
2027+
| | +--->BN_MP_EXCH_C
2028+
| | +--->BN_MP_CLEAR_MULTI_C
2029+
| +--->BN_MP_TOOM_MUL_C
2030+
| | +--->BN_MP_MOD_2D_C
2031+
| | | +--->BN_MP_ZERO_C
2032+
| | | +--->BN_MP_CLAMP_C
2033+
| | +--->BN_MP_RSHD_C
2034+
| | | +--->BN_MP_ZERO_C
2035+
| | +--->BN_MP_MUL_2_C
2036+
| | | +--->BN_MP_GROW_C
2037+
| | +--->BN_MP_ADD_C
2038+
| | | +--->BN_S_MP_ADD_C
2039+
| | | | +--->BN_MP_GROW_C
2040+
| | | | +--->BN_MP_CLAMP_C
2041+
| | | +--->BN_MP_CMP_MAG_C
2042+
| | | +--->BN_S_MP_SUB_C
2043+
| | | | +--->BN_MP_GROW_C
2044+
| | | | +--->BN_MP_CLAMP_C
2045+
| | +--->BN_MP_SUB_C
2046+
| | | +--->BN_S_MP_ADD_C
2047+
| | | | +--->BN_MP_GROW_C
2048+
| | | | +--->BN_MP_CLAMP_C
2049+
| | | +--->BN_MP_CMP_MAG_C
2050+
| | | +--->BN_S_MP_SUB_C
2051+
| | | | +--->BN_MP_GROW_C
2052+
| | | | +--->BN_MP_CLAMP_C
2053+
| | +--->BN_MP_DIV_2_C
2054+
| | | +--->BN_MP_GROW_C
2055+
| | | +--->BN_MP_CLAMP_C
2056+
| | +--->BN_MP_MUL_2D_C
2057+
| | | +--->BN_MP_GROW_C
2058+
| | | +--->BN_MP_LSHD_C
2059+
| | | +--->BN_MP_CLAMP_C
2060+
| | +--->BN_MP_MUL_D_C
2061+
| | | +--->BN_MP_GROW_C
2062+
| | | +--->BN_MP_CLAMP_C
2063+
| | +--->BN_MP_DIV_3_C
2064+
| | | +--->BN_MP_INIT_SIZE_C
2065+
| | | | +--->BN_MP_INIT_C
2066+
| | | +--->BN_MP_CLAMP_C
2067+
| | | +--->BN_MP_EXCH_C
2068+
| | | +--->BN_MP_CLEAR_C
2069+
| | +--->BN_MP_LSHD_C
2070+
| | | +--->BN_MP_GROW_C
2071+
| | +--->BN_MP_CLEAR_MULTI_C
2072+
| | | +--->BN_MP_CLEAR_C
2073+
| +--->BN_MP_KARATSUBA_MUL_C
2074+
| | +--->BN_MP_INIT_SIZE_C
2075+
| | | +--->BN_MP_INIT_C
2076+
| | +--->BN_MP_CLAMP_C
2077+
| | +--->BN_S_MP_ADD_C
2078+
| | | +--->BN_MP_GROW_C
2079+
| | +--->BN_MP_ADD_C
2080+
| | | +--->BN_MP_CMP_MAG_C
2081+
| | | +--->BN_S_MP_SUB_C
2082+
| | | | +--->BN_MP_GROW_C
2083+
| | +--->BN_S_MP_SUB_C
2084+
| | | +--->BN_MP_GROW_C
2085+
| | +--->BN_MP_LSHD_C
2086+
| | | +--->BN_MP_GROW_C
2087+
| | | +--->BN_MP_RSHD_C
2088+
| | | | +--->BN_MP_ZERO_C
2089+
| | +--->BN_MP_CLEAR_C
2090+
| +--->BN_S_MP_MUL_DIGS_C
2091+
| | +--->BN_MP_INIT_SIZE_C
2092+
| | | +--->BN_MP_INIT_C
2093+
| | +--->BN_MP_CLAMP_C
2094+
| | +--->BN_MP_EXCH_C
2095+
| | +--->BN_MP_CLEAR_C
2096+
+--->BN_MP_DIV_2_C
2097+
| +--->BN_MP_GROW_C
2098+
| +--->BN_MP_CLAMP_C
2099+
+--->BN_MP_SQR_C
2100+
| +--->BN_MP_TOOM_SQR_C
2101+
| | +--->BN_MP_MOD_2D_C
2102+
| | | +--->BN_MP_ZERO_C
2103+
| | | +--->BN_MP_CLAMP_C
2104+
| | +--->BN_MP_RSHD_C
2105+
| | | +--->BN_MP_ZERO_C
2106+
| | +--->BN_MP_MUL_2_C
2107+
| | | +--->BN_MP_GROW_C
2108+
| | +--->BN_MP_ADD_C
2109+
| | | +--->BN_S_MP_ADD_C
2110+
| | | | +--->BN_MP_GROW_C
2111+
| | | | +--->BN_MP_CLAMP_C
2112+
| | | +--->BN_MP_CMP_MAG_C
2113+
| | | +--->BN_S_MP_SUB_C
2114+
| | | | +--->BN_MP_GROW_C
2115+
| | | | +--->BN_MP_CLAMP_C
2116+
| | +--->BN_MP_SUB_C
2117+
| | | +--->BN_S_MP_ADD_C
2118+
| | | | +--->BN_MP_GROW_C
2119+
| | | | +--->BN_MP_CLAMP_C
2120+
| | | +--->BN_MP_CMP_MAG_C
2121+
| | | +--->BN_S_MP_SUB_C
2122+
| | | | +--->BN_MP_GROW_C
2123+
| | | | +--->BN_MP_CLAMP_C
2124+
| | +--->BN_MP_MUL_2D_C
2125+
| | | +--->BN_MP_GROW_C
2126+
| | | +--->BN_MP_LSHD_C
2127+
| | | +--->BN_MP_CLAMP_C
2128+
| | +--->BN_MP_MUL_D_C
2129+
| | | +--->BN_MP_GROW_C
2130+
| | | +--->BN_MP_CLAMP_C
2131+
| | +--->BN_MP_DIV_3_C
2132+
| | | +--->BN_MP_INIT_SIZE_C
2133+
| | | | +--->BN_MP_INIT_C
2134+
| | | +--->BN_MP_CLAMP_C
2135+
| | | +--->BN_MP_EXCH_C
2136+
| | | +--->BN_MP_CLEAR_C
2137+
| | +--->BN_MP_LSHD_C
2138+
| | | +--->BN_MP_GROW_C
2139+
| | +--->BN_MP_CLEAR_MULTI_C
2140+
| | | +--->BN_MP_CLEAR_C
2141+
| +--->BN_MP_KARATSUBA_SQR_C
2142+
| | +--->BN_MP_INIT_SIZE_C
2143+
| | | +--->BN_MP_INIT_C
2144+
| | +--->BN_MP_CLAMP_C
2145+
| | +--->BN_S_MP_ADD_C
2146+
| | | +--->BN_MP_GROW_C
2147+
| | +--->BN_S_MP_SUB_C
2148+
| | | +--->BN_MP_GROW_C
2149+
| | +--->BN_MP_LSHD_C
2150+
| | | +--->BN_MP_GROW_C
2151+
| | | +--->BN_MP_RSHD_C
2152+
| | | | +--->BN_MP_ZERO_C
2153+
| | +--->BN_MP_ADD_C
2154+
| | | +--->BN_MP_CMP_MAG_C
2155+
| | +--->BN_MP_CLEAR_C
2156+
| +--->BN_FAST_S_MP_SQR_C
2157+
| | +--->BN_MP_GROW_C
2158+
| | +--->BN_MP_CLAMP_C
2159+
| +--->BN_S_MP_SQR_C
2160+
| | +--->BN_MP_INIT_SIZE_C
2161+
| | | +--->BN_MP_INIT_C
2162+
| | +--->BN_MP_CLAMP_C
2163+
| | +--->BN_MP_EXCH_C
2164+
| | +--->BN_MP_CLEAR_C
2165+
+--->BN_MP_CLEAR_MULTI_C
2166+
| +--->BN_MP_CLEAR_C
2167+
2168+
19982169
BN_MP_EXPT_D_C
19992170
+--->BN_MP_EXPT_D_EX_C
20002171
| +--->BN_MP_INIT_COPY_C

demo/test.c

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1602,6 +1602,7 @@ static int test_mp_n_root(void)
16021602
return EXIT_FAILURE;
16031603
}
16041604

1605+
<<<<<<< HEAD
16051606
static int test_mp_balance_mul(void)
16061607
{
16071608
mp_int a, b, c;
@@ -1616,6 +1617,52 @@ static int test_mp_balance_mul(void)
16161617
if ((e = mp_init_multi(&a, &b, &c, NULL)) != MP_OKAY) {
16171618
goto LTM_ERR;
16181619
}
1620+
||||||| merged common ancestors
1621+
=======
1622+
static int test_mp_expt(void)
1623+
{
1624+
mp_int a, b, c;
1625+
int e;
1626+
mp_digit i, j;
1627+
1628+
if ((e = mp_init_multi(&a, &b, &c, NULL)) != MP_OKAY) {
1629+
return EXIT_FAILURE;
1630+
}
1631+
1632+
for (j = 3; j < 33; j+=2) {
1633+
mp_set(&a, j);
1634+
#if ( (defined MP_8BIT) || (defined MP_16BIT) )
1635+
for (i = 2; i < MP_MASK; i <<= 1) {
1636+
#else
1637+
for (i = 2; i < (1lu << 17); i <<= 1) {
1638+
#endif
1639+
mp_set(&b, i);
1640+
mp_expt(&a, &b, &c);
1641+
mp_n_root(&c, b.dp[0], &c);
1642+
if (mp_cmp(&c, &a) != MP_EQ) {
1643+
fprintf(stderr,"mp_exp failed for %d^%d\n", (int) j, (int) i);
1644+
goto LTM_ERR;
1645+
}
1646+
}
1647+
1648+
mp_rand(&a, 10);
1649+
for (i = 3; i < 10; i++) {
1650+
mp_set(&b, i);
1651+
mp_expt(&a, &b, &c);
1652+
mp_n_root(&c, b.dp[0], &c);
1653+
if (mp_cmp(&c, &a) != MP_EQ) {
1654+
fprintf(stderr,"mp_exp failed for x^%d\n", (int) i);
1655+
goto LTM_ERR;
1656+
}
1657+
}
1658+
}
1659+
mp_clear_multi(&a, &b, &c, NULL);
1660+
return EXIT_SUCCESS;
1661+
LTM_ERR:
1662+
mp_clear_multi(&a, &b, &c, NULL);
1663+
return EXIT_FAILURE;
1664+
}
1665+
>>>>>>> addition of mp_expt (all input bigint)
16191666

16201667
if ((e = mp_read_radix(&a, na, 64)) != MP_OKAY) {
16211668
goto LTM_ERR;
@@ -1678,7 +1725,8 @@ int unit_tests(void)
16781725
T(mp_tc_xor),
16791726
T(mp_incr),
16801727
T(mp_decr),
1681-
T(mp_balance_mul)
1728+
T(mp_balance_mul),
1729+
T(mp_expt)
16821730
#undef T
16831731
};
16841732
unsigned long i;

libtommath_VS2008.vcproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,10 @@
448448
RelativePath="bn_mp_export.c"
449449
>
450450
</File>
451+
<File
452+
RelativePath="bn_mp_expt.c"
453+
>
454+
</File>
451455
<File
452456
RelativePath="bn_mp_expt_d.c"
453457
>

makefile

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,22 @@ bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_
3131
bn_mp_addmod.o bn_mp_and.o bn_mp_balance_mul.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o \
3232
bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o \
3333
bn_mp_decr.o 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 \
34-
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o \
35-
bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o \
36-
bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o \
37-
bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
38-
bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o \
39-
bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o \
40-
bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o \
41-
bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o \
42-
bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.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_divisible.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_random_ex.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_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
34+
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt.o bn_mp_expt_d.o \
35+
bn_mp_expt_d_ex.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o \
36+
bn_mp_gcd.o bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o \
37+
bn_mp_grow.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o \
38+
bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o \
39+
bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o \
40+
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 \
41+
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_n_root_ex.o bn_mp_neg.o \
43+
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \
44+
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
45+
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \
46+
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \
47+
bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \
48+
bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \
49+
bn_mp_set.o 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 \
5050
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
5151
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
5252
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 \

makefile.mingw

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,22 @@ bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_
3434
bn_mp_addmod.o bn_mp_and.o bn_mp_balance_mul.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o \
3535
bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o \
3636
bn_mp_decr.o 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 \
37-
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o \
38-
bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o \
39-
bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o \
40-
bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
41-
bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o \
42-
bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o \
43-
bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o \
44-
bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o \
45-
bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
46-
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
47-
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
48-
bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
49-
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 \
50-
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
51-
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 \
52-
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 \
37+
bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt.o bn_mp_expt_d.o \
38+
bn_mp_expt_d_ex.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o \
39+
bn_mp_gcd.o bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o \
40+
bn_mp_grow.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o \
41+
bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o \
42+
bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o \
43+
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 \
44+
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
45+
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_n_root_ex.o bn_mp_neg.o \
46+
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \
47+
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
48+
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \
49+
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \
50+
bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \
51+
bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \
52+
bn_mp_set.o 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 \
5353
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
5454
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
5555
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 \

0 commit comments

Comments
 (0)