From 3d0fcaab0a2d411b541dc9df8abd0a6be2df268f Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Sat, 12 Feb 2005 08:40:15 +0000 Subject: [PATCH] added libtommath-0.34 --- bn.pdf | Bin 335112 -> 337436 bytes bn.tex | 29 +- bn_fast_mp_invmod.c | 3 +- bn_fast_mp_montgomery_reduce.c | 3 +- bn_fast_s_mp_mul_digs.c | 5 +- bn_fast_s_mp_mul_high_digs.c | 5 +- bn_fast_s_mp_sqr.c | 2 +- bn_mp_exptmod.c | 14 +- bn_mp_exptmod_fast.c | 3 +- bn_mp_mul_d.c | 3 +- bn_mp_prime_random_ex.c | 4 +- bn_mp_read_radix.c | 2 +- bn_mp_reduce.c | 3 +- bn_mp_reduce_2k.c | 3 +- bn_mp_reduce_2k_l.c | 58 + bn_mp_reduce_2k_setup.c | 3 +- bn_mp_reduce_2k_setup_l.c | 40 + bn_mp_reduce_is_2k.c | 8 +- bn_mp_reduce_is_2k_l.c | 40 + bn_mp_to_signed_bin.c | 3 +- bn_mp_to_signed_bin_n.c | 27 + bn_mp_to_unsigned_bin.c | 3 +- bn_mp_to_unsigned_bin_n.c | 27 + bn_mp_unsigned_bin_size.c | 3 +- bn_s_mp_exptmod.c | 35 +- bncore.c | 5 +- callgraph.txt | 5221 +++++++++++++++++++------------- changes.txt | 12 + demo/demo.c | 898 +++--- demo/timing.c | 382 +-- dep.pl | 2 + etc/tune.c | 35 +- logs/add.log | 14 +- logs/expt.log | 14 +- logs/expt_2k.log | 11 +- logs/expt_2kl.log | 4 + logs/expt_dr.log | 14 +- logs/mult.log | 227 +- logs/mult_kara.log | 117 +- logs/sqr.log | 227 +- logs/sqr_kara.log | 117 +- logs/sub.log | 30 +- makefile | 6 +- makefile.bcc | 4 +- makefile.cygwin_dll | 4 +- makefile.icc | 4 +- makefile.msvc | 4 +- makefile.shared | 7 +- poster.pdf | Bin 40821 -> 40822 bytes pre_gen/mpi.c | 322 +- tommath.h | 15 +- tommath.pdf | Bin 1159120 -> 1160137 bytes tommath.src | 2 +- tommath.tex | 1276 ++++---- tommath_class.h | 44 +- 55 files changed, 5477 insertions(+), 3867 deletions(-) create mode 100644 bn_mp_reduce_2k_l.c create mode 100644 bn_mp_reduce_2k_setup_l.c create mode 100644 bn_mp_reduce_is_2k_l.c create mode 100644 bn_mp_to_signed_bin_n.c create mode 100644 bn_mp_to_unsigned_bin_n.c create mode 100644 logs/expt_2kl.log diff --git a/bn.pdf b/bn.pdf index 9b873e1b3fde8d1703a3045c6247cde6a5998800..7993ed65e179b3d06c59d5ebbb03f324babc46c1 100644 GIT binary patch delta 114992 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

y2^>iweoZF2uL;ONeD~^?+l+|z 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

@%NcG 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 z z8)(H6AQ+awi4y|MqW}W87_Di6LlBY)$e4tz2#+mj(!roZ@v8{=hyT%_k4jh=cmTmO z&BYW{Vbpi1Q``=z`$7eX)uBw1FaQ7kC={W0B|_M zWVyGKfa%<4Xo6?BH5;-pott}68GKCP-+<%B8y#xiUjh7=|3QxjEfz7T%?Z~D!jeG4 zplN~Dd+?S(B&{rXx1DGV@IT0ZXyXlJgr^toLn;OF0tEVmmklneam_;?HlQy^=&8eF z9e^;x|F|!VXr~5V7@^xT(XH@V2pU?D!eax0euIo?41~;|CeLsF2Pa2GxjU82AXGnq zZ*-KVLrW5nbfSTP0ff&afDF2!6ZLQq657sO8A=`jwkT+0g)2iNohw7T#2|yh@bALj fp7t&~w|NR_X$f)4XYa6p(s5n? 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

Iv}@DvtMz4o%L*jQD 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 diff --git a/bn.tex b/bn.tex index 962d6ea..0174896 100644 --- a/bn.tex +++ b/bn.tex @@ -49,7 +49,7 @@ \begin{document} \frontmatter \pagestyle{empty} -\title{LibTomMath User Manual \\ v0.33} +\title{LibTomMath User Manual \\ v0.34} \author{Tom St Denis \\ tomstdenis@iahu.ca} \maketitle This text, the library and the accompanying textbook are all hereby placed in the public domain. This book has been @@ -263,12 +263,12 @@ are the pros and cons of LibTomMath by comparing it to the math routines from Gn \begin{center} \begin{tabular}{|l|c|c|l|} \hline \textbf{Criteria} & \textbf{Pro} & \textbf{Con} & \textbf{Notes} \\ -\hline Few lines of code per file & X & & GnuPG $ = 300.9$, LibTomMath $ = 76.04$ \\ +\hline Few lines of code per file & X & & GnuPG $ = 300.9$, LibTomMath $ = 71.97$ \\ \hline Commented function prototypes & X && GnuPG function names are cryptic. \\ \hline Speed && X & LibTomMath is slower. \\ \hline Totally free & X & & GPL has unfavourable restrictions.\\ \hline Large function base & X & & GnuPG is barebones. \\ -\hline Four modular reduction algorithms & X & & Faster modular exponentiation. \\ +\hline Five modular reduction algorithms & X & & Faster modular exponentiation for a variety of moduli. \\ \hline Portable & X & & GnuPG requires configuration to build. \\ \hline \end{tabular} @@ -284,9 +284,12 @@ would require when working with large integers. So it may feel tempting to just rip the math code out of GnuPG (or GnuMP where it was taken from originally) in your own application but I think there are reasons not to. While LibTomMath is slower than libraries such as GnuMP it is not normally significantly slower. On x86 machines the difference is normally a factor of two when performing modular -exponentiations. +exponentiations. It depends largely on the processor, compiler and the moduli being used. -Essentially the only time you wouldn't use LibTomMath is when blazing speed is the primary concern. +Essentially the only time you wouldn't use LibTomMath is when blazing speed is the primary concern. However, +on the other side of the coin LibTomMath offers you a totally free (public domain) well structured math library +that is very flexible, complete and performs well in resource contrained environments. Fast RSA for example can +be performed with as little as 8KB of ram for data (again depending on build options). \chapter{Getting Started with LibTomMath} \section{Building Programs} @@ -809,7 +812,7 @@ mp\_int variables based on their digits only. \index{mp\_cmp\_mag} \begin{alltt} -int mp_cmp(mp_int * a, mp_int * b); +int mp_cmp_mag(mp_int * a, mp_int * b); \end{alltt} This will compare $a$ to $b$ placing $a$ to the left of $b$. This function cannot fail and will return one of the three compare codes listed in figure \ref{fig:CMP}. @@ -1220,12 +1223,13 @@ int mp_sqr (mp_int * a, mp_int * b); \end{alltt} Will square $a$ and store it in $b$. Like the case of multiplication there are four different squaring -algorithms all which can be called from mp\_sqr(). It is ideal to use mp\_sqr over mp\_mul when squaring terms. +algorithms all which can be called from mp\_sqr(). It is ideal to use mp\_sqr over mp\_mul when squaring terms because +of the speed difference. \section{Tuning Polynomial Basis Routines} Both of the Toom-Cook and Karatsuba multiplication algorithms are faster than the traditional $O(n^2)$ approach that -the Comba and baseline algorithms use. At $O(n^{1.464973})$ and $O(n^{1.584962})$ running times respectfully they require +the Comba and baseline algorithms use. At $O(n^{1.464973})$ and $O(n^{1.584962})$ running times respectively they require considerably less work. For example, a 10000-digit multiplication would take roughly 724,000 single precision multiplications with Toom-Cook or 100,000,000 single precision multiplications with the standard Comba (a factor of 138). @@ -1297,14 +1301,14 @@ of $b$. This algorithm accepts an input $a$ of any range and is not limited by \section{Barrett Reduction} Barrett reduction is a generic optimized reduction algorithm that requires pre--computation to achieve -a decent speedup over straight division. First a $mu$ value must be precomputed with the following function. +a decent speedup over straight division. First a $\mu$ value must be precomputed with the following function. \index{mp\_reduce\_setup} \begin{alltt} int mp_reduce_setup(mp_int *a, mp_int *b); \end{alltt} -Given a modulus in $b$ this produces the required $mu$ value in $a$. For any given modulus this only has to +Given a modulus in $b$ this produces the required $\mu$ value in $a$. For any given modulus this only has to be computed once. Modular reduction can now be performed with the following. \index{mp\_reduce} @@ -1312,7 +1316,7 @@ be computed once. Modular reduction can now be performed with the following. int mp_reduce(mp_int *a, mp_int *b, mp_int *c); \end{alltt} -This will reduce $a$ in place modulo $b$ with the precomputed $mu$ value in $c$. $a$ must be in the range +This will reduce $a$ in place modulo $b$ with the precomputed $\mu$ value in $c$. $a$ must be in the range $0 \le a < b^2$. \begin{alltt} @@ -1578,7 +1582,8 @@ will return $-2$. This algorithm uses the ``Newton Approximation'' method and will converge on the correct root fairly quickly. Since the algorithm requires raising $a$ to the power of $b$ it is not ideal to attempt to find roots for large values of $b$. If particularly large roots are required then a factor method could be used instead. For example, -$a^{1/16}$ is equivalent to $\left (a^{1/4} \right)^{1/4}$. +$a^{1/16}$ is equivalent to $\left (a^{1/4} \right)^{1/4}$ or simply +$\left ( \left ( \left ( a^{1/2} \right )^{1/2} \right )^{1/2} \right )^{1/2}$ \chapter{Prime Numbers} \section{Trial Division} diff --git a/bn_fast_mp_invmod.c b/bn_fast_mp_invmod.c index b5b9f10..ff7a6a1 100644 --- a/bn_fast_mp_invmod.c +++ b/bn_fast_mp_invmod.c @@ -21,8 +21,7 @@ * Based on slow invmod except this is optimized for the case where b is * odd as per HAC Note 14.64 on pp. 610 */ -int -fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) +int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c) { mp_int x, y, u, v, B, D; int res, neg; diff --git a/bn_fast_mp_montgomery_reduce.c b/bn_fast_mp_montgomery_reduce.c index 7373ae6..14f307f 100644 --- a/bn_fast_mp_montgomery_reduce.c +++ b/bn_fast_mp_montgomery_reduce.c @@ -23,8 +23,7 @@ * * Based on Algorithm 14.32 on pp.601 of HAC. */ -int -fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) { int ix, res, olduse; mp_word W[MP_WARRAY]; diff --git a/bn_fast_s_mp_mul_digs.c b/bn_fast_s_mp_mul_digs.c index e1ff5f3..ee83506 100644 --- a/bn_fast_s_mp_mul_digs.c +++ b/bn_fast_s_mp_mul_digs.c @@ -31,8 +31,7 @@ * Based on Algorithm 14.12 on pp.595 of HAC. * */ -int -fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -81,7 +80,7 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = _W & MP_MASK; /* setup dest */ olduse = c->used; diff --git a/bn_fast_s_mp_mul_high_digs.c b/bn_fast_s_mp_mul_high_digs.c index 064a9dd..ed45de3 100644 --- a/bn_fast_s_mp_mul_high_digs.c +++ b/bn_fast_s_mp_mul_high_digs.c @@ -24,8 +24,7 @@ * * Based on Algorithm 14.12 on pp.595 of HAC. */ -int -fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -72,7 +71,7 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = _W & MP_MASK; /* setup dest */ olduse = c->used; diff --git a/bn_fast_s_mp_sqr.c b/bn_fast_s_mp_sqr.c index d6014ab..04788cc 100644 --- a/bn_fast_s_mp_sqr.c +++ b/bn_fast_s_mp_sqr.c @@ -101,7 +101,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) } /* store it */ - W[ix] = _W; + W[ix] = _W & MP_MASK; /* make next carry */ W1 = _W >> ((mp_word)DIGIT_BIT); diff --git a/bn_mp_exptmod.c b/bn_mp_exptmod.c index 7309170..7c4e2f8 100644 --- a/bn_mp_exptmod.c +++ b/bn_mp_exptmod.c @@ -65,21 +65,29 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif } +/* modified diminished radix reduction */ +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) + if (mp_reduce_is_2k_l(P) == MP_YES) { + return s_mp_exptmod(G, X, P, Y, 1); + } +#endif + #ifdef BN_MP_DR_IS_MODULUS_C /* is it a DR modulus? */ dr = mp_dr_is_modulus(P); #else + /* default to no */ dr = 0; #endif #ifdef BN_MP_REDUCE_IS_2K_C - /* if not, is it a uDR modulus? */ + /* if not, is it a unrestricted DR modulus? */ if (dr == 0) { dr = mp_reduce_is_2k(P) << 1; } #endif - /* if the modulus is odd or dr != 0 use the fast method */ + /* if the modulus is odd or dr != 0 use the montgomery method */ #ifdef BN_MP_EXPTMOD_FAST_C if (mp_isodd (P) == 1 || dr != 0) { return mp_exptmod_fast (G, X, P, Y, dr); @@ -87,7 +95,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif #ifdef BN_S_MP_EXPTMOD_C /* otherwise use the generic Barrett reduction technique */ - return s_mp_exptmod (G, X, P, Y); + return s_mp_exptmod (G, X, P, Y, 0); #else /* no exptmod for evens */ return MP_VAL; diff --git a/bn_mp_exptmod_fast.c b/bn_mp_exptmod_fast.c index 255e9d9..82be9ac 100644 --- a/bn_mp_exptmod_fast.c +++ b/bn_mp_exptmod_fast.c @@ -29,8 +29,7 @@ #define TAB_SIZE 256 #endif -int -mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) +int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res; mp_digit buf, mp; diff --git a/bn_mp_mul_d.c b/bn_mp_mul_d.c index f936361..9e11eef 100644 --- a/bn_mp_mul_d.c +++ b/bn_mp_mul_d.c @@ -57,8 +57,9 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); } - /* store final carry [if any] */ + /* store final carry [if any] and increment ix offset */ *tmpc++ = u; + ++ix; /* now zero digits above the top */ while (ix++ < olduse) { diff --git a/bn_mp_prime_random_ex.c b/bn_mp_prime_random_ex.c index 2010ebe..78c0583 100644 --- a/bn_mp_prime_random_ex.c +++ b/bn_mp_prime_random_ex.c @@ -60,7 +60,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback /* calc the maskOR_msb */ maskOR_msb = 0; - maskOR_msb_offset = (size - 2) >> 3; + maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; if (flags & LTM_PRIME_2MSB_ON) { maskOR_msb |= 1 << ((size - 2) & 7); } else if (flags & LTM_PRIME_2MSB_OFF) { @@ -68,7 +68,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback } /* get the maskOR_lsb */ - maskOR_lsb = 0; + maskOR_lsb = 1; if (flags & LTM_PRIME_BBS) { maskOR_lsb |= 3; } diff --git a/bn_mp_read_radix.c b/bn_mp_read_radix.c index 704bd0f..1ec3937 100644 --- a/bn_mp_read_radix.c +++ b/bn_mp_read_radix.c @@ -16,7 +16,7 @@ */ /* read a string [ASCII] in a given radix */ -int mp_read_radix (mp_int * a, char *str, int radix) +int mp_read_radix (mp_int * a, const char *str, int radix) { int y, res, neg; char ch; diff --git a/bn_mp_reduce.c b/bn_mp_reduce.c index cfcb55a..e84f81d 100644 --- a/bn_mp_reduce.c +++ b/bn_mp_reduce.c @@ -19,8 +19,7 @@ * precomputed via mp_reduce_setup. * From HAC pp.604 Algorithm 14.42 */ -int -mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) { mp_int q; int res, um = m->used; diff --git a/bn_mp_reduce_2k.c b/bn_mp_reduce_2k.c index a5a9c74..28c3a00 100644 --- a/bn_mp_reduce_2k.c +++ b/bn_mp_reduce_2k.c @@ -16,8 +16,7 @@ */ /* reduces a modulo n where n is of the form 2**p - d */ -int -mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) { mp_int q; int p, res; diff --git a/bn_mp_reduce_2k_l.c b/bn_mp_reduce_2k_l.c new file mode 100644 index 0000000..1d7e1f0 --- /dev/null +++ b/bn_mp_reduce_2k_l.c @@ -0,0 +1,58 @@ +#include +#ifdef BN_MP_REDUCE_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces a modulo n where n is of the form 2**p - d + This differs from reduce_2k since "d" can be larger + than a single digit. +*/ +int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto ERR; + } + + /* q = q * d */ + if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { + goto ERR; + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + s_mp_sub(a, n, a); + goto top; + } + +ERR: + mp_clear(&q); + return res; +} + +#endif diff --git a/bn_mp_reduce_2k_setup.c b/bn_mp_reduce_2k_setup.c index 5e1fb6e..585e1b7 100644 --- a/bn_mp_reduce_2k_setup.c +++ b/bn_mp_reduce_2k_setup.c @@ -16,8 +16,7 @@ */ /* determines the setup value */ -int -mp_reduce_2k_setup(mp_int *a, mp_digit *d) +int mp_reduce_2k_setup(mp_int *a, mp_digit *d) { int res, p; mp_int tmp; diff --git a/bn_mp_reduce_2k_setup_l.c b/bn_mp_reduce_2k_setup_l.c new file mode 100644 index 0000000..810a456 --- /dev/null +++ b/bn_mp_reduce_2k_setup_l.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_REDUCE_2K_SETUP_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +int mp_reduce_2k_setup_l(mp_int *a, mp_int *d) +{ + int res; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) { + goto ERR; + } + + if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear(&tmp); + return res; +} +#endif diff --git a/bn_mp_reduce_is_2k.c b/bn_mp_reduce_is_2k.c index fc81397..0fb8384 100644 --- a/bn_mp_reduce_is_2k.c +++ b/bn_mp_reduce_is_2k.c @@ -22,9 +22,9 @@ int mp_reduce_is_2k(mp_int *a) mp_digit iz; if (a->used == 0) { - return 0; + return MP_NO; } else if (a->used == 1) { - return 1; + return MP_YES; } else if (a->used > 1) { iy = mp_count_bits(a); iz = 1; @@ -33,7 +33,7 @@ int mp_reduce_is_2k(mp_int *a) /* Test every bit from the second digit up, must be 1 */ for (ix = DIGIT_BIT; ix < iy; ix++) { if ((a->dp[iw] & iz) == 0) { - return 0; + return MP_NO; } iz <<= 1; if (iz > (mp_digit)MP_MASK) { @@ -42,7 +42,7 @@ int mp_reduce_is_2k(mp_int *a) } } } - return 1; + return MP_YES; } #endif diff --git a/bn_mp_reduce_is_2k_l.c b/bn_mp_reduce_is_2k_l.c new file mode 100644 index 0000000..ceba0ed --- /dev/null +++ b/bn_mp_reduce_is_2k_l.c @@ -0,0 +1,40 @@ +#include +#ifdef BN_MP_REDUCE_IS_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if reduce_2k_l can be used */ +int mp_reduce_is_2k_l(mp_int *a) +{ + int ix, iy; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + /* if more than half of the digits are -1 we're sold */ + for (iy = ix = 0; ix < a->used; ix++) { + if (a->dp[ix] == MP_MASK) { + ++iy; + } + } + return (iy >= (a->used/2)) ? MP_YES : MP_NO; + + } + return MP_NO; +} + +#endif diff --git a/bn_mp_to_signed_bin.c b/bn_mp_to_signed_bin.c index 0e40d0f..b0a597e 100644 --- a/bn_mp_to_signed_bin.c +++ b/bn_mp_to_signed_bin.c @@ -16,8 +16,7 @@ */ /* store in signed [big endian] format */ -int -mp_to_signed_bin (mp_int * a, unsigned char *b) +int mp_to_signed_bin (mp_int * a, unsigned char *b) { int res; diff --git a/bn_mp_to_signed_bin_n.c b/bn_mp_to_signed_bin_n.c new file mode 100644 index 0000000..0f765ee --- /dev/null +++ b/bn_mp_to_signed_bin_n.c @@ -0,0 +1,27 @@ +#include +#ifdef BN_MP_TO_SIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in signed [big endian] format */ +int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_signed_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_signed_bin_size(a); + return mp_to_signed_bin(a, b); +} +#endif diff --git a/bn_mp_to_unsigned_bin.c b/bn_mp_to_unsigned_bin.c index 763e346..000967e 100644 --- a/bn_mp_to_unsigned_bin.c +++ b/bn_mp_to_unsigned_bin.c @@ -16,8 +16,7 @@ */ /* store in unsigned [big endian] format */ -int -mp_to_unsigned_bin (mp_int * a, unsigned char *b) +int mp_to_unsigned_bin (mp_int * a, unsigned char *b) { int x, res; mp_int t; diff --git a/bn_mp_to_unsigned_bin_n.c b/bn_mp_to_unsigned_bin_n.c new file mode 100644 index 0000000..d0256b4 --- /dev/null +++ b/bn_mp_to_unsigned_bin_n.c @@ -0,0 +1,27 @@ +#include +#ifdef BN_MP_TO_UNSIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in unsigned [big endian] format */ +int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_unsigned_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_unsigned_bin_size(a); + return mp_to_unsigned_bin(a, b); +} +#endif diff --git a/bn_mp_unsigned_bin_size.c b/bn_mp_unsigned_bin_size.c index 80da415..091f406 100644 --- a/bn_mp_unsigned_bin_size.c +++ b/bn_mp_unsigned_bin_size.c @@ -16,8 +16,7 @@ */ /* get the size for an unsigned equivalent */ -int -mp_unsigned_bin_size (mp_int * a) +int mp_unsigned_bin_size (mp_int * a) { int size = mp_count_bits (a); return (size / 8 + ((size & 7) != 0 ? 1 : 0)); diff --git a/bn_s_mp_exptmod.c b/bn_s_mp_exptmod.c index 01a766f..597e877 100644 --- a/bn_s_mp_exptmod.c +++ b/bn_s_mp_exptmod.c @@ -21,11 +21,12 @@ #define TAB_SIZE 256 #endif -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res, mu; mp_digit buf; int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + int (*redux)(mp_int*,mp_int*,mp_int*); /* find window size */ x = mp_count_bits (X); @@ -72,9 +73,18 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_init (&mu)) != MP_OKAY) { goto LBL_M; } - if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { - goto LBL_MU; - } + + if (redmode == 0) { + if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce; + } else { + if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce_2k_l; + } /* create M table * @@ -96,11 +106,14 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } for (x = 0; x < (winsize - 1); x++) { + /* square it */ if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + + /* reduce modulo P */ + if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -112,7 +125,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) { + if ((err = redux (&M[x], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -161,7 +174,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } continue; @@ -178,7 +191,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } @@ -187,7 +200,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -205,7 +218,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -215,7 +228,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } diff --git a/bncore.c b/bncore.c index cf8a15a..82e3132 100644 --- a/bncore.c +++ b/bncore.c @@ -20,11 +20,12 @@ CPU /Compiler /MUL CUTOFF/SQR CUTOFF ------------------------------------------------------------- Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + AMD Athlon64 /GCC v3.4.4 / 74/ 124/LTM 0.34 */ -int KARATSUBA_MUL_CUTOFF = 88, /* Min. number of digits before Karatsuba multiplication is used. */ - KARATSUBA_SQR_CUTOFF = 128, /* Min. number of digits before Karatsuba squaring is used. */ +int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 124, /* Min. number of digits before Karatsuba squaring is used. */ TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ TOOM_SQR_CUTOFF = 400; diff --git a/callgraph.txt b/callgraph.txt index 4dc4cba..031d168 100644 --- a/callgraph.txt +++ b/callgraph.txt @@ -973,6 +973,470 @@ BN_MP_EXPTMOD_C | +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C +--->BN_MP_CLEAR_MULTI_C ++--->BN_MP_REDUCE_IS_2K_L_C ++--->BN_S_MP_EXPTMOD_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_REDUCE_SETUP_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_D_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_SETUP_L_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_L_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_EXCH_C +--->BN_MP_DR_IS_MODULUS_C +--->BN_MP_REDUCE_IS_2K_C | +--->BN_MP_REDUCE_2K_C @@ -1380,365 +1844,6 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C | +--->BN_MP_EXCH_C -+--->BN_S_MP_EXPTMOD_C -| +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_REDUCE_SETUP_C -| | +--->BN_MP_2EXPT_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_DIV_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_MP_COPY_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_SET_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2D_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_INIT_COPY_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MOD_C -| | +--->BN_MP_DIV_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_MP_COPY_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_SET_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2D_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_INIT_COPY_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_RSHD_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_ADD_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C -| +--->BN_MP_COPY_C -| | +--->BN_MP_GROW_C -| +--->BN_MP_SQR_C -| | +--->BN_MP_TOOM_SQR_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | +--->BN_MP_KARATSUBA_SQR_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | +--->BN_FAST_S_MP_SQR_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_SQR_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| +--->BN_MP_REDUCE_C -| | +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_RSHD_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_MUL_C -| | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_MUL_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MOD_2D_C -| | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_MUL_DIGS_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SUB_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_D_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_LSHD_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_ADD_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_C -| | | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MUL_C -| | +--->BN_MP_TOOM_MUL_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | +--->BN_MP_KARATSUBA_MUL_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_MUL_DIGS_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| +--->BN_MP_SET_C -| | +--->BN_MP_ZERO_C -| +--->BN_MP_EXCH_C BN_MP_OR_C @@ -1833,6 +1938,469 @@ BN_MP_PRIME_FERMAT_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_L_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C | +--->BN_MP_DR_IS_MODULUS_C | +--->BN_MP_REDUCE_IS_2K_C | | +--->BN_MP_REDUCE_2K_C @@ -2240,364 +2808,6 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_EXCH_C -| +--->BN_S_MP_EXPTMOD_C -| | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_REDUCE_SETUP_C -| | | +--->BN_MP_2EXPT_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2D_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_INIT_COPY_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MOD_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2D_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_INIT_COPY_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_MP_COPY_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_SQR_C -| | | +--->BN_MP_TOOM_SQR_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_SQR_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | +--->BN_FAST_S_MP_SQR_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_SQR_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_REDUCE_C -| | | +--->BN_MP_INIT_COPY_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SET_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MUL_C -| | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_MUL_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_EXCH_C +--->BN_MP_CMP_C | +--->BN_MP_CMP_MAG_C +--->BN_MP_CLEAR_C @@ -3533,6 +3743,437 @@ BN_MP_PRIME_RANDOM_EX_C | | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_REDUCE_IS_2K_L_C +| | | +--->BN_S_MP_EXPTMOD_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_REDUCE_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_L_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_DR_IS_MODULUS_C | | | +--->BN_MP_REDUCE_IS_2K_C | | | | +--->BN_MP_REDUCE_2K_C @@ -3903,343 +4544,6 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_EXCH_C -| | | +--->BN_S_MP_EXPTMOD_C -| | | | +--->BN_MP_COUNT_BITS_C -| | | | +--->BN_MP_REDUCE_SETUP_C -| | | | | +--->BN_MP_2EXPT_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_DIV_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_MP_COPY_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MOD_C -| | | | | +--->BN_MP_DIV_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_MP_COPY_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_SQR_C -| | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SQR_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_REDUCE_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_C -| | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_SUB_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_3_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_SUB_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_C -| | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_EXCH_C | | +--->BN_MP_CMP_C | | | +--->BN_MP_CMP_MAG_C | | +--->BN_MP_SQRMOD_C @@ -4813,6 +5117,437 @@ BN_MP_PRIME_IS_PRIME_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_REDUCE_IS_2K_L_C +| | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_REDUCE_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_L_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C | | +--->BN_MP_DR_IS_MODULUS_C | | +--->BN_MP_REDUCE_IS_2K_C | | | +--->BN_MP_REDUCE_2K_C @@ -5183,343 +5918,6 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_EXCH_C -| | +--->BN_S_MP_EXPTMOD_C -| | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_REDUCE_SETUP_C -| | | | +--->BN_MP_2EXPT_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MOD_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_COPY_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_SQR_C -| | | | +--->BN_MP_TOOM_SQR_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_SQR_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_REDUCE_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_C -| | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_EXCH_C | +--->BN_MP_CMP_C | | +--->BN_MP_CMP_MAG_C | +--->BN_MP_SQRMOD_C @@ -6556,6 +6954,437 @@ BN_MP_PRIME_NEXT_PRIME_C | | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_REDUCE_IS_2K_L_C +| | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_REDUCE_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_L_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C | | +--->BN_MP_DR_IS_MODULUS_C | | +--->BN_MP_REDUCE_IS_2K_C | | | +--->BN_MP_REDUCE_2K_C @@ -6926,343 +7755,6 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_EXCH_C -| | +--->BN_S_MP_EXPTMOD_C -| | | +--->BN_MP_COUNT_BITS_C -| | | +--->BN_MP_REDUCE_SETUP_C -| | | | +--->BN_MP_2EXPT_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MOD_C -| | | | +--->BN_MP_DIV_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_COPY_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_COPY_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_SQR_C -| | | | +--->BN_MP_TOOM_SQR_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_SQR_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_REDUCE_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_C -| | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_EXCH_C | +--->BN_MP_CMP_C | | +--->BN_MP_CMP_MAG_C | +--->BN_MP_SQRMOD_C @@ -7604,6 +8096,107 @@ BN_MP_LCM_C | +--->BN_MP_CLEAR_C +BN_MP_REDUCE_2K_L_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + BN_REVERSE_C @@ -7671,6 +8264,18 @@ BN_MP_GCD_C +--->BN_MP_CLEAR_C +BN_MP_REDUCE_2K_SETUP_L_C ++--->BN_MP_INIT_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_COUNT_BITS_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + BN_MP_READ_RADIX_C +--->BN_MP_ZERO_C +--->BN_MP_MUL_D_C @@ -7983,6 +8588,226 @@ BN_S_MP_EXPTMOD_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_SETUP_L_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_L_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +--->BN_MP_MOD_C | +--->BN_MP_DIV_C | | +--->BN_MP_CMP_MAG_C @@ -8110,121 +8935,6 @@ BN_S_MP_EXPTMOD_C | | +--->BN_MP_INIT_SIZE_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C -+--->BN_MP_REDUCE_C -| +--->BN_MP_INIT_COPY_C -| +--->BN_MP_RSHD_C -| | +--->BN_MP_ZERO_C -| +--->BN_MP_MUL_C -| | +--->BN_MP_TOOM_MUL_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_KARATSUBA_MUL_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_MUL_DIGS_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| +--->BN_S_MP_MUL_HIGH_DIGS_C -| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C -| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_MOD_2D_C -| | +--->BN_MP_ZERO_C -| | +--->BN_MP_CLAMP_C -| +--->BN_S_MP_MUL_DIGS_C -| | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C -| +--->BN_MP_SUB_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_D_C -| +--->BN_MP_SET_C -| | +--->BN_MP_ZERO_C -| +--->BN_MP_LSHD_C -| | +--->BN_MP_GROW_C -| +--->BN_MP_ADD_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_C -| | +--->BN_MP_CMP_MAG_C -| +--->BN_S_MP_SUB_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C +--->BN_MP_MUL_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C @@ -8529,6 +9239,31 @@ BN_MP_ADD_C | +--->BN_MP_CLAMP_C +BN_MP_TO_SIGNED_BIN_N_C ++--->BN_MP_SIGNED_BIN_SIZE_C +| +--->BN_MP_UNSIGNED_BIN_SIZE_C +| | +--->BN_MP_COUNT_BITS_C ++--->BN_MP_TO_SIGNED_BIN_C +| +--->BN_MP_TO_UNSIGNED_BIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_IS_2K_L_C + + BN_MP_RAND_C +--->BN_MP_ZERO_C +--->BN_MP_ADD_D_C @@ -8556,6 +9291,26 @@ BN_MP_RSHD_C BN_MP_SHRINK_C +BN_MP_TO_UNSIGNED_BIN_N_C ++--->BN_MP_UNSIGNED_BIN_SIZE_C +| +--->BN_MP_COUNT_BITS_C ++--->BN_MP_TO_UNSIGNED_BIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + BN_MP_REDUCE_C +--->BN_MP_REDUCE_SETUP_C | +--->BN_MP_2EXPT_C @@ -9333,6 +10088,443 @@ BN_MP_PRIME_MILLER_RABIN_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_L_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C | +--->BN_MP_DR_IS_MODULUS_C | +--->BN_MP_REDUCE_IS_2K_C | | +--->BN_MP_REDUCE_2K_C @@ -9708,349 +10900,6 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_EXCH_C -| +--->BN_S_MP_EXPTMOD_C -| | +--->BN_MP_COUNT_BITS_C -| | +--->BN_MP_REDUCE_SETUP_C -| | | +--->BN_MP_2EXPT_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MOD_C -| | | +--->BN_MP_DIV_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_MP_COPY_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_SET_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | +--->BN_MP_COPY_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_SQR_C -| | | +--->BN_MP_TOOM_SQR_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_SQR_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | +--->BN_FAST_S_MP_SQR_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_SQR_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_REDUCE_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | +--->BN_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SET_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MUL_C -| | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_KARATSUBA_MUL_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | +--->BN_MP_SET_C -| | | +--->BN_MP_ZERO_C -| | +--->BN_MP_EXCH_C +--->BN_MP_CMP_C | +--->BN_MP_CMP_MAG_C +--->BN_MP_SQRMOD_C diff --git a/changes.txt b/changes.txt index 0d1ec2e..eb96813 100644 --- a/changes.txt +++ b/changes.txt @@ -1,3 +1,15 @@ +February 12th, 2005 +v0.34 -- Fixed two more small errors in mp_prime_random_ex() + -- Fixed overflow in mp_mul_d() [Kevin Kenny] + -- Added mp_to_(un)signed_bin_n() functions which do bounds checking for ya [and report the size] + -- Added "large" diminished radix support. Speeds up things like DSA where the moduli is of the form 2^k - P for some P < 2^(k/2) or so + Actually is faster than Montgomery on my AMD64 (and probably much faster on a P4) + -- Updated the manual a bit + -- Ok so I haven't done the textbook work yet... My current freelance gig has landed me in France till the + end of Feb/05. Once I get back I'll have tons of free time and I plan to go to town on the book. + As of this release the API will freeze. At least until the book catches up with all the changes. I welcome + bug reports but new algorithms will have to wait. + December 23rd, 2004 v0.33 -- Fixed "small" variant for mp_div() which would munge with negative dividends... -- Fixed bug in mp_prime_random_ex() which would set the most significant byte to zero when diff --git a/demo/demo.c b/demo/demo.c index 62615cd..57604f9 100644 --- a/demo/demo.c +++ b/demo/demo.c @@ -9,15 +9,16 @@ #include "tommath.h" -void ndraw(mp_int *a, char *name) +void ndraw(mp_int * a, char *name) { char buf[16000]; + printf("%s: ", name); mp_toradix(a, buf, 10); printf("%s\n", buf); } -static void draw(mp_int *a) +static void draw(mp_int * a) { ndraw(a, ""); } @@ -39,18 +40,20 @@ int lbit(void) int myrng(unsigned char *dst, int len, void *dat) { int x; - for (x = 0; x < len; x++) dst[x] = rand() & 0xFF; + + for (x = 0; x < len; x++) + dst[x] = rand() & 0xFF; return len; } - char cmd[4096], buf[4096]; +char cmd[4096], buf[4096]; int main(void) { mp_int a, b, c, d, e, f; - unsigned long expt_n, add_n, sub_n, mul_n, div_n, sqr_n, mul2d_n, div2d_n, gcd_n, lcm_n, inv_n, - div2_n, mul2_n, add_d_n, sub_d_n, t; + unsigned long expt_n, add_n, sub_n, mul_n, div_n, sqr_n, mul2d_n, div2d_n, + gcd_n, lcm_n, inv_n, div2_n, mul2_n, add_d_n, sub_d_n, t; unsigned rr; int i, n, err, cnt, ix, old_kara_m, old_kara_s; @@ -65,108 +68,118 @@ int main(void) srand(time(NULL)); #if 0 - // test mp_get_int - printf("Testing: mp_get_int\n"); - for(i=0;i<1000;++i) { - t = ((unsigned long)rand()*rand()+1)&0xFFFFFFFF; - mp_set_int(&a,t); - if (t!=mp_get_int(&a)) { + // test mp_get_int + printf("Testing: mp_get_int\n"); + for (i = 0; i < 1000; ++i) { + t = ((unsigned long) rand() * rand() + 1) & 0xFFFFFFFF; + mp_set_int(&a, t); + if (t != mp_get_int(&a)) { + printf("mp_get_int() bad result!\n"); + return 1; + } + } + mp_set_int(&a, 0); + if (mp_get_int(&a) != 0) { printf("mp_get_int() bad result!\n"); return 1; - } - } - mp_set_int(&a,0); - if (mp_get_int(&a)!=0) - { printf("mp_get_int() bad result!\n"); - return 1; - } - mp_set_int(&a,0xffffffff); - if (mp_get_int(&a)!=0xffffffff) - { printf("mp_get_int() bad result!\n"); - return 1; - } + } + mp_set_int(&a, 0xffffffff); + if (mp_get_int(&a) != 0xffffffff) { + printf("mp_get_int() bad result!\n"); + return 1; + } + // test mp_sqrt + printf("Testing: mp_sqrt\n"); + for (i = 0; i < 1000; ++i) { + printf("%6d\r", i); + fflush(stdout); + n = (rand() & 15) + 1; + mp_rand(&a, n); + if (mp_sqrt(&a, &b) != MP_OKAY) { + printf("mp_sqrt() error!\n"); + return 1; + } + mp_n_root(&a, 2, &a); + if (mp_cmp_mag(&b, &a) != MP_EQ) { + printf("mp_sqrt() bad result!\n"); + return 1; + } + } - // test mp_sqrt - printf("Testing: mp_sqrt\n"); - for (i=0;i<1000;++i) { - printf("%6d\r", i); fflush(stdout); - n = (rand()&15)+1; - mp_rand(&a,n); - if (mp_sqrt(&a,&b) != MP_OKAY) - { printf("mp_sqrt() error!\n"); - return 1; - } - mp_n_root(&a,2,&a); - if (mp_cmp_mag(&b,&a) != MP_EQ) - { printf("mp_sqrt() bad result!\n"); - return 1; - } - } + printf("\nTesting: mp_is_square\n"); + for (i = 0; i < 1000; ++i) { + printf("%6d\r", i); + fflush(stdout); - printf("\nTesting: mp_is_square\n"); - for (i=0;i<1000;++i) { - printf("%6d\r", i); fflush(stdout); + /* test mp_is_square false negatives */ + n = (rand() & 7) + 1; + mp_rand(&a, n); + mp_sqr(&a, &a); + if (mp_is_square(&a, &n) != MP_OKAY) { + printf("fn:mp_is_square() error!\n"); + return 1; + } + if (n == 0) { + printf("fn:mp_is_square() bad result!\n"); + return 1; + } - /* test mp_is_square false negatives */ - n = (rand()&7)+1; - mp_rand(&a,n); - mp_sqr(&a,&a); - if (mp_is_square(&a,&n)!=MP_OKAY) { - printf("fn:mp_is_square() error!\n"); - return 1; - } - if (n==0) { - printf("fn:mp_is_square() bad result!\n"); - return 1; - } + /* test for false positives */ + mp_add_d(&a, 1, &a); + if (mp_is_square(&a, &n) != MP_OKAY) { + printf("fp:mp_is_square() error!\n"); + return 1; + } + if (n == 1) { + printf("fp:mp_is_square() bad result!\n"); + return 1; + } - /* test for false positives */ - mp_add_d(&a, 1, &a); - if (mp_is_square(&a,&n)!=MP_OKAY) { - printf("fp:mp_is_square() error!\n"); - return 1; - } - if (n==1) { - printf("fp:mp_is_square() bad result!\n"); - return 1; - } - - } - printf("\n\n"); + } + printf("\n\n"); /* test for size */ for (ix = 10; ix < 256; ix++) { - printf("Testing (not safe-prime): %9d bits \r", ix); fflush(stdout); - err = mp_prime_random_ex(&a, 8, ix, (rand()&1)?LTM_PRIME_2MSB_OFF:LTM_PRIME_2MSB_ON, myrng, NULL); - if (err != MP_OKAY) { - printf("failed with err code %d\n", err); - return EXIT_FAILURE; - } - if (mp_count_bits(&a) != ix) { - printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); - return EXIT_FAILURE; - } + printf("Testing (not safe-prime): %9d bits \r", ix); + fflush(stdout); + err = + mp_prime_random_ex(&a, 8, ix, + (rand() & 1) ? LTM_PRIME_2MSB_OFF : + LTM_PRIME_2MSB_ON, myrng, NULL); + if (err != MP_OKAY) { + printf("failed with err code %d\n", err); + return EXIT_FAILURE; + } + if (mp_count_bits(&a) != ix) { + printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); + return EXIT_FAILURE; + } } for (ix = 16; ix < 256; ix++) { - printf("Testing ( safe-prime): %9d bits \r", ix); fflush(stdout); - err = mp_prime_random_ex(&a, 8, ix, ((rand()&1)?LTM_PRIME_2MSB_OFF:LTM_PRIME_2MSB_ON)|LTM_PRIME_SAFE, myrng, NULL); - if (err != MP_OKAY) { - printf("failed with err code %d\n", err); - return EXIT_FAILURE; - } - if (mp_count_bits(&a) != ix) { - printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); - return EXIT_FAILURE; - } - /* let's see if it's really a safe prime */ - mp_sub_d(&a, 1, &a); - mp_div_2(&a, &a); - mp_prime_is_prime(&a, 8, &cnt); - if (cnt != MP_YES) { - printf("sub is not prime!\n"); - return EXIT_FAILURE; - } + printf("Testing ( safe-prime): %9d bits \r", ix); + fflush(stdout); + err = + mp_prime_random_ex(&a, 8, ix, + ((rand() & 1) ? LTM_PRIME_2MSB_OFF : + LTM_PRIME_2MSB_ON) | LTM_PRIME_SAFE, myrng, + NULL); + if (err != MP_OKAY) { + printf("failed with err code %d\n", err); + return EXIT_FAILURE; + } + if (mp_count_bits(&a) != ix) { + printf("Prime is %d not %d bits!!!\n", mp_count_bits(&a), ix); + return EXIT_FAILURE; + } + /* let's see if it's really a safe prime */ + mp_sub_d(&a, 1, &a); + mp_div_2(&a, &a); + mp_prime_is_prime(&a, 8, &cnt); + if (cnt != MP_YES) { + printf("sub is not prime!\n"); + return EXIT_FAILURE; + } } printf("\n\n"); @@ -194,51 +207,56 @@ int main(void) printf("testing mp_cnt_lsb...\n"); mp_set(&a, 1); for (ix = 0; ix < 1024; ix++) { - if (mp_cnt_lsb(&a) != ix) { - printf("Failed at %d, %d\n", ix, mp_cnt_lsb(&a)); - return 0; - } - mp_mul_2(&a, &a); + if (mp_cnt_lsb(&a) != ix) { + printf("Failed at %d, %d\n", ix, mp_cnt_lsb(&a)); + return 0; + } + mp_mul_2(&a, &a); } /* test mp_reduce_2k */ printf("Testing mp_reduce_2k...\n"); for (cnt = 3; cnt <= 128; ++cnt) { - mp_digit tmp; - mp_2expt(&a, cnt); - mp_sub_d(&a, 2, &a); /* a = 2**cnt - 2 */ + mp_digit tmp; + + mp_2expt(&a, cnt); + mp_sub_d(&a, 2, &a); /* a = 2**cnt - 2 */ - printf("\nTesting %4d bits", cnt); - printf("(%d)", mp_reduce_is_2k(&a)); - mp_reduce_2k_setup(&a, &tmp); - printf("(%d)", tmp); - for (ix = 0; ix < 1000; ix++) { - if (!(ix & 127)) {printf("."); fflush(stdout); } - mp_rand(&b, (cnt/DIGIT_BIT + 1) * 2); - mp_copy(&c, &b); - mp_mod(&c, &a, &c); - mp_reduce_2k(&b, &a, 1); - if (mp_cmp(&c, &b)) { - printf("FAILED\n"); - exit(0); - } - } - } + printf("\nTesting %4d bits", cnt); + printf("(%d)", mp_reduce_is_2k(&a)); + mp_reduce_2k_setup(&a, &tmp); + printf("(%d)", tmp); + for (ix = 0; ix < 1000; ix++) { + if (!(ix & 127)) { + printf("."); + fflush(stdout); + } + mp_rand(&b, (cnt / DIGIT_BIT + 1) * 2); + mp_copy(&c, &b); + mp_mod(&c, &a, &c); + mp_reduce_2k(&b, &a, 1); + if (mp_cmp(&c, &b)) { + printf("FAILED\n"); + exit(0); + } + } + } /* test mp_div_3 */ printf("Testing mp_div_3...\n"); mp_set(&d, 3); - for (cnt = 0; cnt < 10000; ) { + for (cnt = 0; cnt < 10000;) { mp_digit r1, r2; - if (!(++cnt & 127)) printf("%9d\r", cnt); + if (!(++cnt & 127)) + printf("%9d\r", cnt); mp_rand(&a, abs(rand()) % 128 + 1); mp_div(&a, &d, &b, &e); mp_div_3(&a, &c, &r2); if (mp_cmp(&b, &c) || mp_cmp_d(&e, r2)) { - printf("\n\nmp_div_3 => Failure\n"); + printf("\n\nmp_div_3 => Failure\n"); } } printf("\n\nPassed div_3 testing\n"); @@ -246,270 +264,438 @@ int main(void) /* test the DR reduction */ printf("testing mp_dr_reduce...\n"); for (cnt = 2; cnt < 32; cnt++) { - printf("%d digit modulus\n", cnt); - mp_grow(&a, cnt); - mp_zero(&a); - for (ix = 1; ix < cnt; ix++) { - a.dp[ix] = MP_MASK; - } - a.used = cnt; - a.dp[0] = 3; + printf("%d digit modulus\n", cnt); + mp_grow(&a, cnt); + mp_zero(&a); + for (ix = 1; ix < cnt; ix++) { + a.dp[ix] = MP_MASK; + } + a.used = cnt; + a.dp[0] = 3; - mp_rand(&b, cnt - 1); - mp_copy(&b, &c); + mp_rand(&b, cnt - 1); + mp_copy(&b, &c); rr = 0; do { - if (!(rr & 127)) { printf("%9lu\r", rr); fflush(stdout); } - mp_sqr(&b, &b); mp_add_d(&b, 1, &b); - mp_copy(&b, &c); + if (!(rr & 127)) { + printf("%9lu\r", rr); + fflush(stdout); + } + mp_sqr(&b, &b); + mp_add_d(&b, 1, &b); + mp_copy(&b, &c); - mp_mod(&b, &a, &b); - mp_dr_reduce(&c, &a, (((mp_digit)1)< - #endif - return __getReg (3116); - #else - #error need rdtsc function for this build - #endif - } +#elif defined _M_IX86 + __asm rdtsc +#elif defined _M_AMD64 + return __rdtsc(); +#elif defined _M_IA64 +#if defined __INTEL_COMPILER +#include +#endif + return __getReg(3116); +#else +#error need rdtsc function for this build +#endif +} #define DO(x) x; x; //#define DO4(x) DO2(x); DO2(x); @@ -77,7 +81,7 @@ static ulong64 TIMFUNC (void) int main(void) { ulong64 tt, gg, CLK_PER_SEC; - FILE *log, *logb, *logc; + FILE *log, *logb, *logc, *logd; mp_int a, b, c, d, e, f; int n, cnt, ix, old_kara_m, old_kara_s; unsigned rr; @@ -90,168 +94,191 @@ int main(void) mp_init(&f); srand(time(NULL)); - - /* temp. turn off TOOM */ - TOOM_MUL_CUTOFF = TOOM_SQR_CUTOFF = 100000; - CLK_PER_SEC = TIMFUNC(); - sleep(1); - CLK_PER_SEC = TIMFUNC() - CLK_PER_SEC; + /* temp. turn off TOOM */ + TOOM_MUL_CUTOFF = TOOM_SQR_CUTOFF = 100000; - printf("CLK_PER_SEC == %llu\n", CLK_PER_SEC); - - log = fopen("logs/add.log", "w"); - for (cnt = 8; cnt <= 128; cnt += 8) { - SLEEP; - mp_rand(&a, cnt); - mp_rand(&b, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_add(&a,&b,&c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100000); - printf("Adding\t\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); fflush(log); - } - fclose(log); + CLK_PER_SEC = TIMFUNC(); + sleep(1); + CLK_PER_SEC = TIMFUNC() - CLK_PER_SEC; - log = fopen("logs/sub.log", "w"); - for (cnt = 8; cnt <= 128; cnt += 8) { - SLEEP; - mp_rand(&a, cnt); - mp_rand(&b, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_sub(&a,&b,&c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100000); + printf("CLK_PER_SEC == %llu\n", CLK_PER_SEC); + goto exptmod; + log = fopen("logs/add.log", "w"); + for (cnt = 8; cnt <= 128; cnt += 8) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_add(&a, &b, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100000); + printf("Adding\t\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", cnt * DIGIT_BIT, tt); + fflush(log); + } + fclose(log); - printf("Subtracting\t\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); fflush(log); - } - fclose(log); + log = fopen("logs/sub.log", "w"); + for (cnt = 8; cnt <= 128; cnt += 8) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_sub(&a, &b, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100000); + + printf("Subtracting\t\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", cnt * DIGIT_BIT, tt); + fflush(log); + } + fclose(log); /* do mult/square twice, first without karatsuba and second with */ + multtest: old_kara_m = KARATSUBA_MUL_CUTOFF; old_kara_s = KARATSUBA_SQR_CUTOFF; - for (ix = 0; ix < 1; ix++) { - printf("With%s Karatsuba\n", (ix==0)?"out":""); + for (ix = 0; ix < 2; ix++) { + printf("With%s Karatsuba\n", (ix == 0) ? "out" : ""); - KARATSUBA_MUL_CUTOFF = (ix==0)?9999:old_kara_m; - KARATSUBA_SQR_CUTOFF = (ix==0)?9999:old_kara_s; + KARATSUBA_MUL_CUTOFF = (ix == 0) ? 9999 : old_kara_m; + KARATSUBA_SQR_CUTOFF = (ix == 0) ? 9999 : old_kara_s; - log = fopen((ix==0)?"logs/mult.log":"logs/mult_kara.log", "w"); - for (cnt = 4; cnt <= 288; cnt += 2) { - SLEEP; - mp_rand(&a, cnt); - mp_rand(&b, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_mul(&a, &b, &c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100); - printf("Multiplying\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); fflush(log); + log = fopen((ix == 0) ? "logs/mult.log" : "logs/mult_kara.log", "w"); + for (cnt = 4; cnt <= 10240 / DIGIT_BIT; cnt += 2) { + SLEEP; + mp_rand(&a, cnt); + mp_rand(&b, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_mul(&a, &b, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100); + printf("Multiplying\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); + fflush(log); } fclose(log); - log = fopen((ix==0)?"logs/sqr.log":"logs/sqr_kara.log", "w"); - for (cnt = 4; cnt <= 288; cnt += 2) { - SLEEP; - mp_rand(&a, cnt); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_sqr(&a, &b)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 100); - printf("Squaring\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); fflush(log); + log = fopen((ix == 0) ? "logs/sqr.log" : "logs/sqr_kara.log", "w"); + for (cnt = 4; cnt <= 10240 / DIGIT_BIT; cnt += 2) { + SLEEP; + mp_rand(&a, cnt); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_sqr(&a, &b)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 100); + printf("Squaring\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", mp_count_bits(&a), tt); + fflush(log); } fclose(log); } + exptmod: - { + { char *primes[] = { - /* 2K moduli mersenne primes */ - "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", - "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127", - "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087", - "1475979915214180235084898622737381736312066145333169775147771216478570297878078949377407337049389289382748507531496480477281264838760259191814463365330269540496961201113430156902396093989090226259326935025281409614983499388222831448598601834318536230923772641390209490231836446899608210795482963763094236630945410832793769905399982457186322944729636418890623372171723742105636440368218459649632948538696905872650486914434637457507280441823676813517852099348660847172579408422316678097670224011990280170474894487426924742108823536808485072502240519452587542875349976558572670229633962575212637477897785501552646522609988869914013540483809865681250419497686697771007", - "259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071", - "190797007524439073807468042969529173669356994749940177394741882673528979787005053706368049835514900244303495954950709725762186311224148828811920216904542206960744666169364221195289538436845390250168663932838805192055137154390912666527533007309292687539092257043362517857366624699975402375462954490293259233303137330643531556539739921926201438606439020075174723029056838272505051571967594608350063404495977660656269020823960825567012344189908927956646011998057988548630107637380993519826582389781888135705408653045219655801758081251164080554609057468028203308718724654081055323215860189611391296030471108443146745671967766308925858547271507311563765171008318248647110097614890313562856541784154881743146033909602737947385055355960331855614540900081456378659068370317267696980001187750995491090350108417050917991562167972281070161305972518044872048331306383715094854938415738549894606070722584737978176686422134354526989443028353644037187375385397838259511833166416134323695660367676897722287918773420968982326089026150031515424165462111337527431154890666327374921446276833564519776797633875503548665093914556482031482248883127023777039667707976559857333357013727342079099064400455741830654320379350833236245819348824064783585692924881021978332974949906122664421376034687815350484991", + /* 2K large moduli */ + "179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586239334100047359817950870678242457666208137217", + "32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638099733077152121140120031150424541696791951097529546801429027668869927491725169", + "1044388881413152506691752710716624382579964249047383780384233483283953907971557456848826811934997558340890106714439262837987573438185793607263236087851365277945956976543709998340361590134383718314428070011855946226376318839397712745672334684344586617496807908705803704071284048740118609114467977783598029006686938976881787785946905630190260940599579453432823469303026696443059025015972399867714215541693835559885291486318237914434496734087811872639496475100189041349008417061675093668333850551032972088269550769983616369411933015213796825837188091833656751221318492846368125550225998300412344784862595674492194617023806505913245610825731835380087608622102834270197698202313169017678006675195485079921636419370285375124784014907159135459982790513399611551794271106831134090584272884279791554849782954323534517065223269061394905987693002122963395687782878948440616007412945674919823050571642377154816321380631045902916136926708342856440730447899971901781465763473223850267253059899795996090799469201774624817718449867455659250178329070473119433165550807568221846571746373296884912819520317457002440926616910874148385078411929804522981857338977648103126085902995208257421855249796721729039744118165938433694823325696642096892124547425283", + /* 2K moduli mersenne primes */ + "6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", + "531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127", + "10407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087", + "1475979915214180235084898622737381736312066145333169775147771216478570297878078949377407337049389289382748507531496480477281264838760259191814463365330269540496961201113430156902396093989090226259326935025281409614983499388222831448598601834318536230923772641390209490231836446899608210795482963763094236630945410832793769905399982457186322944729636418890623372171723742105636440368218459649632948538696905872650486914434637457507280441823676813517852099348660847172579408422316678097670224011990280170474894487426924742108823536808485072502240519452587542875349976558572670229633962575212637477897785501552646522609988869914013540483809865681250419497686697771007", + "259117086013202627776246767922441530941818887553125427303974923161874019266586362086201209516800483406550695241733194177441689509238807017410377709597512042313066624082916353517952311186154862265604547691127595848775610568757931191017711408826252153849035830401185072116424747461823031471398340229288074545677907941037288235820705892351068433882986888616658650280927692080339605869308790500409503709875902119018371991620994002568935113136548829739112656797303241986517250116412703509705427773477972349821676443446668383119322540099648994051790241624056519054483690809616061625743042361721863339415852426431208737266591962061753535748892894599629195183082621860853400937932839420261866586142503251450773096274235376822938649407127700846077124211823080804139298087057504713825264571448379371125032081826126566649084251699453951887789613650248405739378594599444335231188280123660406262468609212150349937584782292237144339628858485938215738821232393687046160677362909315071", + "190797007524439073807468042969529173669356994749940177394741882673528979787005053706368049835514900244303495954950709725762186311224148828811920216904542206960744666169364221195289538436845390250168663932838805192055137154390912666527533007309292687539092257043362517857366624699975402375462954490293259233303137330643531556539739921926201438606439020075174723029056838272505051571967594608350063404495977660656269020823960825567012344189908927956646011998057988548630107637380993519826582389781888135705408653045219655801758081251164080554609057468028203308718724654081055323215860189611391296030471108443146745671967766308925858547271507311563765171008318248647110097614890313562856541784154881743146033909602737947385055355960331855614540900081456378659068370317267696980001187750995491090350108417050917991562167972281070161305972518044872048331306383715094854938415738549894606070722584737978176686422134354526989443028353644037187375385397838259511833166416134323695660367676897722287918773420968982326089026150031515424165462111337527431154890666327374921446276833564519776797633875503548665093914556482031482248883127023777039667707976559857333357013727342079099064400455741830654320379350833236245819348824064783585692924881021978332974949906122664421376034687815350484991", - /* DR moduli */ - "14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368612079", - "101745825697019260773923519755878567461315282017759829107608914364075275235254395622580447400994175578963163918967182013639660669771108475957692810857098847138903161308502419410142185759152435680068435915159402496058513611411688900243039", - "736335108039604595805923406147184530889923370574768772191969612422073040099331944991573923112581267542507986451953227192970402893063850485730703075899286013451337291468249027691733891486704001513279827771740183629161065194874727962517148100775228363421083691764065477590823919364012917984605619526140821797602431", - "38564998830736521417281865696453025806593491967131023221754800625044118265468851210705360385717536794615180260494208076605798671660719333199513807806252394423283413430106003596332513246682903994829528690198205120921557533726473585751382193953592127439965050261476810842071573684505878854588706623484573925925903505747545471088867712185004135201289273405614415899438276535626346098904241020877974002916168099951885406379295536200413493190419727789712076165162175783", - "542189391331696172661670440619180536749994166415993334151601745392193484590296600979602378676624808129613777993466242203025054573692562689251250471628358318743978285860720148446448885701001277560572526947619392551574490839286458454994488665744991822837769918095117129546414124448777033941223565831420390846864429504774477949153794689948747680362212954278693335653935890352619041936727463717926744868338358149568368643403037768649616778526013610493696186055899318268339432671541328195724261329606699831016666359440874843103020666106568222401047720269951530296879490444224546654729111504346660859907296364097126834834235287147", - "1487259134814709264092032648525971038895865645148901180585340454985524155135260217788758027400478312256339496385275012465661575576202252063145698732079880294664220579764848767704076761853197216563262660046602703973050798218246170835962005598561669706844469447435461092542265792444947706769615695252256130901271870341005768912974433684521436211263358097522726462083917939091760026658925757076733484173202927141441492573799914240222628795405623953109131594523623353044898339481494120112723445689647986475279242446083151413667587008191682564376412347964146113898565886683139407005941383669325997475076910488086663256335689181157957571445067490187939553165903773554290260531009121879044170766615232300936675369451260747671432073394867530820527479172464106442450727640226503746586340279816318821395210726268291535648506190714616083163403189943334431056876038286530365757187367147446004855912033137386225053275419626102417236133948503", - "1095121115716677802856811290392395128588168592409109494900178008967955253005183831872715423151551999734857184538199864469605657805519106717529655044054833197687459782636297255219742994736751541815269727940751860670268774903340296040006114013971309257028332849679096824800250742691718610670812374272414086863715763724622797509437062518082383056050144624962776302147890521249477060215148275163688301275847155316042279405557632639366066847442861422164832655874655824221577849928863023018366835675399949740429332468186340518172487073360822220449055340582568461568645259954873303616953776393853174845132081121976327462740354930744487429617202585015510744298530101547706821590188733515880733527449780963163909830077616357506845523215289297624086914545378511082534229620116563260168494523906566709418166011112754529766183554579321224940951177394088465596712620076240067370589036924024728375076210477267488679008016579588696191194060127319035195370137160936882402244399699172017835144537488486396906144217720028992863941288217185353914991583400421682751000603596655790990815525126154394344641336397793791497068253936771017031980867706707490224041075826337383538651825493679503771934836094655802776331664261631740148281763487765852746577808019633679", + /* DR moduli */ + "14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203368612079", + "101745825697019260773923519755878567461315282017759829107608914364075275235254395622580447400994175578963163918967182013639660669771108475957692810857098847138903161308502419410142185759152435680068435915159402496058513611411688900243039", + "736335108039604595805923406147184530889923370574768772191969612422073040099331944991573923112581267542507986451953227192970402893063850485730703075899286013451337291468249027691733891486704001513279827771740183629161065194874727962517148100775228363421083691764065477590823919364012917984605619526140821797602431", + "38564998830736521417281865696453025806593491967131023221754800625044118265468851210705360385717536794615180260494208076605798671660719333199513807806252394423283413430106003596332513246682903994829528690198205120921557533726473585751382193953592127439965050261476810842071573684505878854588706623484573925925903505747545471088867712185004135201289273405614415899438276535626346098904241020877974002916168099951885406379295536200413493190419727789712076165162175783", + "542189391331696172661670440619180536749994166415993334151601745392193484590296600979602378676624808129613777993466242203025054573692562689251250471628358318743978285860720148446448885701001277560572526947619392551574490839286458454994488665744991822837769918095117129546414124448777033941223565831420390846864429504774477949153794689948747680362212954278693335653935890352619041936727463717926744868338358149568368643403037768649616778526013610493696186055899318268339432671541328195724261329606699831016666359440874843103020666106568222401047720269951530296879490444224546654729111504346660859907296364097126834834235287147", + "1487259134814709264092032648525971038895865645148901180585340454985524155135260217788758027400478312256339496385275012465661575576202252063145698732079880294664220579764848767704076761853197216563262660046602703973050798218246170835962005598561669706844469447435461092542265792444947706769615695252256130901271870341005768912974433684521436211263358097522726462083917939091760026658925757076733484173202927141441492573799914240222628795405623953109131594523623353044898339481494120112723445689647986475279242446083151413667587008191682564376412347964146113898565886683139407005941383669325997475076910488086663256335689181157957571445067490187939553165903773554290260531009121879044170766615232300936675369451260747671432073394867530820527479172464106442450727640226503746586340279816318821395210726268291535648506190714616083163403189943334431056876038286530365757187367147446004855912033137386225053275419626102417236133948503", + "1095121115716677802856811290392395128588168592409109494900178008967955253005183831872715423151551999734857184538199864469605657805519106717529655044054833197687459782636297255219742994736751541815269727940751860670268774903340296040006114013971309257028332849679096824800250742691718610670812374272414086863715763724622797509437062518082383056050144624962776302147890521249477060215148275163688301275847155316042279405557632639366066847442861422164832655874655824221577849928863023018366835675399949740429332468186340518172487073360822220449055340582568461568645259954873303616953776393853174845132081121976327462740354930744487429617202585015510744298530101547706821590188733515880733527449780963163909830077616357506845523215289297624086914545378511082534229620116563260168494523906566709418166011112754529766183554579321224940951177394088465596712620076240067370589036924024728375076210477267488679008016579588696191194060127319035195370137160936882402244399699172017835144537488486396906144217720028992863941288217185353914991583400421682751000603596655790990815525126154394344641336397793791497068253936771017031980867706707490224041075826337383538651825493679503771934836094655802776331664261631740148281763487765852746577808019633679", - /* generic unrestricted moduli */ - "17933601194860113372237070562165128350027320072176844226673287945873370751245439587792371960615073855669274087805055507977323024886880985062002853331424203", - "2893527720709661239493896562339544088620375736490408468011883030469939904368086092336458298221245707898933583190713188177399401852627749210994595974791782790253946539043962213027074922559572312141181787434278708783207966459019479487", - "347743159439876626079252796797422223177535447388206607607181663903045907591201940478223621722118173270898487582987137708656414344685816179420855160986340457973820182883508387588163122354089264395604796675278966117567294812714812796820596564876450716066283126720010859041484786529056457896367683122960411136319", - "47266428956356393164697365098120418976400602706072312735924071745438532218237979333351774907308168340693326687317443721193266215155735814510792148768576498491199122744351399489453533553203833318691678263241941706256996197460424029012419012634671862283532342656309677173602509498417976091509154360039893165037637034737020327399910409885798185771003505320583967737293415979917317338985837385734747478364242020380416892056650841470869294527543597349250299539682430605173321029026555546832473048600327036845781970289288898317888427517364945316709081173840186150794397479045034008257793436817683392375274635794835245695887", - "436463808505957768574894870394349739623346440601945961161254440072143298152040105676491048248110146278752857839930515766167441407021501229924721335644557342265864606569000117714935185566842453630868849121480179691838399545644365571106757731317371758557990781880691336695584799313313687287468894148823761785582982549586183756806449017542622267874275103877481475534991201849912222670102069951687572917937634467778042874315463238062009202992087620963771759666448266532858079402669920025224220613419441069718482837399612644978839925207109870840278194042158748845445131729137117098529028886770063736487420613144045836803985635654192482395882603511950547826439092832800532152534003936926017612446606135655146445620623395788978726744728503058670046885876251527122350275750995227", - "11424167473351836398078306042624362277956429440521137061889702611766348760692206243140413411077394583180726863277012016602279290144126785129569474909173584789822341986742719230331946072730319555984484911716797058875905400999504305877245849119687509023232790273637466821052576859232452982061831009770786031785669030271542286603956118755585683996118896215213488875253101894663403069677745948305893849505434201763745232895780711972432011344857521691017896316861403206449421332243658855453435784006517202894181640562433575390821384210960117518650374602256601091379644034244332285065935413233557998331562749140202965844219336298970011513882564935538704289446968322281451907487362046511461221329799897350993370560697505809686438782036235372137015731304779072430260986460269894522159103008260495503005267165927542949439526272736586626709581721032189532726389643625590680105784844246152702670169304203783072275089194754889511973916207", - "1214855636816562637502584060163403830270705000634713483015101384881871978446801224798536155406895823305035467591632531067547890948695117172076954220727075688048751022421198712032848890056357845974246560748347918630050853933697792254955890439720297560693579400297062396904306270145886830719309296352765295712183040773146419022875165382778007040109957609739589875590885701126197906063620133954893216612678838507540777138437797705602453719559017633986486649523611975865005712371194067612263330335590526176087004421363598470302731349138773205901447704682181517904064735636518462452242791676541725292378925568296858010151852326316777511935037531017413910506921922450666933202278489024521263798482237150056835746454842662048692127173834433089016107854491097456725016327709663199738238442164843147132789153725513257167915555162094970853584447993125488607696008169807374736711297007473812256272245489405898470297178738029484459690836250560495461579533254473316340608217876781986188705928270735695752830825527963838355419762516246028680280988020401914551825487349990306976304093109384451438813251211051597392127491464898797406789175453067960072008590614886532333015881171367104445044718144312416815712216611576221546455968770801413440778423979", - NULL + /* generic unrestricted moduli */ + "17933601194860113372237070562165128350027320072176844226673287945873370751245439587792371960615073855669274087805055507977323024886880985062002853331424203", + "2893527720709661239493896562339544088620375736490408468011883030469939904368086092336458298221245707898933583190713188177399401852627749210994595974791782790253946539043962213027074922559572312141181787434278708783207966459019479487", + "347743159439876626079252796797422223177535447388206607607181663903045907591201940478223621722118173270898487582987137708656414344685816179420855160986340457973820182883508387588163122354089264395604796675278966117567294812714812796820596564876450716066283126720010859041484786529056457896367683122960411136319", + "47266428956356393164697365098120418976400602706072312735924071745438532218237979333351774907308168340693326687317443721193266215155735814510792148768576498491199122744351399489453533553203833318691678263241941706256996197460424029012419012634671862283532342656309677173602509498417976091509154360039893165037637034737020327399910409885798185771003505320583967737293415979917317338985837385734747478364242020380416892056650841470869294527543597349250299539682430605173321029026555546832473048600327036845781970289288898317888427517364945316709081173840186150794397479045034008257793436817683392375274635794835245695887", + "436463808505957768574894870394349739623346440601945961161254440072143298152040105676491048248110146278752857839930515766167441407021501229924721335644557342265864606569000117714935185566842453630868849121480179691838399545644365571106757731317371758557990781880691336695584799313313687287468894148823761785582982549586183756806449017542622267874275103877481475534991201849912222670102069951687572917937634467778042874315463238062009202992087620963771759666448266532858079402669920025224220613419441069718482837399612644978839925207109870840278194042158748845445131729137117098529028886770063736487420613144045836803985635654192482395882603511950547826439092832800532152534003936926017612446606135655146445620623395788978726744728503058670046885876251527122350275750995227", + "11424167473351836398078306042624362277956429440521137061889702611766348760692206243140413411077394583180726863277012016602279290144126785129569474909173584789822341986742719230331946072730319555984484911716797058875905400999504305877245849119687509023232790273637466821052576859232452982061831009770786031785669030271542286603956118755585683996118896215213488875253101894663403069677745948305893849505434201763745232895780711972432011344857521691017896316861403206449421332243658855453435784006517202894181640562433575390821384210960117518650374602256601091379644034244332285065935413233557998331562749140202965844219336298970011513882564935538704289446968322281451907487362046511461221329799897350993370560697505809686438782036235372137015731304779072430260986460269894522159103008260495503005267165927542949439526272736586626709581721032189532726389643625590680105784844246152702670169304203783072275089194754889511973916207", + "1214855636816562637502584060163403830270705000634713483015101384881871978446801224798536155406895823305035467591632531067547890948695117172076954220727075688048751022421198712032848890056357845974246560748347918630050853933697792254955890439720297560693579400297062396904306270145886830719309296352765295712183040773146419022875165382778007040109957609739589875590885701126197906063620133954893216612678838507540777138437797705602453719559017633986486649523611975865005712371194067612263330335590526176087004421363598470302731349138773205901447704682181517904064735636518462452242791676541725292378925568296858010151852326316777511935037531017413910506921922450666933202278489024521263798482237150056835746454842662048692127173834433089016107854491097456725016327709663199738238442164843147132789153725513257167915555162094970853584447993125488607696008169807374736711297007473812256272245489405898470297178738029484459690836250560495461579533254473316340608217876781986188705928270735695752830825527963838355419762516246028680280988020401914551825487349990306976304093109384451438813251211051597392127491464898797406789175453067960072008590614886532333015881171367104445044718144312416815712216611576221546455968770801413440778423979", + NULL }; - log = fopen("logs/expt.log", "w"); - logb = fopen("logs/expt_dr.log", "w"); - logc = fopen("logs/expt_2k.log", "w"); - for (n = 0; primes[n]; n++) { - SLEEP; - mp_read_radix(&a, primes[n], 10); - mp_zero(&b); - for (rr = 0; rr < (unsigned)mp_count_bits(&a); rr++) { - mp_mul_2(&b, &b); - b.dp[0] |= lbit(); - b.used += 1; + log = fopen("logs/expt.log", "w"); + logb = fopen("logs/expt_dr.log", "w"); + logc = fopen("logs/expt_2k.log", "w"); + logd = fopen("logs/expt_2kl.log", "w"); + for (n = 0; primes[n]; n++) { + SLEEP; + mp_read_radix(&a, primes[n], 10); + mp_zero(&b); + for (rr = 0; rr < (unsigned) mp_count_bits(&a); rr++) { + mp_mul_2(&b, &b); + b.dp[0] |= lbit(); + b.used += 1; + } + mp_sub_d(&a, 1, &c); + mp_mod(&b, &c, &b); + mp_set(&c, 3); + rr = 0; + tt = -1; + do { + gg = TIMFUNC(); + DO(mp_exptmod(&c, &b, &a, &d)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; + } while (++rr < 10); + mp_sub_d(&a, 1, &e); + mp_sub(&e, &b, &b); + mp_exptmod(&c, &b, &a, &e); /* c^(p-1-b) mod a */ + mp_mulmod(&e, &d, &a, &d); /* c^b * c^(p-1-b) == c^p-1 == 1 */ + if (mp_cmp_d(&d, 1)) { + printf("Different (%d)!!!\n", mp_count_bits(&a)); + draw(&d); + exit(0); + } + printf("Exponentiating\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(n < 4 ? logd : (n < 9) ? logc : (n < 16) ? logb : log, + "%d %9llu\n", mp_count_bits(&a), tt); } - mp_sub_d(&a, 1, &c); - mp_mod(&b, &c, &b); - mp_set(&c, 3); - rr = 0; - tt = -1; - do { - gg = TIMFUNC(); - DO(mp_exptmod(&c, &b, &a, &d)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; - } while (++rr < 10); - mp_sub_d(&a, 1, &e); - mp_sub(&e, &b, &b); - mp_exptmod(&c, &b, &a, &e); /* c^(p-1-b) mod a */ - mp_mulmod(&e, &d, &a, &d); /* c^b * c^(p-1-b) == c^p-1 == 1 */ - if (mp_cmp_d(&d, 1)) { - printf("Different (%d)!!!\n", mp_count_bits(&a)); - draw(&d); - exit(0); - } - printf("Exponentiating\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf((n < 6) ? logc : (n < 13) ? logb : log, "%d %9llu\n", mp_count_bits(&a), tt); - } } fclose(log); fclose(logb); fclose(logc); + fclose(logd); log = fopen("logs/invmod.log", "w"); for (cnt = 4; cnt <= 128; cnt += 4) { @@ -260,28 +287,29 @@ int main(void) mp_rand(&b, cnt); do { - mp_add_d(&b, 1, &b); - mp_gcd(&a, &b, &c); + mp_add_d(&b, 1, &b); + mp_gcd(&a, &b, &c); } while (mp_cmp_d(&c, 1) != MP_EQ); - rr = 0; - tt = -1; + rr = 0; + tt = -1; do { - gg = TIMFUNC(); - DO(mp_invmod(&b, &a, &c)); - gg = (TIMFUNC() - gg)>>1; - if (tt > gg) tt = gg; + gg = TIMFUNC(); + DO(mp_invmod(&b, &a, &c)); + gg = (TIMFUNC() - gg) >> 1; + if (tt > gg) + tt = gg; } while (++rr < 1000); mp_mulmod(&b, &c, &a, &d); if (mp_cmp_d(&d, 1) != MP_EQ) { - printf("Failed to invert\n"); - return 0; + printf("Failed to invert\n"); + return 0; } - printf("Inverting mod\t%4d-bit => %9llu/sec, %9llu cycles\n", mp_count_bits(&a), CLK_PER_SEC/tt, tt); - fprintf(log, "%d %9llu\n", cnt*DIGIT_BIT, tt); + printf("Inverting mod\t%4d-bit => %9llu/sec, %9llu cycles\n", + mp_count_bits(&a), CLK_PER_SEC / tt, tt); + fprintf(log, "%d %9llu\n", cnt * DIGIT_BIT, tt); } fclose(log); return 0; } - diff --git a/dep.pl b/dep.pl index 22266e3..c39e27e 100644 --- a/dep.pl +++ b/dep.pl @@ -13,6 +13,8 @@ print CLASS "#if !(defined(LTM1) && defined(LTM2) && defined(LTM3))\n#if defined foreach my $filename (glob "bn*.c") { my $define = $filename; +print "Processing $filename\n"; + # convert filename to upper case so we can use it as a define $define =~ tr/[a-z]/[A-Z]/; $define =~ tr/\./_/; diff --git a/etc/tune.c b/etc/tune.c index 14aace2..d054d10 100644 --- a/etc/tune.c +++ b/etc/tune.c @@ -10,13 +10,44 @@ */ #define TIMES (1UL<<14UL) +/* RDTSC from Scott Duplichan */ +static ulong64 TIMFUNC (void) + { + #if defined __GNUC__ + #if defined(__i386__) || defined(__x86_64__) + unsigned long long a; + __asm__ __volatile__ ("rdtsc\nmovl %%eax,%0\nmovl %%edx,4+%0\n"::"m"(a):"%eax","%edx"); + return a; + #else /* gcc-IA64 version */ + unsigned long result; + __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); + while (__builtin_expect ((int) result == -1, 0)) + __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); + return result; + #endif + + // Microsoft and Intel Windows compilers + #elif defined _M_IX86 + __asm rdtsc + #elif defined _M_AMD64 + return __rdtsc (); + #elif defined _M_IA64 + #if defined __INTEL_COMPILER + #include + #endif + return __getReg (3116); + #else + #error need rdtsc function for this build + #endif + } + #ifndef X86_TIMER /* generic ISO C timer */ ulong64 LBL_T; -void t_start(void) { LBL_T = clock(); } -ulong64 t_read(void) { return clock() - LBL_T; } +void t_start(void) { LBL_T = TIMFUNC(); } +ulong64 t_read(void) { return TIMFUNC() - LBL_T; } #else extern void t_start(void); diff --git a/logs/add.log b/logs/add.log index fa11039..43503ac 100644 --- a/logs/add.log +++ b/logs/add.log @@ -1,10 +1,10 @@ -480 88 -960 113 -1440 138 -1920 163 -2400 202 -2880 226 -3360 251 +480 87 +960 111 +1440 135 +1920 159 +2400 200 +2880 224 +3360 248 3840 272 4320 296 4800 320 diff --git a/logs/expt.log b/logs/expt.log index e65e927..920ba55 100644 --- a/logs/expt.log +++ b/logs/expt.log @@ -1,7 +1,7 @@ -513 1499509 -769 3682671 -1025 8098887 -2049 49332743 -2561 89647783 -3073 149440713 -4097 326135364 +513 1489160 +769 3688476 +1025 8162061 +2049 49260015 +2561 89579052 +3073 148797060 +4097 324449263 diff --git a/logs/expt_2k.log b/logs/expt_2k.log index d106280..56b50db 100644 --- a/logs/expt_2k.log +++ b/logs/expt_2k.log @@ -1,6 +1,5 @@ -521 1423346 -607 1841305 -1279 8375656 -2203 34104708 -3217 83830729 -4253 167916804 +607 2272809 +1279 9557382 +2203 36250309 +3217 87666486 +4253 174168369 diff --git a/logs/expt_2kl.log b/logs/expt_2kl.log new file mode 100644 index 0000000..b2eb8c2 --- /dev/null +++ b/logs/expt_2kl.log @@ -0,0 +1,4 @@ +1024 6954080 +2048 35993987 +4096 176068521 +521 1683720 diff --git a/logs/expt_dr.log b/logs/expt_dr.log index 6cfc874..eb93fc9 100644 --- a/logs/expt_dr.log +++ b/logs/expt_dr.log @@ -1,7 +1,7 @@ -532 1803110 -784 3607375 -1036 6089790 -1540 14739797 -2072 33251589 -3080 82794331 -4116 165212734 +532 1989592 +784 3898697 +1036 6519700 +1540 15676650 +2072 33128187 +3080 82963362 +4116 168358337 diff --git a/logs/mult.log b/logs/mult.log index 864de46..33563fc 100644 --- a/logs/mult.log +++ b/logs/mult.log @@ -1,143 +1,84 @@ -271 580 -390 861 -511 1177 -630 1598 -749 2115 -871 2670 -991 3276 -1111 3987 -1231 4722 -1351 5474 -1471 6281 -1589 7126 -1710 8114 -1831 8988 -1946 10038 -2071 10995 -2188 12286 -2310 13152 -2430 14480 -2549 15521 -2671 17171 -2790 18081 -2911 19754 -3031 20809 -3150 22849 -3269 23757 -3391 25772 -3508 26832 -3631 29304 -3750 30149 -3865 32581 -3988 33644 -4111 36565 -4231 37309 -4351 40152 -4471 41188 -4590 44658 -4710 45256 -4827 48538 -4951 49490 -5070 53472 -5190 53902 -5308 57619 -5431 58509 -5550 63044 -5664 63333 -5791 67542 -5911 68279 -6028 73477 -6150 73475 -6271 78189 -6390 78842 -6510 84691 -6631 84444 -6751 89721 -6871 90186 -6991 96665 -7111 96119 -7231 101937 -7350 102212 -7471 109439 -7591 108491 -7709 114965 -7829 115025 -7951 123002 -8071 121630 -8190 128725 -8311 128536 -8430 137298 -8550 135568 -8671 143265 -8791 142793 -8911 152432 -9030 150202 -9151 158616 -9271 157848 -9391 168374 -9511 165651 -9627 174775 -9750 173375 -9871 185067 -9985 181845 -10111 191708 -10229 190239 -10351 202585 -10467 198704 -10591 209193 -10711 207322 -10831 220842 -10950 215882 -11071 227761 -11191 225501 -11311 239669 -11430 234809 -11550 243511 -11671 255947 -11791 255243 -11906 267828 -12029 263437 -12149 276571 -12270 275579 -12390 288963 -12510 284001 -12631 298196 -12751 297018 -12869 310848 -12990 305369 -13111 319086 -13230 318940 -13349 333685 -13471 327495 -13588 343678 -13711 341817 -13831 357181 -13948 350440 -14071 367526 -14189 365330 -14311 381551 -14429 374149 -14549 392203 -14670 389764 -14791 406761 -14910 398652 -15026 417718 -15150 414733 -15269 432759 -15390 1037071 -15511 1053454 -15631 1069198 -15748 1086164 -15871 1112820 -15991 1129676 -16111 1145924 -16230 1163016 -16345 1179911 -16471 1197048 -16586 1214352 -16711 1232095 -16829 1249338 -16947 1266987 -17071 1284181 -17188 1302521 -17311 1320539 +271 555 +390 855 +508 1161 +631 1605 +749 2117 +871 2687 +991 3329 +1108 4084 +1231 4786 +1351 5624 +1470 6392 +1586 7364 +1710 8218 +1830 9255 +1951 10217 +2067 11461 +2191 12463 +2308 13677 +2430 14800 +2551 16232 +2671 17460 +2791 18899 +2902 20247 +3028 21902 +3151 23240 +3267 24927 +3391 26441 +3511 28277 +3631 29838 +3749 31751 +3869 33673 +3989 35431 +4111 37518 +4231 39426 +4349 41504 +4471 43567 +4591 45786 +4711 47876 +4831 50299 +4951 52427 +5071 54785 +5189 57241 +5307 59730 +5431 62194 +5551 64761 +5670 67322 +5789 70073 +5907 72663 +6030 75437 +6151 78242 +6268 81202 +6389 83948 +6509 86985 +6631 89903 +6747 93184 +6869 96044 +6991 99286 +7109 102395 +7229 105917 +7351 108940 +7470 112490 +7589 115702 +7711 119508 +7831 122632 +7951 126410 +8071 129808 +8190 133895 +8311 137146 +8431 141218 +8549 144732 +8667 149131 +8790 152462 +8911 156754 +9030 160479 +9149 165138 +9271 168601 +9391 173185 +9511 176988 +9627 181976 +9751 185539 +9870 190388 +9991 194335 +10110 199605 +10228 203298 diff --git a/logs/mult_kara.log b/logs/mult_kara.log index 086feaf..7136c79 100644 --- a/logs/mult_kara.log +++ b/logs/mult_kara.log @@ -1,33 +1,84 @@ -924 16686 -1146 25334 -1371 35304 -1591 47122 -1820 61500 -2044 75254 -2266 91732 -2492 111656 -2716 129428 -2937 147508 -3164 167758 -3388 188248 -3612 210826 -3836 233814 -4059 256898 -4284 280210 -4508 310372 -4731 333902 -4955 376502 -5179 402854 -5404 432004 -5626 459010 -5849 491868 -6076 520550 -6300 547400 -6524 575968 -6747 608482 -6971 642850 -7196 673670 -7419 710680 -7644 743942 -7868 780394 -8092 817342 +271 560 +391 870 +511 1159 +631 1605 +750 2111 +871 2737 +991 3361 +1111 4054 +1231 4778 +1351 5600 +1471 6404 +1591 7323 +1710 8255 +1831 9239 +1948 10257 +2070 11397 +2190 12531 +2308 13665 +2429 14870 +2550 16175 +2671 17539 +2787 18879 +2911 20350 +3031 21807 +3150 23415 +3270 24897 +3388 26567 +3511 28205 +3627 30076 +3751 31744 +3869 33657 +3991 35425 +4111 37522 +4229 39363 +4351 41503 +4470 43491 +4590 45827 +4711 47795 +4828 50166 +4951 52318 +5070 54911 +5191 57036 +5308 58237 +5431 60248 +5551 62678 +5671 64786 +5791 67294 +5908 69343 +6031 71607 +6151 74166 +6271 76590 +6391 78734 +6511 81175 +6631 83742 +6750 86403 +6868 88873 +6990 91150 +7110 94211 +7228 96922 +7351 99445 +7469 102216 +7589 104968 +7711 108113 +7827 110758 +7950 113714 +8071 116511 +8186 119643 +8310 122679 +8425 125581 +8551 128715 +8669 131778 +8788 135116 +8910 138138 +9031 141628 +9148 144754 +9268 148367 +9391 151551 +9511 155033 +9631 158652 +9751 162125 +9871 165248 +9988 168627 +10111 172427 +10231 176412 diff --git a/logs/sqr.log b/logs/sqr.log index 0898342..cd29fc5 100644 --- a/logs/sqr.log +++ b/logs/sqr.log @@ -1,143 +1,84 @@ -271 552 -389 883 -510 1191 -629 1572 -750 1996 -863 2428 -991 2891 -1108 3539 -1231 4182 -1351 4980 -1471 5771 -1590 6551 -1711 7313 -1830 8240 -1951 9184 -2070 10087 -2191 11140 -2311 12111 -2431 13219 -2550 14247 -2669 15353 -2791 16446 -2911 17692 -3029 18848 -3151 20028 -3268 21282 -3391 22696 -3511 23971 -3631 25303 -3751 26675 -3871 28245 -3990 29736 -4111 31124 -4229 32714 -4347 34397 -4471 35877 -4587 37269 -4710 39011 -4831 40884 -4950 42501 -5070 44005 -5191 46026 -5310 48168 -5431 49801 -5551 51385 -5671 53604 -5787 55942 -5910 57757 -6031 59391 -6151 61754 -6271 64234 -6390 66110 -6511 67845 -6627 70474 -6751 73113 -6871 75064 -6990 76940 -7111 79681 -7230 82548 -7351 84597 -7471 86507 -7591 89497 -7711 225216 -7831 232192 -7951 239583 -8071 247302 -8191 255497 -8308 261587 -8431 271490 -8550 279492 -8671 286927 -8790 294680 -8910 302974 -9030 311300 -9150 318635 -9271 326740 -9390 335304 -9511 344297 -9630 352056 -9748 358652 -9870 369723 -9991 379119 -10111 386982 -10231 396075 -10349 404396 -10470 415375 -10590 424146 -10711 433390 -10829 442662 -10950 453238 -11071 462178 -11186 469811 -11311 482529 -11431 493214 -11550 503210 -11671 513486 -11791 524244 -11911 535277 -12031 544872 -12151 555695 -12271 566893 -12391 578385 -12510 588658 -12628 596914 -12751 611324 -12871 623437 -12991 633907 -13110 645605 -13231 657684 -13351 670037 -13471 680939 -13591 693047 -13710 705363 -13829 718178 -13949 727930 -14069 739641 -14190 754817 -14310 768192 -14431 779875 -14551 792655 -14667 802847 -14791 819806 -14911 831684 -15031 844936 -15151 858813 -15270 873037 -15387 882123 -15510 899117 -15631 913465 -15750 927989 -15870 940790 -15991 954948 -16110 969483 -16231 984544 -16350 997837 -16470 1012445 -16590 1027834 -16710 1043032 -16831 1056394 -16951 1071408 -17069 1097263 -17191 1113364 -17306 1123650 +265 562 +389 882 +509 1207 +631 1572 +750 1990 +859 2433 +991 2894 +1109 3555 +1230 4228 +1350 5018 +1471 5805 +1591 6579 +1709 7415 +1829 8329 +1949 9225 +2071 10139 +2188 11239 +2309 12178 +2431 13212 +2551 14294 +2671 15551 +2791 16512 +2911 17718 +3030 18876 +3150 20259 +3270 21374 +3391 22650 +3511 23948 +3631 25493 +3750 26756 +3870 28225 +3989 29705 +4110 31409 +4230 32834 +4351 34327 +4471 35818 +4591 37636 +4711 39228 +4830 40868 +4949 42393 +5070 44541 +5191 46269 +5310 48162 +5429 49728 +5548 51985 +5671 53948 +5791 55885 +5910 57584 +6031 60082 +6150 62239 +6270 64309 +6390 66014 +6511 68766 +6631 71012 +6750 73172 +6871 74952 +6991 77909 +7111 80371 +7231 82666 +7351 84531 +7469 87698 +7589 90318 +7711 225384 +7830 232428 +7950 240009 +8070 246522 +8190 253662 +8310 260961 +8431 269253 +8549 275743 +8671 283769 +8789 290811 +8911 300034 +9030 306873 +9149 315085 +9270 323944 +9390 332390 +9508 337519 +9631 348986 +9749 356904 +9871 367013 +9989 373831 +10108 381033 +10230 393475 diff --git a/logs/sqr_kara.log b/logs/sqr_kara.log index cafe458..06355a7 100644 --- a/logs/sqr_kara.log +++ b/logs/sqr_kara.log @@ -1,33 +1,84 @@ -922 11272 -1148 16004 -1370 21958 -1596 28684 -1817 37832 -2044 46386 -2262 56218 -2492 66388 -2716 77478 -2940 89380 -3163 103680 -3385 116274 -3612 135334 -3836 151332 -4057 164938 -4284 183178 -4508 198864 -4731 215222 -4954 231986 -5180 251660 -5404 269414 -5626 288454 -5850 307806 -6076 329458 -6299 347726 -6523 369864 -6748 387832 -6971 413010 -7194 453310 -7415 476936 -7643 497118 -7867 521394 -8091 540224 +271 560 +388 878 +511 1179 +629 1625 +751 1988 +871 2423 +989 2896 +1111 3561 +1231 4209 +1350 5015 +1470 5804 +1591 6556 +1709 7420 +1831 8263 +1951 9173 +2070 10153 +2191 11229 +2310 12167 +2431 13211 +2550 14309 +2671 15524 +2788 16525 +2910 17712 +3028 18822 +3148 20220 +3271 21343 +3391 22652 +3511 23944 +3630 25485 +3750 26778 +3868 28201 +3990 29653 +4111 31393 +4225 32841 +4350 34328 +4471 35786 +4590 37652 +4711 39245 +4830 40876 +4951 42433 +5068 44547 +5191 46321 +5311 48140 +5430 49727 +5550 52034 +5671 53954 +5791 55921 +5908 57597 +6031 60084 +6148 62226 +6270 64295 +6390 66045 +6511 68779 +6629 71003 +6751 73169 +6871 74992 +6991 77895 +7110 80376 +7231 82628 +7351 84468 +7470 87664 +7591 90284 +7711 91352 +7828 93995 +7950 96276 +8071 98691 +8190 101256 +8308 103631 +8431 105222 +8550 108343 +8671 110281 +8787 112764 +8911 115397 +9031 117690 +9151 120266 +9271 122715 +9391 124624 +9510 127937 +9630 130313 +9750 132914 +9871 136129 +9991 138517 +10108 141525 +10231 144225 diff --git a/logs/sub.log b/logs/sub.log index a42d91e..9f84fa2 100644 --- a/logs/sub.log +++ b/logs/sub.log @@ -1,16 +1,16 @@ -480 87 -960 114 -1440 139 -1920 159 -2400 204 -2880 228 -3360 250 -3840 273 -4320 300 +480 94 +960 116 +1440 140 +1920 164 +2400 205 +2880 229 +3360 253 +3840 277 +4320 299 4800 321 -5280 348 -5760 370 -6240 393 -6720 420 -7200 444 -7680 466 +5280 345 +5760 371 +6240 395 +6720 419 +7200 441 +7680 465 diff --git a/makefile b/makefile index 164a0ab..ad8a71a 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ #Tom St Denis #version of library -VERSION=0.33 +VERSION=0.34 CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare @@ -57,11 +57,13 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o libtommath.a: $(OBJECTS) $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) diff --git a/makefile.bcc b/makefile.bcc index 775e9ff..647c69a 100644 --- a/makefile.bcc +++ b/makefile.bcc @@ -27,11 +27,13 @@ bn_mp_prime_is_prime.obj bn_mp_prime_next_prime.obj bn_mp_dr_reduce.obj \ bn_mp_dr_is_modulus.obj bn_mp_dr_setup.obj bn_mp_reduce_setup.obj \ bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_div_3.obj bn_s_mp_exptmod.obj \ bn_mp_reduce_2k.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_reduce_2k_l.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_2k_setup_l.obj \ bn_mp_radix_smap.obj bn_mp_read_radix.obj bn_mp_toradix.obj bn_mp_radix_size.obj \ bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_cnt_lsb.obj bn_error.obj \ bn_mp_init_multi.obj bn_mp_clear_multi.obj bn_mp_exteuclid.obj bn_mp_toradix_n.obj \ bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ -bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj +bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj \ +bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin_n.obj TARGET = libtommath.lib diff --git a/makefile.cygwin_dll b/makefile.cygwin_dll index c90e5d9..85b10c7 100644 --- a/makefile.cygwin_dll +++ b/makefile.cygwin_dll @@ -32,11 +32,13 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o # make a Windows DLL via Cygwin windll: $(OBJECTS) diff --git a/makefile.icc b/makefile.icc index 3775b20..e764253 100644 --- a/makefile.icc +++ b/makefile.icc @@ -59,11 +59,13 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o libtommath.a: $(OBJECTS) $(AR) $(ARFLAGS) libtommath.a $(OBJECTS) diff --git a/makefile.msvc b/makefile.msvc index cf59943..dbbf9f3 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -26,11 +26,13 @@ bn_mp_prime_is_prime.obj bn_mp_prime_next_prime.obj bn_mp_dr_reduce.obj \ bn_mp_dr_is_modulus.obj bn_mp_dr_setup.obj bn_mp_reduce_setup.obj \ bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_div_3.obj bn_s_mp_exptmod.obj \ bn_mp_reduce_2k.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_reduce_2k_l.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_2k_setup_l.obj \ bn_mp_radix_smap.obj bn_mp_read_radix.obj bn_mp_toradix.obj bn_mp_radix_size.obj \ bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_cnt_lsb.obj bn_error.obj \ bn_mp_init_multi.obj bn_mp_clear_multi.obj bn_mp_exteuclid.obj bn_mp_toradix_n.obj \ bn_mp_prime_random_ex.obj bn_mp_get_int.obj bn_mp_sqrt.obj bn_mp_is_square.obj \ -bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj +bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_invmod_slow.obj bn_mp_prime_rabin_miller_trials.obj \ +bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin_n.obj library: $(OBJECTS) lib /out:tommath.lib $(OBJECTS) diff --git a/makefile.shared b/makefile.shared index 86a3786..23aa33d 100644 --- a/makefile.shared +++ b/makefile.shared @@ -1,7 +1,7 @@ #Makefile for GCC # #Tom St Denis -VERSION=0:33 +VERSION=0:34 CC = libtool --mode=compile gcc CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare @@ -53,11 +53,14 @@ bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ -bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o +bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ +bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o + libtommath.la: $(OBJECTS) libtool --mode=link gcc *.lo -o libtommath.la -rpath $(LIBPATH) -version-info $(VERSION) diff --git a/poster.pdf b/poster.pdf index e0b4f848b5b9abc6be757142e05359ea1ab5251c..7354b4f230a8d5047ec5f22bd6cefc440fb7937d 100644 GIT binary patch delta 16267 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 z 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 @@ -504,8 +501,7 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) * * Based on Algorithm 14.12 on pp.595 of HAC. */ -int -fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) { int olduse, res, pa, ix, iz; mp_digit W[MP_WARRAY]; @@ -552,7 +548,7 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* store final carry */ - W[ix] = _W; + W[ix] = _W & MP_MASK; /* setup dest */ olduse = c->used; @@ -683,7 +679,7 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) } /* store it */ - W[ix] = _W; + W[ix] = _W & MP_MASK; /* make next carry */ W1 = _W >> ((mp_word)DIGIT_BIT); @@ -2467,21 +2463,29 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif } +/* modified diminished radix reduction */ +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) + if (mp_reduce_is_2k_l(P) == MP_YES) { + return s_mp_exptmod(G, X, P, Y, 1); + } +#endif + #ifdef BN_MP_DR_IS_MODULUS_C /* is it a DR modulus? */ dr = mp_dr_is_modulus(P); #else + /* default to no */ dr = 0; #endif #ifdef BN_MP_REDUCE_IS_2K_C - /* if not, is it a uDR modulus? */ + /* if not, is it a unrestricted DR modulus? */ if (dr == 0) { dr = mp_reduce_is_2k(P) << 1; } #endif - /* if the modulus is odd or dr != 0 use the fast method */ + /* if the modulus is odd or dr != 0 use the montgomery method */ #ifdef BN_MP_EXPTMOD_FAST_C if (mp_isodd (P) == 1 || dr != 0) { return mp_exptmod_fast (G, X, P, Y, dr); @@ -2489,7 +2493,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #endif #ifdef BN_S_MP_EXPTMOD_C /* otherwise use the generic Barrett reduction technique */ - return s_mp_exptmod (G, X, P, Y); + return s_mp_exptmod (G, X, P, Y, 0); #else /* no exptmod for evens */ return MP_VAL; @@ -2535,8 +2539,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) #define TAB_SIZE 256 #endif -int -mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) +int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res; mp_digit buf, mp; @@ -4989,8 +4992,9 @@ mp_mul_d (mp_int * a, mp_digit b, mp_int * c) u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); } - /* store final carry [if any] */ + /* store final carry [if any] and increment ix offset */ *tmpc++ = u; + ++ix; /* now zero digits above the top */ while (ix++ < olduse) { @@ -5847,7 +5851,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback /* calc the maskOR_msb */ maskOR_msb = 0; - maskOR_msb_offset = (size - 2) >> 3; + maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; if (flags & LTM_PRIME_2MSB_ON) { maskOR_msb |= 1 << ((size - 2) & 7); } else if (flags & LTM_PRIME_2MSB_OFF) { @@ -5855,7 +5859,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback } /* get the maskOR_lsb */ - maskOR_lsb = 0; + maskOR_lsb = 1; if (flags & LTM_PRIME_BBS) { maskOR_lsb |= 3; } @@ -6080,7 +6084,7 @@ mp_rand (mp_int * a, int digits) */ /* read a string [ASCII] in a given radix */ -int mp_read_radix (mp_int * a, char *str, int radix) +int mp_read_radix (mp_int * a, const char *str, int radix) { int y, res, neg; char ch; @@ -6263,8 +6267,7 @@ mp_read_unsigned_bin (mp_int * a, unsigned char *b, int c) * precomputed via mp_reduce_setup. * From HAC pp.604 Algorithm 14.42 */ -int -mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) { mp_int q; int res, um = m->used; @@ -6361,8 +6364,7 @@ CLEANUP: */ /* reduces a modulo n where n is of the form 2**p - d */ -int -mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) { mp_int q; int p, res; @@ -6404,6 +6406,68 @@ ERR: /* End: bn_mp_reduce_2k.c */ +/* Start: bn_mp_reduce_2k_l.c */ +#include +#ifdef BN_MP_REDUCE_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* reduces a modulo n where n is of the form 2**p - d + This differs from reduce_2k since "d" can be larger + than a single digit. +*/ +int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto ERR; + } + + /* q = q * d */ + if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { + goto ERR; + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + s_mp_sub(a, n, a); + goto top; + } + +ERR: + mp_clear(&q); + return res; +} + +#endif + +/* End: bn_mp_reduce_2k_l.c */ + /* Start: bn_mp_reduce_2k_setup.c */ #include #ifdef BN_MP_REDUCE_2K_SETUP_C @@ -6423,8 +6487,7 @@ ERR: */ /* determines the setup value */ -int -mp_reduce_2k_setup(mp_int *a, mp_digit *d) +int mp_reduce_2k_setup(mp_int *a, mp_digit *d) { int res, p; mp_int tmp; @@ -6452,6 +6515,50 @@ mp_reduce_2k_setup(mp_int *a, mp_digit *d) /* End: bn_mp_reduce_2k_setup.c */ +/* Start: bn_mp_reduce_2k_setup_l.c */ +#include +#ifdef BN_MP_REDUCE_2K_SETUP_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines the setup value */ +int mp_reduce_2k_setup_l(mp_int *a, mp_int *d) +{ + int res; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) { + goto ERR; + } + + if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) { + goto ERR; + } + +ERR: + mp_clear(&tmp); + return res; +} +#endif + +/* End: bn_mp_reduce_2k_setup_l.c */ + /* Start: bn_mp_reduce_is_2k.c */ #include #ifdef BN_MP_REDUCE_IS_2K_C @@ -6477,9 +6584,9 @@ int mp_reduce_is_2k(mp_int *a) mp_digit iz; if (a->used == 0) { - return 0; + return MP_NO; } else if (a->used == 1) { - return 1; + return MP_YES; } else if (a->used > 1) { iy = mp_count_bits(a); iz = 1; @@ -6488,7 +6595,7 @@ int mp_reduce_is_2k(mp_int *a) /* Test every bit from the second digit up, must be 1 */ for (ix = DIGIT_BIT; ix < iy; ix++) { if ((a->dp[iw] & iz) == 0) { - return 0; + return MP_NO; } iz <<= 1; if (iz > (mp_digit)MP_MASK) { @@ -6497,13 +6604,57 @@ int mp_reduce_is_2k(mp_int *a) } } } - return 1; + return MP_YES; } #endif /* End: bn_mp_reduce_is_2k.c */ +/* Start: bn_mp_reduce_is_2k_l.c */ +#include +#ifdef BN_MP_REDUCE_IS_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if reduce_2k_l can be used */ +int mp_reduce_is_2k_l(mp_int *a) +{ + int ix, iy; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + /* if more than half of the digits are -1 we're sold */ + for (iy = ix = 0; ix < a->used; ix++) { + if (a->dp[ix] == MP_MASK) { + ++iy; + } + } + return (iy >= (a->used/2)) ? MP_YES : MP_NO; + + } + return MP_NO; +} + +#endif + +/* End: bn_mp_reduce_is_2k_l.c */ + /* Start: bn_mp_reduce_setup.c */ #include #ifdef BN_MP_REDUCE_SETUP_C @@ -7138,8 +7289,7 @@ mp_submod (mp_int * a, mp_int * b, mp_int * c, mp_int * d) */ /* store in signed [big endian] format */ -int -mp_to_signed_bin (mp_int * a, unsigned char *b) +int mp_to_signed_bin (mp_int * a, unsigned char *b) { int res; @@ -7153,6 +7303,37 @@ mp_to_signed_bin (mp_int * a, unsigned char *b) /* End: bn_mp_to_signed_bin.c */ +/* Start: bn_mp_to_signed_bin_n.c */ +#include +#ifdef BN_MP_TO_SIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in signed [big endian] format */ +int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_signed_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_signed_bin_size(a); + return mp_to_signed_bin(a, b); +} +#endif + +/* End: bn_mp_to_signed_bin_n.c */ + /* Start: bn_mp_to_unsigned_bin.c */ #include #ifdef BN_MP_TO_UNSIGNED_BIN_C @@ -7172,8 +7353,7 @@ mp_to_signed_bin (mp_int * a, unsigned char *b) */ /* store in unsigned [big endian] format */ -int -mp_to_unsigned_bin (mp_int * a, unsigned char *b) +int mp_to_unsigned_bin (mp_int * a, unsigned char *b) { int x, res; mp_int t; @@ -7202,6 +7382,37 @@ mp_to_unsigned_bin (mp_int * a, unsigned char *b) /* End: bn_mp_to_unsigned_bin.c */ +/* Start: bn_mp_to_unsigned_bin_n.c */ +#include +#ifdef BN_MP_TO_UNSIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* store in unsigned [big endian] format */ +int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_unsigned_bin_size(a)) { + return MP_VAL; + } + *outlen = mp_unsigned_bin_size(a); + return mp_to_unsigned_bin(a, b); +} +#endif + +/* End: bn_mp_to_unsigned_bin_n.c */ + /* Start: bn_mp_toom_mul.c */ #include #ifdef BN_MP_TOOM_MUL_C @@ -7894,8 +8105,7 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen) */ /* get the size for an unsigned equivalent */ -int -mp_unsigned_bin_size (mp_int * a) +int mp_unsigned_bin_size (mp_int * a) { int size = mp_count_bits (a); return (size / 8 + ((size & 7) != 0 ? 1 : 0)); @@ -8218,11 +8428,12 @@ s_mp_add (mp_int * a, mp_int * b, mp_int * c) #define TAB_SIZE 256 #endif -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode) { mp_int M[TAB_SIZE], res, mu; mp_digit buf; int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + int (*redux)(mp_int*,mp_int*,mp_int*); /* find window size */ x = mp_count_bits (X); @@ -8269,9 +8480,18 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_init (&mu)) != MP_OKAY) { goto LBL_M; } - if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { - goto LBL_MU; - } + + if (redmode == 0) { + if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce; + } else { + if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce_2k_l; + } /* create M table * @@ -8293,11 +8513,14 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) } for (x = 0; x < (winsize - 1); x++) { + /* square it */ if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + + /* reduce modulo P */ + if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -8309,7 +8532,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) { goto LBL_MU; } - if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) { + if ((err = redux (&M[x], P, &mu)) != MP_OKAY) { goto LBL_MU; } } @@ -8358,7 +8581,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } continue; @@ -8375,7 +8598,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } @@ -8384,7 +8607,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -8402,7 +8625,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_sqr (&res, &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } @@ -8412,7 +8635,7 @@ int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) { goto LBL_RES; } - if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) { + if ((err = redux (&res, P, &mu)) != MP_OKAY) { goto LBL_RES; } } @@ -8803,11 +9026,12 @@ s_mp_sub (mp_int * a, mp_int * b, mp_int * c) CPU /Compiler /MUL CUTOFF/SQR CUTOFF ------------------------------------------------------------- Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + AMD Athlon64 /GCC v3.4.4 / 74/ 124/LTM 0.34 */ -int KARATSUBA_MUL_CUTOFF = 88, /* Min. number of digits before Karatsuba multiplication is used. */ - KARATSUBA_SQR_CUTOFF = 128, /* Min. number of digits before Karatsuba squaring is used. */ +int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 124, /* Min. number of digits before Karatsuba squaring is used. */ TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ TOOM_SQR_CUTOFF = 400; diff --git a/tommath.h b/tommath.h index 7cc92c2..bcb9d86 100644 --- a/tommath.h +++ b/tommath.h @@ -429,6 +429,15 @@ int mp_reduce_2k_setup(mp_int *a, mp_digit *d); /* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d); +/* returns true if a can be reduced with mp_reduce_2k_l */ +int mp_reduce_is_2k_l(mp_int *a); + +/* determines k value for 2k reduction */ +int mp_reduce_2k_setup_l(mp_int *a, mp_int *d); + +/* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ +int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d); + /* d = a**b (mod c) */ int mp_exptmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); @@ -511,12 +520,14 @@ int mp_count_bits(mp_int *a); int mp_unsigned_bin_size(mp_int *a); int mp_read_unsigned_bin(mp_int *a, unsigned char *b, int c); int mp_to_unsigned_bin(mp_int *a, unsigned char *b); +int mp_to_unsigned_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); int mp_signed_bin_size(mp_int *a); int mp_read_signed_bin(mp_int *a, unsigned char *b, int c); int mp_to_signed_bin(mp_int *a, unsigned char *b); +int mp_to_signed_bin_n (mp_int * a, unsigned char *b, unsigned long *outlen); -int mp_read_radix(mp_int *a, char *str, int radix); +int mp_read_radix(mp_int *a, const char *str, int radix); int mp_toradix(mp_int *a, char *str, int radix); int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen); int mp_radix_size(mp_int *a, int radix, int *size); @@ -554,7 +565,7 @@ int fast_mp_invmod(mp_int *a, mp_int *b, mp_int *c); int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c); int fast_mp_montgomery_reduce(mp_int *a, mp_int *m, mp_digit mp); int mp_exptmod_fast(mp_int *G, mp_int *X, mp_int *P, mp_int *Y, int mode); -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y); +int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int mode); void bn_reverse(unsigned char *s, int len); extern const char *mp_s_rmap; diff --git a/tommath.pdf b/tommath.pdf index 88e2dc7ae7dd5bd518aa241f5048333082ce753c..310bbbdb556f4780e8bcc129d88467c40c58d761 100644 GIT binary patch delta 251295 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

4L-%ZO*wLMp8U)tnbTZQ_Y}srvQcQ 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%0A@mSC_s+%OdF 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 Al-| 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 < digs) \{ -042 if ((res = mp_grow (c, digs)) != MP_OKAY) \{ -043 return res; -044 \} -045 \} -046 -047 /* number of output digits to produce */ -048 pa = MIN(digs, a->used + b->used); -049 -050 /* clear the carry */ -051 _W = 0; -052 for (ix = 0; ix < pa; ix++) \{ -053 int tx, ty; -054 int iy; -055 mp_digit *tmpx, *tmpy; -056 -057 /* get offsets into the two bignums */ -058 ty = MIN(b->used-1, ix); -059 tx = ix - ty; -060 -061 /* setup temp aliases */ -062 tmpx = a->dp + tx; -063 tmpy = b->dp + ty; -064 -065 /* this is the number of times the loop will iterrate, essentially its +033 int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) +034 \{ +035 int olduse, res, pa, ix, iz; +036 mp_digit W[MP_WARRAY]; +037 register mp_word _W; +038 +039 /* grow the destination as required */ +040 if (c->alloc < digs) \{ +041 if ((res = mp_grow (c, digs)) != MP_OKAY) \{ +042 return res; +043 \} +044 \} +045 +046 /* number of output digits to produce */ +047 pa = MIN(digs, a->used + b->used); +048 +049 /* clear the carry */ +050 _W = 0; +051 for (ix = 0; ix < pa; ix++) \{ +052 int tx, ty; +053 int iy; +054 mp_digit *tmpx, *tmpy; +055 +056 /* get offsets into the two bignums */ +057 ty = MIN(b->used-1, ix); +058 tx = ix - ty; +059 +060 /* setup temp aliases */ +061 tmpx = a->dp + tx; +062 tmpy = b->dp + ty; +063 +064 /* this is the number of times the loop will iterrate, essentially its -066 while (tx++ < a->used && ty-- >= 0) \{ ... \} -067 */ -068 iy = MIN(a->used-tx, ty+1); -069 -070 /* execute loop */ -071 for (iz = 0; iz < iy; ++iz) \{ -072 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); -073 \} -074 -075 /* store term */ -076 W[ix] = ((mp_digit)_W) & MP_MASK; -077 -078 /* make next carry */ -079 _W = _W >> ((mp_word)DIGIT_BIT); -080 \} -081 -082 /* store final carry */ -083 W[ix] = _W; -084 -085 /* setup dest */ -086 olduse = c->used; -087 c->used = digs; -088 -089 \{ -090 register mp_digit *tmpc; -091 tmpc = c->dp; -092 for (ix = 0; ix < digs; ix++) \{ -093 /* now extract the previous digit [below the carry] */ -094 *tmpc++ = W[ix]; -095 \} -096 -097 /* clear unused digits [that existed in the old copy of c] */ -098 for (; ix < olduse; ix++) \{ -099 *tmpc++ = 0; -100 \} -101 \} -102 mp_clamp (c); -103 return MP_OKAY; -104 \} -105 #endif +065 while (tx++ < a->used && ty-- >= 0) \{ ... \} +066 */ +067 iy = MIN(a->used-tx, ty+1); +068 +069 /* execute loop */ +070 for (iz = 0; iz < iy; ++iz) \{ +071 _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--); +072 \} +073 +074 /* store term */ +075 W[ix] = ((mp_digit)_W) & MP_MASK; +076 +077 /* make next carry */ +078 _W = _W >> ((mp_word)DIGIT_BIT); +079 \} +080 +081 /* store final carry */ +082 W[ix] = _W & MP_MASK; +083 +084 /* setup dest */ +085 olduse = c->used; +086 c->used = digs; +087 +088 \{ +089 register mp_digit *tmpc; +090 tmpc = c->dp; +091 for (ix = 0; ix < digs; ix++) \{ +092 /* now extract the previous digit [below the carry] */ +093 *tmpc++ = W[ix]; +094 \} +095 +096 /* clear unused digits [that existed in the old copy of c] */ +097 for (; ix < olduse; ix++) \{ +098 *tmpc++ = 0; +099 \} +100 \} +101 mp_clamp (c); +102 return MP_OKAY; +103 \} +104 #endif \end{alltt} \end{small} The memset on line @47,memset@ clears the initial $\hat W$ array to zero in a single step. Like the slower baseline multiplication -implementation a series of aliases (\textit{lines 62, 63 and 76}) are used to simplify the inner $O(n^2)$ loop. +implementation a series of aliases (\textit{lines 61, 62 and 75}) are used to simplify the inner $O(n^2)$ loop. In this case a new alias $\_\hat W$ has been added which refers to the double precision columns offset by $ix$ in each pass. -The inner loop on lines 92, 79 and 80 is where the algorithm will spend the majority of the time, which is why it has been +The inner loop on lines 91, 78 and 79 is where the algorithm will spend the majority of the time, which is why it has been stripped to the bones of any extra baggage\footnote{Hence the pointer aliases.}. On x86 processors the multiplication and additions amount to at the very least five instructions (\textit{two loads, two additions, one multiply}) while on the ARMv4 processors they amount to only three (\textit{one load, one store, one multiply-add}). For both of the x86 and ARMv4 processors the GCC compiler performs a good job at unrolling the loop @@ -5145,7 +5144,7 @@ squares in place. 100 \} 101 102 /* store it */ -103 W[ix] = _W; +103 W[ix] = _W & MP_MASK; 104 105 /* make next carry */ 106 W1 = _W >> ((mp_word)DIGIT_BIT); @@ -5730,88 +5729,87 @@ performed at most twice, and on average once. However, if $a \ge b^2$ than it wi 018 * precomputed via mp_reduce_setup. 019 * From HAC pp.604 Algorithm 14.42 020 */ -021 int -022 mp_reduce (mp_int * x, mp_int * m, mp_int * mu) -023 \{ -024 mp_int q; -025 int res, um = m->used; -026 -027 /* q = x */ -028 if ((res = mp_init_copy (&q, x)) != MP_OKAY) \{ -029 return res; -030 \} -031 -032 /* q1 = x / b**(k-1) */ -033 mp_rshd (&q, um - 1); -034 -035 /* according to HAC this optimization is ok */ -036 if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) \{ -037 if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) \{ -038 goto CLEANUP; -039 \} -040 \} else \{ -041 #ifdef BN_S_MP_MUL_HIGH_DIGS_C -042 if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ -043 goto CLEANUP; -044 \} -045 #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) -046 if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ -047 goto CLEANUP; -048 \} -049 #else -050 \{ -051 res = MP_VAL; -052 goto CLEANUP; -053 \} -054 #endif -055 \} -056 -057 /* q3 = q2 / b**(k+1) */ -058 mp_rshd (&q, um + 1); -059 -060 /* x = x mod b**(k+1), quick (no division) */ -061 if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) \{ -062 goto CLEANUP; -063 \} -064 -065 /* q = q * m mod b**(k+1), quick (no division) */ -066 if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) \{ -067 goto CLEANUP; -068 \} -069 -070 /* x = x - q */ -071 if ((res = mp_sub (x, &q, x)) != MP_OKAY) \{ -072 goto CLEANUP; -073 \} -074 -075 /* If x < 0, add b**(k+1) to it */ -076 if (mp_cmp_d (x, 0) == MP_LT) \{ -077 mp_set (&q, 1); -078 if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) -079 goto CLEANUP; -080 if ((res = mp_add (x, &q, x)) != MP_OKAY) -081 goto CLEANUP; -082 \} -083 -084 /* Back off if it's too big */ -085 while (mp_cmp (x, m) != MP_LT) \{ -086 if ((res = s_mp_sub (x, m, x)) != MP_OKAY) \{ -087 goto CLEANUP; -088 \} -089 \} -090 -091 CLEANUP: -092 mp_clear (&q); -093 -094 return res; -095 \} -096 #endif +021 int mp_reduce (mp_int * x, mp_int * m, mp_int * mu) +022 \{ +023 mp_int q; +024 int res, um = m->used; +025 +026 /* q = x */ +027 if ((res = mp_init_copy (&q, x)) != MP_OKAY) \{ +028 return res; +029 \} +030 +031 /* q1 = x / b**(k-1) */ +032 mp_rshd (&q, um - 1); +033 +034 /* according to HAC this optimization is ok */ +035 if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) \{ +036 if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) \{ +037 goto CLEANUP; +038 \} +039 \} else \{ +040 #ifdef BN_S_MP_MUL_HIGH_DIGS_C +041 if ((res = s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ +042 goto CLEANUP; +043 \} +044 #elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) +045 if ((res = fast_s_mp_mul_high_digs (&q, mu, &q, um - 1)) != MP_OKAY) \{ +046 goto CLEANUP; +047 \} +048 #else +049 \{ +050 res = MP_VAL; +051 goto CLEANUP; +052 \} +053 #endif +054 \} +055 +056 /* q3 = q2 / b**(k+1) */ +057 mp_rshd (&q, um + 1); +058 +059 /* x = x mod b**(k+1), quick (no division) */ +060 if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) \{ +061 goto CLEANUP; +062 \} +063 +064 /* q = q * m mod b**(k+1), quick (no division) */ +065 if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) \{ +066 goto CLEANUP; +067 \} +068 +069 /* x = x - q */ +070 if ((res = mp_sub (x, &q, x)) != MP_OKAY) \{ +071 goto CLEANUP; +072 \} +073 +074 /* If x < 0, add b**(k+1) to it */ +075 if (mp_cmp_d (x, 0) == MP_LT) \{ +076 mp_set (&q, 1); +077 if ((res = mp_lshd (&q, um + 1)) != MP_OKAY) +078 goto CLEANUP; +079 if ((res = mp_add (x, &q, x)) != MP_OKAY) +080 goto CLEANUP; +081 \} +082 +083 /* Back off if it's too big */ +084 while (mp_cmp (x, m) != MP_LT) \{ +085 if ((res = s_mp_sub (x, m, x)) != MP_OKAY) \{ +086 goto CLEANUP; +087 \} +088 \} +089 +090 CLEANUP: +091 mp_clear (&q); +092 +093 return res; +094 \} +095 #endif \end{alltt} \end{small} The first multiplication that determines the quotient can be performed by only producing the digits from $m - 1$ and up. This essentially halves the number of single precision multiplications required. However, the optimization is only safe if $\beta$ is much larger than the number of digits -in the modulus. In the source code this is evaluated on lines 36 to 44 where algorithm s\_mp\_mul\_high\_digs is used when it is +in the modulus. In the source code this is evaluated on lines 36 to 43 where algorithm s\_mp\_mul\_high\_digs is used when it is safe to do so. \subsection{The Barrett Setup Algorithm} @@ -6314,161 +6312,160 @@ stored in the destination $x$. 022 * 023 * Based on Algorithm 14.32 on pp.601 of HAC. 024 */ -025 int -026 fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) -027 \{ -028 int ix, res, olduse; -029 mp_word W[MP_WARRAY]; -030 -031 /* get old used count */ -032 olduse = x->used; -033 -034 /* grow a as required */ -035 if (x->alloc < n->used + 1) \{ -036 if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) \{ -037 return res; -038 \} -039 \} -040 -041 /* first we have to get the digits of the input into -042 * an array of double precision words W[...] -043 */ -044 \{ -045 register mp_word *_W; -046 register mp_digit *tmpx; -047 -048 /* alias for the W[] array */ -049 _W = W; -050 -051 /* alias for the digits of x*/ -052 tmpx = x->dp; -053 -054 /* copy the digits of a into W[0..a->used-1] */ -055 for (ix = 0; ix < x->used; ix++) \{ -056 *_W++ = *tmpx++; -057 \} -058 -059 /* zero the high words of W[a->used..m->used*2] */ -060 for (; ix < n->used * 2 + 1; ix++) \{ -061 *_W++ = 0; -062 \} -063 \} -064 -065 /* now we proceed to zero successive digits -066 * from the least significant upwards -067 */ -068 for (ix = 0; ix < n->used; ix++) \{ -069 /* mu = ai * m' mod b -070 * -071 * We avoid a double precision multiplication (which isn't required) -072 * by casting the value down to a mp_digit. Note this requires -073 * that W[ix-1] have the carry cleared (see after the inner loop) -074 */ -075 register mp_digit mu; -076 mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); -077 -078 /* a = a + mu * m * b**i -079 * -080 * This is computed in place and on the fly. The multiplication -081 * by b**i is handled by offseting which columns the results -082 * are added to. -083 * -084 * Note the comba method normally doesn't handle carries in the -085 * inner loop In this case we fix the carry from the previous -086 * column since the Montgomery reduction requires digits of the -087 * result (so far) [see above] to work. This is -088 * handled by fixing up one carry after the inner loop. The -089 * carry fixups are done in order so after these loops the -090 * first m->used words of W[] have the carries fixed -091 */ -092 \{ -093 register int iy; -094 register mp_digit *tmpn; -095 register mp_word *_W; -096 -097 /* alias for the digits of the modulus */ -098 tmpn = n->dp; -099 -100 /* Alias for the columns set by an offset of ix */ -101 _W = W + ix; -102 -103 /* inner loop */ -104 for (iy = 0; iy < n->used; iy++) \{ -105 *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); -106 \} -107 \} -108 -109 /* now fix carry for next digit, W[ix+1] */ -110 W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); -111 \} -112 -113 /* now we have to propagate the carries and -114 * shift the words downward [all those least -115 * significant digits we zeroed]. -116 */ -117 \{ -118 register mp_digit *tmpx; -119 register mp_word *_W, *_W1; -120 -121 /* nox fix rest of carries */ -122 -123 /* alias for current word */ -124 _W1 = W + ix; -125 -126 /* alias for next word, where the carry goes */ -127 _W = W + ++ix; -128 -129 for (; ix <= n->used * 2 + 1; ix++) \{ -130 *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); -131 \} -132 -133 /* copy out, A = A/b**n -134 * -135 * The result is A/b**n but instead of converting from an -136 * array of mp_word to mp_digit than calling mp_rshd -137 * we just copy them in the right order -138 */ -139 -140 /* alias for destination word */ -141 tmpx = x->dp; -142 -143 /* alias for shifted double precision result */ -144 _W = W + n->used; -145 -146 for (ix = 0; ix < n->used + 1; ix++) \{ -147 *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); -148 \} -149 -150 /* zero oldused digits, if the input a was larger than -151 * m->used+1 we'll have to clear the digits -152 */ -153 for (; ix < olduse; ix++) \{ -154 *tmpx++ = 0; -155 \} -156 \} -157 -158 /* set the max used and clamp */ -159 x->used = n->used + 1; -160 mp_clamp (x); -161 -162 /* if A >= m then A = A - m */ -163 if (mp_cmp_mag (x, n) != MP_LT) \{ -164 return s_mp_sub (x, n, x); -165 \} -166 return MP_OKAY; -167 \} -168 #endif +025 int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho) +026 \{ +027 int ix, res, olduse; +028 mp_word W[MP_WARRAY]; +029 +030 /* get old used count */ +031 olduse = x->used; +032 +033 /* grow a as required */ +034 if (x->alloc < n->used + 1) \{ +035 if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) \{ +036 return res; +037 \} +038 \} +039 +040 /* first we have to get the digits of the input into +041 * an array of double precision words W[...] +042 */ +043 \{ +044 register mp_word *_W; +045 register mp_digit *tmpx; +046 +047 /* alias for the W[] array */ +048 _W = W; +049 +050 /* alias for the digits of x*/ +051 tmpx = x->dp; +052 +053 /* copy the digits of a into W[0..a->used-1] */ +054 for (ix = 0; ix < x->used; ix++) \{ +055 *_W++ = *tmpx++; +056 \} +057 +058 /* zero the high words of W[a->used..m->used*2] */ +059 for (; ix < n->used * 2 + 1; ix++) \{ +060 *_W++ = 0; +061 \} +062 \} +063 +064 /* now we proceed to zero successive digits +065 * from the least significant upwards +066 */ +067 for (ix = 0; ix < n->used; ix++) \{ +068 /* mu = ai * m' mod b +069 * +070 * We avoid a double precision multiplication (which isn't required) +071 * by casting the value down to a mp_digit. Note this requires +072 * that W[ix-1] have the carry cleared (see after the inner loop) +073 */ +074 register mp_digit mu; +075 mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK); +076 +077 /* a = a + mu * m * b**i +078 * +079 * This is computed in place and on the fly. The multiplication +080 * by b**i is handled by offseting which columns the results +081 * are added to. +082 * +083 * Note the comba method normally doesn't handle carries in the +084 * inner loop In this case we fix the carry from the previous +085 * column since the Montgomery reduction requires digits of the +086 * result (so far) [see above] to work. This is +087 * handled by fixing up one carry after the inner loop. The +088 * carry fixups are done in order so after these loops the +089 * first m->used words of W[] have the carries fixed +090 */ +091 \{ +092 register int iy; +093 register mp_digit *tmpn; +094 register mp_word *_W; +095 +096 /* alias for the digits of the modulus */ +097 tmpn = n->dp; +098 +099 /* Alias for the columns set by an offset of ix */ +100 _W = W + ix; +101 +102 /* inner loop */ +103 for (iy = 0; iy < n->used; iy++) \{ +104 *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++); +105 \} +106 \} +107 +108 /* now fix carry for next digit, W[ix+1] */ +109 W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT); +110 \} +111 +112 /* now we have to propagate the carries and +113 * shift the words downward [all those least +114 * significant digits we zeroed]. +115 */ +116 \{ +117 register mp_digit *tmpx; +118 register mp_word *_W, *_W1; +119 +120 /* nox fix rest of carries */ +121 +122 /* alias for current word */ +123 _W1 = W + ix; +124 +125 /* alias for next word, where the carry goes */ +126 _W = W + ++ix; +127 +128 for (; ix <= n->used * 2 + 1; ix++) \{ +129 *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT); +130 \} +131 +132 /* copy out, A = A/b**n +133 * +134 * The result is A/b**n but instead of converting from an +135 * array of mp_word to mp_digit than calling mp_rshd +136 * we just copy them in the right order +137 */ +138 +139 /* alias for destination word */ +140 tmpx = x->dp; +141 +142 /* alias for shifted double precision result */ +143 _W = W + n->used; +144 +145 for (ix = 0; ix < n->used + 1; ix++) \{ +146 *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK)); +147 \} +148 +149 /* zero oldused digits, if the input a was larger than +150 * m->used+1 we'll have to clear the digits +151 */ +152 for (; ix < olduse; ix++) \{ +153 *tmpx++ = 0; +154 \} +155 \} +156 +157 /* set the max used and clamp */ +158 x->used = n->used + 1; +159 mp_clamp (x); +160 +161 /* if A >= m then A = A - m */ +162 if (mp_cmp_mag (x, n) != MP_LT) \{ +163 return s_mp_sub (x, n, x); +164 \} +165 return MP_OKAY; +166 \} +167 #endif \end{alltt} \end{small} -The $\hat W$ array is first filled with digits of $x$ on line 48 then the rest of the digits are zeroed on line 55. Both loops share +The $\hat W$ array is first filled with digits of $x$ on line 50 then the rest of the digits are zeroed on line 54. Both loops share the same alias variables to make the code easier to read. The value of $\mu$ is calculated in an interesting fashion. First the value $\hat W_{ix}$ is reduced modulo $\beta$ and cast to a mp\_digit. This -forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 110 fixes the carry +forces the compiler to use a single precision multiplication and prevents any concerns about loss of precision. Line 109 fixes the carry for the next iteration of the loop by propagating the carry from $\hat W_{ix}$ to $\hat W_{ix+1}$. -The for loop on line 109 propagates the rest of the carries upwards through the columns. The for loop on line 126 reduces the columns +The for loop on line 108 propagates the rest of the carries upwards through the columns. The for loop on line 125 reduces the columns modulo $\beta$ and shifts them $k$ places at the same time. The alias $\_ \hat W$ actually refers to the array $\hat W$ starting at the $n.used$'th digit, that is $\_ \hat W_{t} = \hat W_{n.used + t}$. @@ -6968,51 +6965,50 @@ shift which makes the algorithm fairly inexpensive to use. \begin{alltt} 016 017 /* reduces a modulo n where n is of the form 2**p - d */ -018 int -019 mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) -020 \{ -021 mp_int q; -022 int p, res; -023 -024 if ((res = mp_init(&q)) != MP_OKAY) \{ -025 return res; -026 \} -027 -028 p = mp_count_bits(n); -029 top: -030 /* q = a/2**p, a = a mod 2**p */ -031 if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) \{ -032 goto ERR; -033 \} -034 -035 if (d != 1) \{ -036 /* q = q * d */ -037 if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) \{ -038 goto ERR; -039 \} -040 \} -041 -042 /* a = a + q */ -043 if ((res = s_mp_add(a, &q, a)) != MP_OKAY) \{ -044 goto ERR; -045 \} -046 -047 if (mp_cmp_mag(a, n) != MP_LT) \{ -048 s_mp_sub(a, n, a); -049 goto top; -050 \} -051 -052 ERR: -053 mp_clear(&q); -054 return res; -055 \} -056 -057 #endif +018 int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d) +019 \{ +020 mp_int q; +021 int p, res; +022 +023 if ((res = mp_init(&q)) != MP_OKAY) \{ +024 return res; +025 \} +026 +027 p = mp_count_bits(n); +028 top: +029 /* q = a/2**p, a = a mod 2**p */ +030 if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) \{ +031 goto ERR; +032 \} +033 +034 if (d != 1) \{ +035 /* q = q * d */ +036 if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) \{ +037 goto ERR; +038 \} +039 \} +040 +041 /* a = a + q */ +042 if ((res = s_mp_add(a, &q, a)) != MP_OKAY) \{ +043 goto ERR; +044 \} +045 +046 if (mp_cmp_mag(a, n) != MP_LT) \{ +047 s_mp_sub(a, n, a); +048 goto top; +049 \} +050 +051 ERR: +052 mp_clear(&q); +053 return res; +054 \} +055 +056 #endif \end{alltt} \end{small} The algorithm mp\_count\_bits calculates the number of bits in an mp\_int which is used to find the initial value of $p$. The call to mp\_div\_2d -on line 31 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size +on line 30 calculates both the quotient $q$ and the remainder $a$ required. By doing both in a single function call the code size is kept fairly small. The multiplication by $k$ is only performed if $k > 1$. This allows reductions modulo $2^p - 1$ to be performed without any multiplications. @@ -7052,32 +7048,31 @@ is sufficient to solve for $k$. Alternatively if $n$ has more than one digit th \begin{alltt} 016 017 /* determines the setup value */ -018 int -019 mp_reduce_2k_setup(mp_int *a, mp_digit *d) -020 \{ -021 int res, p; -022 mp_int tmp; -023 -024 if ((res = mp_init(&tmp)) != MP_OKAY) \{ -025 return res; -026 \} -027 -028 p = mp_count_bits(a); -029 if ((res = mp_2expt(&tmp, p)) != MP_OKAY) \{ -030 mp_clear(&tmp); -031 return res; -032 \} -033 -034 if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) \{ -035 mp_clear(&tmp); -036 return res; -037 \} -038 -039 *d = tmp.dp[0]; -040 mp_clear(&tmp); -041 return MP_OKAY; -042 \} -043 #endif +018 int mp_reduce_2k_setup(mp_int *a, mp_digit *d) +019 \{ +020 int res, p; +021 mp_int tmp; +022 +023 if ((res = mp_init(&tmp)) != MP_OKAY) \{ +024 return res; +025 \} +026 +027 p = mp_count_bits(a); +028 if ((res = mp_2expt(&tmp, p)) != MP_OKAY) \{ +029 mp_clear(&tmp); +030 return res; +031 \} +032 +033 if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) \{ +034 mp_clear(&tmp); +035 return res; +036 \} +037 +038 *d = tmp.dp[0]; +039 mp_clear(&tmp); +040 return MP_OKAY; +041 \} +042 #endif \end{alltt} \end{small} @@ -7130,9 +7125,9 @@ This algorithm quickly determines if a modulus is of the form required for algor 021 mp_digit iz; 022 023 if (a->used == 0) \{ -024 return 0; +024 return MP_NO; 025 \} else if (a->used == 1) \{ -026 return 1; +026 return MP_YES; 027 \} else if (a->used > 1) \{ 028 iy = mp_count_bits(a); 029 iz = 1; @@ -7141,7 +7136,7 @@ This algorithm quickly determines if a modulus is of the form required for algor 032 /* Test every bit from the second digit up, must be 1 */ 033 for (ix = DIGIT_BIT; ix < iy; ix++) \{ 034 if ((a->dp[iw] & iz) == 0) \{ -035 return 0; +035 return MP_NO; 036 \} 037 iz <<= 1; 038 if (iz > (mp_digit)MP_MASK) \{ @@ -7150,7 +7145,7 @@ This algorithm quickly determines if a modulus is of the form required for algor 041 \} 042 \} 043 \} -044 return 1; +044 return MP_YES; 045 \} 046 047 #endif @@ -7601,39 +7596,47 @@ algorithm since their arguments are essentially the same (\textit{two mp\_ints a 064 #endif 065 \} 066 -067 #ifdef BN_MP_DR_IS_MODULUS_C -068 /* is it a DR modulus? */ -069 dr = mp_dr_is_modulus(P); -070 #else -071 dr = 0; +067 /* modified diminished radix reduction */ +068 #if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) +069 if (mp_reduce_is_2k_l(P) == MP_YES) \{ +070 return s_mp_exptmod(G, X, P, Y, 1); +071 \} 072 #endif 073 -074 #ifdef BN_MP_REDUCE_IS_2K_C -075 /* if not, is it a uDR modulus? */ -076 if (dr == 0) \{ -077 dr = mp_reduce_is_2k(P) << 1; -078 \} -079 #endif -080 -081 /* if the modulus is odd or dr != 0 use the fast method */ -082 #ifdef BN_MP_EXPTMOD_FAST_C -083 if (mp_isodd (P) == 1 || dr != 0) \{ -084 return mp_exptmod_fast (G, X, P, Y, dr); -085 \} else \{ -086 #endif -087 #ifdef BN_S_MP_EXPTMOD_C -088 /* otherwise use the generic Barrett reduction technique */ -089 return s_mp_exptmod (G, X, P, Y); -090 #else -091 /* no exptmod for evens */ -092 return MP_VAL; -093 #endif -094 #ifdef BN_MP_EXPTMOD_FAST_C -095 \} -096 #endif -097 \} -098 -099 #endif +074 #ifdef BN_MP_DR_IS_MODULUS_C +075 /* is it a DR modulus? */ +076 dr = mp_dr_is_modulus(P); +077 #else +078 /* default to no */ +079 dr = 0; +080 #endif +081 +082 #ifdef BN_MP_REDUCE_IS_2K_C +083 /* if not, is it a unrestricted DR modulus? */ +084 if (dr == 0) \{ +085 dr = mp_reduce_is_2k(P) << 1; +086 \} +087 #endif +088 +089 /* if the modulus is odd or dr != 0 use the montgomery method */ +090 #ifdef BN_MP_EXPTMOD_FAST_C +091 if (mp_isodd (P) == 1 || dr != 0) \{ +092 return mp_exptmod_fast (G, X, P, Y, dr); +093 \} else \{ +094 #endif +095 #ifdef BN_S_MP_EXPTMOD_C +096 /* otherwise use the generic Barrett reduction technique */ +097 return s_mp_exptmod (G, X, P, Y, 0); +098 #else +099 /* no exptmod for evens */ +100 return MP_VAL; +101 #endif +102 #ifdef BN_MP_EXPTMOD_FAST_C +103 \} +104 #endif +105 \} +106 +107 #endif \end{alltt} \end{small} @@ -7642,8 +7645,8 @@ negative the algorithm tries to perform a modular exponentiation with the modula the modular inverse of $G$ and $tmpX$ is assigned the absolute value of $X$. The algorithm will recuse with these new values with a positive exponent. -If the exponent is positive the algorithm resumes the exponentiation. Line 69 determines if the modulus is of the restricted Diminished Radix -form. If it is not line 77 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one +If the exponent is positive the algorithm resumes the exponentiation. Line 76 determines if the modulus is of the restricted Diminished Radix +form. If it is not line 69 attempts to determine if it is of a unrestricted Diminished Radix form. The integer $dr$ will take on one of three values. \begin{enumerate} @@ -7652,7 +7655,7 @@ of three values. \item $dr = 2$ means that the modulus is of unrestricted Diminished Radix form. \end{enumerate} -Line 67 determines if the fast modular exponentiation algorithm can be used. It is allowed if $dr \ne 0$ or if the modulus is odd. Otherwise, +Line 69 determines if the fast modular exponentiation algorithm can be used. It is allowed if $dr \ne 0$ or if the modulus is odd. Otherwise, the slower s\_mp\_exptmod algorithm is used which uses Barrett reduction. \subsection{Barrett Modular Exponentiation} @@ -7820,230 +7823,244 @@ a Left-to-Right algorithm is used to process the remaining few bits. 020 #define TAB_SIZE 256 021 #endif 022 -023 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y) +023 int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmod + e) 024 \{ 025 mp_int M[TAB_SIZE], res, mu; 026 mp_digit buf; 027 int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; -028 -029 /* find window size */ -030 x = mp_count_bits (X); -031 if (x <= 7) \{ -032 winsize = 2; -033 \} else if (x <= 36) \{ -034 winsize = 3; -035 \} else if (x <= 140) \{ -036 winsize = 4; -037 \} else if (x <= 450) \{ -038 winsize = 5; -039 \} else if (x <= 1303) \{ -040 winsize = 6; -041 \} else if (x <= 3529) \{ -042 winsize = 7; -043 \} else \{ -044 winsize = 8; -045 \} -046 -047 #ifdef MP_LOW_MEM -048 if (winsize > 5) \{ -049 winsize = 5; -050 \} -051 #endif -052 -053 /* init M array */ -054 /* init first cell */ -055 if ((err = mp_init(&M[1])) != MP_OKAY) \{ -056 return err; -057 \} -058 -059 /* now init the second half of the array */ -060 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -061 if ((err = mp_init(&M[x])) != MP_OKAY) \{ -062 for (y = 1<<(winsize-1); y < x; y++) \{ -063 mp_clear (&M[y]); -064 \} -065 mp_clear(&M[1]); -066 return err; -067 \} -068 \} -069 -070 /* create mu, used for Barrett reduction */ -071 if ((err = mp_init (&mu)) != MP_OKAY) \{ -072 goto LBL_M; -073 \} -074 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ -075 goto LBL_MU; -076 \} -077 -078 /* create M table -079 * -080 * The M table contains powers of the base, -081 * e.g. M[x] = G**x mod P -082 * -083 * The first half of the table is not -084 * computed though accept for M[0] and M[1] -085 */ -086 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ -087 goto LBL_MU; -088 \} -089 -090 /* compute the value at M[1<<(winsize-1)] by squaring -091 * M[1] (winsize-1) times -092 */ -093 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ -094 goto LBL_MU; -095 \} -096 -097 for (x = 0; x < (winsize - 1); x++) \{ -098 if ((err = mp_sqr (&M[1 << (winsize - 1)], -099 &M[1 << (winsize - 1)])) != MP_OKAY) \{ -100 goto LBL_MU; -101 \} -102 if ((err = mp_reduce (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ -103 goto LBL_MU; -104 \} +028 int (*redux)(mp_int*,mp_int*,mp_int*); +029 +030 /* find window size */ +031 x = mp_count_bits (X); +032 if (x <= 7) \{ +033 winsize = 2; +034 \} else if (x <= 36) \{ +035 winsize = 3; +036 \} else if (x <= 140) \{ +037 winsize = 4; +038 \} else if (x <= 450) \{ +039 winsize = 5; +040 \} else if (x <= 1303) \{ +041 winsize = 6; +042 \} else if (x <= 3529) \{ +043 winsize = 7; +044 \} else \{ +045 winsize = 8; +046 \} +047 +048 #ifdef MP_LOW_MEM +049 if (winsize > 5) \{ +050 winsize = 5; +051 \} +052 #endif +053 +054 /* init M array */ +055 /* init first cell */ +056 if ((err = mp_init(&M[1])) != MP_OKAY) \{ +057 return err; +058 \} +059 +060 /* now init the second half of the array */ +061 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +062 if ((err = mp_init(&M[x])) != MP_OKAY) \{ +063 for (y = 1<<(winsize-1); y < x; y++) \{ +064 mp_clear (&M[y]); +065 \} +066 mp_clear(&M[1]); +067 return err; +068 \} +069 \} +070 +071 /* create mu, used for Barrett reduction */ +072 if ((err = mp_init (&mu)) != MP_OKAY) \{ +073 goto LBL_M; +074 \} +075 +076 if (redmode == 0) \{ +077 if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) \{ +078 goto LBL_MU; +079 \} +080 redux = mp_reduce; +081 \} else \{ +082 if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) \{ +083 goto LBL_MU; +084 \} +085 redux = mp_reduce_2k_l; +086 \} +087 +088 /* create M table +089 * +090 * The M table contains powers of the base, +091 * e.g. M[x] = G**x mod P +092 * +093 * The first half of the table is not +094 * computed though accept for M[0] and M[1] +095 */ +096 if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) \{ +097 goto LBL_MU; +098 \} +099 +100 /* compute the value at M[1<<(winsize-1)] by squaring +101 * M[1] (winsize-1) times +102 */ +103 if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) \{ +104 goto LBL_MU; 105 \} 106 -107 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) -108 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) -109 */ -110 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ -111 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ -112 goto LBL_MU; -113 \} -114 if ((err = mp_reduce (&M[x], P, &mu)) != MP_OKAY) \{ -115 goto LBL_MU; -116 \} -117 \} -118 -119 /* setup result */ -120 if ((err = mp_init (&res)) != MP_OKAY) \{ -121 goto LBL_MU; -122 \} -123 mp_set (&res, 1); -124 -125 /* set initial mode and bit cnt */ -126 mode = 0; -127 bitcnt = 1; -128 buf = 0; -129 digidx = X->used - 1; -130 bitcpy = 0; -131 bitbuf = 0; -132 -133 for (;;) \{ -134 /* grab next digit as required */ -135 if (--bitcnt == 0) \{ -136 /* if digidx == -1 we are out of digits */ -137 if (digidx == -1) \{ -138 break; -139 \} -140 /* read next digit and reset the bitcnt */ -141 buf = X->dp[digidx--]; -142 bitcnt = (int) DIGIT_BIT; -143 \} -144 -145 /* grab the next msb from the exponent */ -146 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; -147 buf <<= (mp_digit)1; -148 -149 /* if the bit is zero and mode == 0 then we ignore it -150 * These represent the leading zero bits before the first 1 bit -151 * in the exponent. Technically this opt is not required but it -152 * does lower the # of trivial squaring/reductions used -153 */ -154 if (mode == 0 && y == 0) \{ -155 continue; +107 for (x = 0; x < (winsize - 1); x++) \{ +108 /* square it */ +109 if ((err = mp_sqr (&M[1 << (winsize - 1)], +110 &M[1 << (winsize - 1)])) != MP_OKAY) \{ +111 goto LBL_MU; +112 \} +113 +114 /* reduce modulo P */ +115 if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) \{ +116 goto LBL_MU; +117 \} +118 \} +119 +120 /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) +121 * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) +122 */ +123 for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) \{ +124 if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) \{ +125 goto LBL_MU; +126 \} +127 if ((err = redux (&M[x], P, &mu)) != MP_OKAY) \{ +128 goto LBL_MU; +129 \} +130 \} +131 +132 /* setup result */ +133 if ((err = mp_init (&res)) != MP_OKAY) \{ +134 goto LBL_MU; +135 \} +136 mp_set (&res, 1); +137 +138 /* set initial mode and bit cnt */ +139 mode = 0; +140 bitcnt = 1; +141 buf = 0; +142 digidx = X->used - 1; +143 bitcpy = 0; +144 bitbuf = 0; +145 +146 for (;;) \{ +147 /* grab next digit as required */ +148 if (--bitcnt == 0) \{ +149 /* if digidx == -1 we are out of digits */ +150 if (digidx == -1) \{ +151 break; +152 \} +153 /* read next digit and reset the bitcnt */ +154 buf = X->dp[digidx--]; +155 bitcnt = (int) DIGIT_BIT; 156 \} 157 -158 /* if the bit is zero and mode == 1 then we square */ -159 if (mode == 1 && y == 0) \{ -160 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -161 goto LBL_RES; -162 \} -163 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -164 goto LBL_RES; -165 \} -166 continue; -167 \} -168 -169 /* else we add it to the window */ -170 bitbuf |= (y << (winsize - ++bitcpy)); -171 mode = 2; -172 -173 if (bitcpy == winsize) \{ -174 /* ok window is filled so square as required and multiply */ -175 /* square first */ -176 for (x = 0; x < winsize; x++) \{ -177 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -178 goto LBL_RES; -179 \} -180 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -181 goto LBL_RES; -182 \} -183 \} -184 -185 /* then multiply */ -186 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ -187 goto LBL_RES; -188 \} -189 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -190 goto LBL_RES; -191 \} -192 -193 /* empty window and reset */ -194 bitcpy = 0; -195 bitbuf = 0; -196 mode = 1; -197 \} -198 \} -199 -200 /* if bits remain then square/multiply */ -201 if (mode == 2 && bitcpy > 0) \{ -202 /* square then multiply if the bit is set */ -203 for (x = 0; x < bitcpy; x++) \{ -204 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ -205 goto LBL_RES; -206 \} -207 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -208 goto LBL_RES; -209 \} -210 -211 bitbuf <<= 1; -212 if ((bitbuf & (1 << winsize)) != 0) \{ -213 /* then multiply */ -214 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ -215 goto LBL_RES; -216 \} -217 if ((err = mp_reduce (&res, P, &mu)) != MP_OKAY) \{ -218 goto LBL_RES; -219 \} -220 \} -221 \} -222 \} +158 /* grab the next msb from the exponent */ +159 y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; +160 buf <<= (mp_digit)1; +161 +162 /* if the bit is zero and mode == 0 then we ignore it +163 * These represent the leading zero bits before the first 1 bit +164 * in the exponent. Technically this opt is not required but it +165 * does lower the # of trivial squaring/reductions used +166 */ +167 if (mode == 0 && y == 0) \{ +168 continue; +169 \} +170 +171 /* if the bit is zero and mode == 1 then we square */ +172 if (mode == 1 && y == 0) \{ +173 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +174 goto LBL_RES; +175 \} +176 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +177 goto LBL_RES; +178 \} +179 continue; +180 \} +181 +182 /* else we add it to the window */ +183 bitbuf |= (y << (winsize - ++bitcpy)); +184 mode = 2; +185 +186 if (bitcpy == winsize) \{ +187 /* ok window is filled so square as required and multiply */ +188 /* square first */ +189 for (x = 0; x < winsize; x++) \{ +190 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +191 goto LBL_RES; +192 \} +193 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +194 goto LBL_RES; +195 \} +196 \} +197 +198 /* then multiply */ +199 if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) \{ +200 goto LBL_RES; +201 \} +202 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +203 goto LBL_RES; +204 \} +205 +206 /* empty window and reset */ +207 bitcpy = 0; +208 bitbuf = 0; +209 mode = 1; +210 \} +211 \} +212 +213 /* if bits remain then square/multiply */ +214 if (mode == 2 && bitcpy > 0) \{ +215 /* square then multiply if the bit is set */ +216 for (x = 0; x < bitcpy; x++) \{ +217 if ((err = mp_sqr (&res, &res)) != MP_OKAY) \{ +218 goto LBL_RES; +219 \} +220 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +221 goto LBL_RES; +222 \} 223 -224 mp_exch (&res, Y); -225 err = MP_OKAY; -226 LBL_RES:mp_clear (&res); -227 LBL_MU:mp_clear (&mu); -228 LBL_M: -229 mp_clear(&M[1]); -230 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ -231 mp_clear (&M[x]); -232 \} -233 return err; -234 \} -235 #endif +224 bitbuf <<= 1; +225 if ((bitbuf & (1 << winsize)) != 0) \{ +226 /* then multiply */ +227 if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) \{ +228 goto LBL_RES; +229 \} +230 if ((err = redux (&res, P, &mu)) != MP_OKAY) \{ +231 goto LBL_RES; +232 \} +233 \} +234 \} +235 \} +236 +237 mp_exch (&res, Y); +238 err = MP_OKAY; +239 LBL_RES:mp_clear (&res); +240 LBL_MU:mp_clear (&mu); +241 LBL_M: +242 mp_clear(&M[1]); +243 for (x = 1<<(winsize-1); x < (1 << winsize); x++) \{ +244 mp_clear (&M[x]); +245 \} +246 return err; +247 \} +248 #endif \end{alltt} \end{small} -Lines 31 through 41 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted +Lines 21 through 40 determine the optimal window size based on the length of the exponent in bits. The window divisions are sorted from smallest to greatest so that in each \textbf{if} statement only one condition must be tested. For example, by the \textbf{if} statement -on line 33 the value of $x$ is already known to be greater than $140$. +on line 32 the value of $x$ is already known to be greater than $140$. -The conditional piece of code beginning on line 47 allows the window size to be restricted to five bits. This logic is used to ensure +The conditional piece of code beginning on line 48 allows the window size to be restricted to five bits. This logic is used to ensure the table of precomputed powers of $G$ remains relatively small. -The for loop on line 60 initializes the $M$ array while lines 61 and 74 compute the value of $\mu$ required for +The for loop on line 61 initializes the $M$ array while lines 62 and 77 compute the value of $\mu$ required for Barrett reduction. -- More later. @@ -8873,21 +8890,22 @@ Unlike the full multiplication algorithms this algorithm does not require any si 056 u = (mp_digit) (r >> ((mp_word) DIGIT_BIT)); 057 \} 058 -059 /* store final carry [if any] */ +059 /* store final carry [if any] and increment ix offset */ 060 *tmpc++ = u; -061 -062 /* now zero digits above the top */ -063 while (ix++ < olduse) \{ -064 *tmpc++ = 0; -065 \} -066 -067 /* set used count */ -068 c->used = a->used + 1; -069 mp_clamp(c); -070 -071 return MP_OKAY; -072 \} -073 #endif +061 ++ix; +062 +063 /* now zero digits above the top */ +064 while (ix++ < olduse) \{ +065 *tmpc++ = 0; +066 \} +067 +068 /* set used count */ +069 c->used = a->used + 1; +070 mp_clamp(c); +071 +072 return MP_OKAY; +073 \} +074 #endif \end{alltt} \end{small} @@ -9379,7 +9397,7 @@ as part of larger input without any significant problem. \begin{alltt} 016 017 /* read a string [ASCII] in a given radix */ -018 int mp_read_radix (mp_int * a, char *str, int radix) +018 int mp_read_radix (mp_int * a, const char *str, int radix) 019 \{ 020 int y, res, neg; 021 char ch; diff --git a/tommath_class.h b/tommath_class.h index 53bfa31..0ea8212 100644 --- a/tommath_class.h +++ b/tommath_class.h @@ -90,8 +90,11 @@ #define BN_MP_READ_UNSIGNED_BIN_C #define BN_MP_REDUCE_C #define BN_MP_REDUCE_2K_C +#define BN_MP_REDUCE_2K_L_C #define BN_MP_REDUCE_2K_SETUP_C +#define BN_MP_REDUCE_2K_SETUP_L_C #define BN_MP_REDUCE_IS_2K_C +#define BN_MP_REDUCE_IS_2K_L_C #define BN_MP_REDUCE_SETUP_C #define BN_MP_RSHD_C #define BN_MP_SET_C @@ -105,7 +108,9 @@ #define BN_MP_SUB_D_C #define BN_MP_SUBMOD_C #define BN_MP_TO_SIGNED_BIN_C +#define BN_MP_TO_SIGNED_BIN_N_C #define BN_MP_TO_UNSIGNED_BIN_C +#define BN_MP_TO_UNSIGNED_BIN_N_C #define BN_MP_TOOM_MUL_C #define BN_MP_TOOM_SQR_C #define BN_MP_TORADIX_C @@ -324,11 +329,12 @@ #define BN_MP_CLEAR_C #define BN_MP_ABS_C #define BN_MP_CLEAR_MULTI_C + #define BN_MP_REDUCE_IS_2K_L_C + #define BN_S_MP_EXPTMOD_C #define BN_MP_DR_IS_MODULUS_C #define BN_MP_REDUCE_IS_2K_C #define BN_MP_ISODD_C #define BN_MP_EXPTMOD_FAST_C - #define BN_S_MP_EXPTMOD_C #endif #if defined(BN_MP_EXPTMOD_FAST_C) @@ -725,6 +731,17 @@ #define BN_MP_CLEAR_C #endif +#if defined(BN_MP_REDUCE_2K_L_C) + #define BN_MP_INIT_C + #define BN_MP_COUNT_BITS_C + #define BN_MP_DIV_2D_C + #define BN_MP_MUL_C + #define BN_S_MP_ADD_C + #define BN_MP_CMP_MAG_C + #define BN_S_MP_SUB_C + #define BN_MP_CLEAR_C +#endif + #if defined(BN_MP_REDUCE_2K_SETUP_C) #define BN_MP_INIT_C #define BN_MP_COUNT_BITS_C @@ -733,11 +750,22 @@ #define BN_S_MP_SUB_C #endif +#if defined(BN_MP_REDUCE_2K_SETUP_L_C) + #define BN_MP_INIT_C + #define BN_MP_2EXPT_C + #define BN_MP_COUNT_BITS_C + #define BN_S_MP_SUB_C + #define BN_MP_CLEAR_C +#endif + #if defined(BN_MP_REDUCE_IS_2K_C) #define BN_MP_REDUCE_2K_C #define BN_MP_COUNT_BITS_C #endif +#if defined(BN_MP_REDUCE_IS_2K_L_C) +#endif + #if defined(BN_MP_REDUCE_SETUP_C) #define BN_MP_2EXPT_C #define BN_MP_DIV_C @@ -815,6 +843,11 @@ #define BN_MP_TO_UNSIGNED_BIN_C #endif +#if defined(BN_MP_TO_SIGNED_BIN_N_C) + #define BN_MP_SIGNED_BIN_SIZE_C + #define BN_MP_TO_SIGNED_BIN_C +#endif + #if defined(BN_MP_TO_UNSIGNED_BIN_C) #define BN_MP_INIT_COPY_C #define BN_MP_ISZERO_C @@ -822,6 +855,11 @@ #define BN_MP_CLEAR_C #endif +#if defined(BN_MP_TO_UNSIGNED_BIN_N_C) + #define BN_MP_UNSIGNED_BIN_SIZE_C + #define BN_MP_TO_UNSIGNED_BIN_C +#endif + #if defined(BN_MP_TOOM_MUL_C) #define BN_MP_INIT_MULTI_C #define BN_MP_MOD_2D_C @@ -902,10 +940,12 @@ #define BN_MP_INIT_C #define BN_MP_CLEAR_C #define BN_MP_REDUCE_SETUP_C + #define BN_MP_REDUCE_C + #define BN_MP_REDUCE_2K_SETUP_L_C + #define BN_MP_REDUCE_2K_L_C #define BN_MP_MOD_C #define BN_MP_COPY_C #define BN_MP_SQR_C - #define BN_MP_REDUCE_C #define BN_MP_MUL_C #define BN_MP_SET_C #define BN_MP_EXCH_C