Merge pull request #361 from libtom/pack_unpack_buf
add mp_pack/unpack and MP_BUF error
This commit is contained in:
commit
67c099ee8c
@ -113,10 +113,9 @@ mp_err mp_toom_sqr(const mp_int *a, mp_int *b)
|
||||
#ifdef S_MP_REVERSE_C
|
||||
void bn_reverse(unsigned char *s, int len)
|
||||
{
|
||||
if (len < 0) {
|
||||
return MP_VAL;
|
||||
if (len > 0) {
|
||||
s_mp_reverse(s, (size_t)len);
|
||||
}
|
||||
s_mp_reverse(s, (size_t)len);
|
||||
}
|
||||
#endif
|
||||
#ifdef BN_MP_TC_AND_C
|
||||
@ -316,4 +315,18 @@ mp_err mp_toradix(const mp_int *a, char *str, int radix)
|
||||
return mp_to_radix(a, str, SIZE_MAX, NULL, radix);
|
||||
}
|
||||
#endif
|
||||
#ifdef BN_MP_IMPORT_C
|
||||
mp_err mp_import(mp_int *rop, size_t count, int order, size_t size, int endian, size_t nails,
|
||||
const void *op)
|
||||
{
|
||||
return mp_unpack(rop, count, order, size, endian, nails, op);
|
||||
}
|
||||
#endif
|
||||
#ifdef BN_MP_EXPORT_C
|
||||
mp_err mp_export(void *rop, size_t *countp, int order, size_t size,
|
||||
int endian, size_t nails, const mp_int *op)
|
||||
{
|
||||
return mp_pack(rop, SIZE_MAX, countp, order, size, endian, nails, op);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,49 +1,46 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_EXPORT_C
|
||||
#ifdef BN_MP_PACK_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||
/* SPDX-License-Identifier: Unlicense */
|
||||
|
||||
/* based on gmp's mpz_export.
|
||||
* see http://gmplib.org/manual/Integer-Import-and-Export.html
|
||||
*/
|
||||
mp_err mp_export(void *rop, size_t *countp, int order, size_t size,
|
||||
int endian, size_t nails, const mp_int *op)
|
||||
mp_err mp_pack(void *rop, size_t maxcount, size_t *written, mp_order order, size_t size,
|
||||
mp_endian endian, size_t nails, const mp_int *op)
|
||||
{
|
||||
mp_err err;
|
||||
size_t odd_nails, nail_bytes, i, j, bits, count;
|
||||
size_t odd_nails, nail_bytes, i, j, count;
|
||||
unsigned char odd_nail_mask;
|
||||
|
||||
mp_int t;
|
||||
|
||||
count = mp_pack_count(op, nails, size);
|
||||
|
||||
if (count > maxcount) {
|
||||
return MP_BUF;
|
||||
}
|
||||
|
||||
if ((err = mp_init_copy(&t, op)) != MP_OKAY) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if (endian == 0) {
|
||||
union {
|
||||
unsigned int i;
|
||||
char c[4];
|
||||
} lint;
|
||||
lint.i = 0x01020304;
|
||||
|
||||
endian = (lint.c[0] == '\x04') ? -1 : 1;
|
||||
if (endian == MP_NATIVE_ENDIAN) {
|
||||
MP_GET_ENDIANNESS(endian);
|
||||
}
|
||||
|
||||
odd_nails = (nails % 8u);
|
||||
odd_nail_mask = 0xff;
|
||||
for (i = 0; i < odd_nails; ++i) {
|
||||
for (i = 0u; i < odd_nails; ++i) {
|
||||
odd_nail_mask ^= (unsigned char)(1u << (7u - i));
|
||||
}
|
||||
nail_bytes = nails / 8u;
|
||||
|
||||
bits = (size_t)mp_count_bits(&t);
|
||||
count = (bits / ((size * 8u) - nails)) + (((bits % ((size * 8u) - nails)) != 0u) ? 1u : 0u);
|
||||
|
||||
for (i = 0; i < count; ++i) {
|
||||
for (j = 0; j < size; ++j) {
|
||||
for (i = 0u; i < count; ++i) {
|
||||
for (j = 0u; j < size; ++j) {
|
||||
unsigned char *byte = (unsigned char *)rop +
|
||||
(((order == -1) ? i : ((count - 1u) - i)) * size) +
|
||||
((endian == -1) ? j : ((size - 1u) - j));
|
||||
(((order == MP_LSB_FIRST) ? i : ((count - 1u) - i)) * size) +
|
||||
((endian == MP_LITTLE_ENDIAN) ? j : ((size - 1u) - j));
|
||||
|
||||
if (j >= (size - nail_bytes)) {
|
||||
*byte = 0;
|
||||
@ -55,11 +52,12 @@ mp_err mp_export(void *rop, size_t *countp, int order, size_t size,
|
||||
if ((err = mp_div_2d(&t, (j == ((size - nail_bytes) - 1u)) ? (int)(8u - odd_nails) : 8, &t, NULL)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (countp != NULL) {
|
||||
*countp = count;
|
||||
if (written != NULL) {
|
||||
*written = count;
|
||||
}
|
||||
err = MP_OKAY;
|
||||
|
12
bn_mp_pack_count.c
Normal file
12
bn_mp_pack_count.c
Normal file
@ -0,0 +1,12 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_PACK_COUNT_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||
/* SPDX-License-Identifier: Unlicense */
|
||||
|
||||
size_t mp_pack_count(const mp_int *a, size_t nails, size_t size)
|
||||
{
|
||||
size_t bits = (size_t)mp_count_bits(a);
|
||||
return ((bits / ((size * 8u) - nails)) + (((bits % ((size * 8u) - nails)) != 0u) ? 1u : 0u));
|
||||
}
|
||||
|
||||
#endif
|
@ -16,14 +16,11 @@ mp_err mp_to_radix(const mp_int *a, char *str, size_t maxlen, size_t *written, i
|
||||
mp_digit d;
|
||||
char *_s = str;
|
||||
|
||||
|
||||
/* If we want to fill a bucket we need a bucket in the first place. */
|
||||
if (str == NULL) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
/* check range of radix and size*/
|
||||
if ((maxlen < 2u) || (radix < 2) || (radix > 64)) {
|
||||
if (maxlen < 2u) {
|
||||
return MP_BUF;
|
||||
}
|
||||
if ((radix < 2) || (radix > 64)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
@ -57,10 +54,8 @@ mp_err mp_to_radix(const mp_int *a, char *str, size_t maxlen, size_t *written, i
|
||||
while (!MP_IS_ZERO(&t)) {
|
||||
if (--maxlen < 1u) {
|
||||
/* no more room */
|
||||
/* TODO: It could mimic mp_to_radix_n if that is not an error
|
||||
or at least not this error (MP_ITER or a new one?). */
|
||||
err = MP_VAL;
|
||||
break;
|
||||
err = MP_BUF;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if ((err = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
@ -76,6 +71,7 @@ mp_err mp_to_radix(const mp_int *a, char *str, size_t maxlen, size_t *written, i
|
||||
/* append a NULL so the string is properly terminated */
|
||||
*str = '\0';
|
||||
digs++;
|
||||
|
||||
if (written != NULL) {
|
||||
*written = (a->sign == MP_NEG) ? (digs + 1u): digs;
|
||||
}
|
||||
|
@ -8,9 +8,8 @@ mp_err mp_to_sbin(const mp_int *a, unsigned char *buf, size_t maxlen, size_t *wr
|
||||
{
|
||||
mp_err err;
|
||||
if (maxlen == 0u) {
|
||||
return MP_VAL;
|
||||
return MP_BUF;
|
||||
}
|
||||
|
||||
if ((err = mp_to_ubin(a, buf + 1, maxlen - 1u, written)) != MP_OKAY) {
|
||||
return err;
|
||||
}
|
||||
|
@ -6,43 +6,34 @@
|
||||
/* store in unsigned [big endian] format */
|
||||
mp_err mp_to_ubin(const mp_int *a, unsigned char *buf, size_t maxlen, size_t *written)
|
||||
{
|
||||
size_t x;
|
||||
size_t x, count;
|
||||
mp_err err;
|
||||
mp_int t;
|
||||
|
||||
if (buf == NULL) {
|
||||
return MP_MEM;
|
||||
}
|
||||
|
||||
if (maxlen == 0u) {
|
||||
return MP_VAL;
|
||||
count = mp_ubin_size(a);
|
||||
if (count > maxlen) {
|
||||
return MP_BUF;
|
||||
}
|
||||
|
||||
if ((err = mp_init_copy(&t, a)) != MP_OKAY) {
|
||||
return err;
|
||||
}
|
||||
|
||||
x = 0u;
|
||||
while (!MP_IS_ZERO(&t)) {
|
||||
if (maxlen == 0u) {
|
||||
err = MP_VAL;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
maxlen--;
|
||||
for (x = count; x --> 0;) {
|
||||
#ifndef MP_8BIT
|
||||
buf[x++] = (unsigned char)(t.dp[0] & 255u);
|
||||
buf[x] = (unsigned char)(t.dp[0] & 255u);
|
||||
#else
|
||||
buf[x++] = (unsigned char)(t.dp[0] | ((t.dp[1] & 1u) << 7));
|
||||
buf[x] = (unsigned char)(t.dp[0] | ((t.dp[1] & 1u) << 7));
|
||||
#endif
|
||||
if ((err = mp_div_2d(&t, 8, &t, NULL)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
}
|
||||
s_mp_reverse(buf, x);
|
||||
|
||||
if (written != NULL) {
|
||||
*written = x;
|
||||
*written = count;
|
||||
}
|
||||
|
||||
LBL_ERR:
|
||||
mp_clear(&t);
|
||||
return err;
|
||||
|
@ -1,13 +1,13 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_IMPORT_C
|
||||
#ifdef BN_MP_UNPACK_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||
/* SPDX-License-Identifier: Unlicense */
|
||||
|
||||
/* based on gmp's mpz_import.
|
||||
* see http://gmplib.org/manual/Integer-Import-and-Export.html
|
||||
*/
|
||||
mp_err mp_import(mp_int *rop, size_t count, int order, size_t size,
|
||||
int endian, size_t nails, const void *op)
|
||||
mp_err mp_unpack(mp_int *rop, size_t count, mp_order order, size_t size,
|
||||
mp_endian endian, size_t nails, const void *op)
|
||||
{
|
||||
mp_err err;
|
||||
size_t odd_nails, nail_bytes, i, j;
|
||||
@ -15,14 +15,8 @@ mp_err mp_import(mp_int *rop, size_t count, int order, size_t size,
|
||||
|
||||
mp_zero(rop);
|
||||
|
||||
if (endian == 0) {
|
||||
union {
|
||||
unsigned int i;
|
||||
char c[4];
|
||||
} lint;
|
||||
lint.i = 0x01020304;
|
||||
|
||||
endian = (lint.c[0] == '\x04') ? -1 : 1;
|
||||
if (endian == MP_NATIVE_ENDIAN) {
|
||||
MP_GET_ENDIANNESS(endian);
|
||||
}
|
||||
|
||||
odd_nails = (nails % 8u);
|
||||
@ -35,8 +29,8 @@ mp_err mp_import(mp_int *rop, size_t count, int order, size_t size,
|
||||
for (i = 0; i < count; ++i) {
|
||||
for (j = 0; j < (size - nail_bytes); ++j) {
|
||||
unsigned char byte = *((const unsigned char *)op +
|
||||
(((order == 1) ? i : ((count - 1u) - i)) * size) +
|
||||
((endian == 1) ? (j + nail_bytes) : (((size - 1u) - j) - nail_bytes)));
|
||||
(((order == MP_MSB_FIRST) ? i : ((count - 1u) - i)) * size) +
|
||||
((endian == MP_BIG_ENDIAN) ? (j + nail_bytes) : (((size - 1u) - j) - nail_bytes)));
|
||||
|
||||
if ((err = mp_mul_2d(rop, (j == 0u) ? (int)(8u - odd_nails) : 8, rop)) != MP_OKAY) {
|
||||
return err;
|
55
demo/test.c
55
demo/test.c
@ -1260,8 +1260,6 @@ static int test_mp_read_radix(void)
|
||||
if (mp_init_multi(&a, NULL)!= MP_OKAY) goto LTM_ERR;
|
||||
|
||||
if ((err = mp_read_radix(&a, "123456", 10)) != MP_OKAY) goto LTM_ERR;
|
||||
/* Must fail */
|
||||
if ((err = mp_to_radix(&a, NULL, SIZE_MAX, NULL, 10)) != MP_VAL) goto LTM_ERR;
|
||||
|
||||
if ((err = mp_to_radix(&a, buf, SIZE_MAX, &written, 10)) != MP_OKAY) goto LTM_ERR;
|
||||
printf(" '123456' a == %s, length = %zu\n", buf, written);
|
||||
@ -2315,7 +2313,7 @@ static int test_mp_read_write_ubin(void)
|
||||
|
||||
size = mp_ubin_size(&a);
|
||||
printf("mp_to_ubin_size %zu\n", size);
|
||||
buf = MP_MALLOC(sizeof(*buf) * size);
|
||||
buf = malloc(sizeof(*buf) * size);
|
||||
if (buf == NULL) {
|
||||
fprintf(stderr, "test_read_write_binaries (u) failed to allocate %zu bytes\n",
|
||||
sizeof(*buf) * size);
|
||||
@ -2335,9 +2333,7 @@ static int test_mp_read_write_ubin(void)
|
||||
mp_clear_multi(&a, &b, &c, NULL);
|
||||
return EXIT_SUCCESS;
|
||||
LTM_ERR:
|
||||
if (buf != NULL) {
|
||||
free(buf);
|
||||
}
|
||||
free(buf);
|
||||
mp_clear_multi(&a, &b, &c, NULL);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
@ -2358,7 +2354,7 @@ static int test_mp_read_write_sbin(void)
|
||||
|
||||
size = mp_sbin_size(&a);
|
||||
printf("mp_to_sbin_size %zu\n", size);
|
||||
buf = MP_MALLOC(sizeof(*buf) * size);
|
||||
buf = malloc(sizeof(*buf) * size);
|
||||
if (buf == NULL) {
|
||||
fprintf(stderr, "test_read_write_binaries (s) failed to allocate %zu bytes\n",
|
||||
sizeof(*buf) * size);
|
||||
@ -2379,13 +2375,51 @@ static int test_mp_read_write_sbin(void)
|
||||
mp_clear_multi(&a, &b, &c, NULL);
|
||||
return EXIT_SUCCESS;
|
||||
LTM_ERR:
|
||||
if (buf != NULL) {
|
||||
free(buf);
|
||||
}
|
||||
free(buf);
|
||||
mp_clear_multi(&a, &b, &c, NULL);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
static int test_mp_pack_unpack(void)
|
||||
{
|
||||
mp_int a, b;
|
||||
int err;
|
||||
size_t written, count;
|
||||
unsigned char *buf = NULL;
|
||||
|
||||
mp_order order = MP_LSB_FIRST;
|
||||
mp_endian endianess = MP_NATIVE_ENDIAN;
|
||||
|
||||
if ((err = mp_init_multi(&a, &b, NULL)) != MP_OKAY) goto LTM_ERR;
|
||||
if ((err = mp_rand(&a, 15)) != MP_OKAY) goto LTM_ERR;
|
||||
|
||||
count = mp_pack_count(&a, 0, 1);
|
||||
|
||||
buf = malloc(count);
|
||||
if (buf == NULL) {
|
||||
fprintf(stderr, "test_pack_unpack failed to allocate\n");
|
||||
goto LTM_ERR;
|
||||
}
|
||||
|
||||
if ((err = mp_pack((void *)buf, count, &written, order, 1,
|
||||
endianess, 0, &a)) != MP_OKAY) goto LTM_ERR;
|
||||
if ((err = mp_unpack(&b, count, order, 1,
|
||||
endianess, 0, (const void *)buf)) != MP_OKAY) goto LTM_ERR;
|
||||
|
||||
if (mp_cmp(&a, &b) != MP_EQ) {
|
||||
fprintf(stderr, "pack/unpack cycle failed\n");
|
||||
goto LTM_ERR;
|
||||
}
|
||||
|
||||
free(buf);
|
||||
mp_clear_multi(&a, &b, NULL);
|
||||
return EXIT_SUCCESS;
|
||||
LTM_ERR:
|
||||
free(buf);
|
||||
mp_clear_multi(&a, &b, NULL);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
static int unit_tests(int argc, char **argv)
|
||||
{
|
||||
static const struct {
|
||||
@ -2405,6 +2439,7 @@ static int unit_tests(int argc, char **argv)
|
||||
T1(mp_decr, MP_DECR),
|
||||
T1(mp_div_3, MP_DIV_3),
|
||||
T1(mp_dr_reduce, MP_DR_REDUCE),
|
||||
T2(mp_pack_unpack,MP_PACK, MP_UNPACK),
|
||||
T2(mp_fread_fwrite, MP_FREAD, MP_FWRITE),
|
||||
T1(mp_get_u32, MP_GET_I32),
|
||||
T1(mp_get_u64, MP_GET_I64),
|
||||
|
29
doc/bn.tex
29
doc/bn.tex
@ -2179,11 +2179,32 @@ They operate essentially the same as the unsigned copies except they prefix the
|
||||
byte depending on the sign. If the sign is zpos (e.g. not negative) the prefix is zero, otherwise the prefix
|
||||
is non--zero.
|
||||
|
||||
The two functions \texttt{mp\_import} and \texttt{mp\_export} implement the corresponding GMP functions as described at \url{http://gmplib.org/manual/Integer-Import-and-Export.html}.
|
||||
\index{mp\_import} \index{mp\_export}
|
||||
The two functions \texttt{mp\_unpack} (get your gifts out of the box, import binary data) and \texttt{mp\_pack} (put your gifts into the box, export binary data) implement the similarly working GMP functions as described at \url{http://gmplib.org/manual/Integer-Import-and-Export.html} with the exception that \texttt{mp\_pack} will not allocate memory if \texttt{rop} is \texttt{NULL}.
|
||||
\index{mp\_unpack} \index{mp\_pack}
|
||||
\begin{alltt}
|
||||
int mp_import(mp_int *rop, size_t count, int order, size_t size, int endian, size_t nails, const void *op);
|
||||
int mp_export(void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, const mp_int *op);
|
||||
int mp_unpack(mp_int *rop, size_t count, mp_order order, size_t size,
|
||||
mp_endian endian, size_t nails, const void *op, size_t maxsize);
|
||||
int mp_pack(void *rop, size_t *countp, mp_order order, size_t size,
|
||||
mp_endian endian, size_t nails, const mp_int *op);
|
||||
\end{alltt}
|
||||
The function \texttt{mp\_pack} has the additional variable \texttt{maxsize} which must hold the size of the buffer \texttt{rop} in bytes. Use
|
||||
\begin{alltt}
|
||||
/* Parameters "nails" and "size" are the same as in mp_pack */
|
||||
size_t mp_pack_size(mp_int *a, size_t nails, size_t size);
|
||||
\end{alltt}
|
||||
To get the size in bytes necessary to be put in \texttt{maxsize}).
|
||||
|
||||
To enhance the readability of your code, the following enums have been wrought for your convenience.
|
||||
\begin{alltt}
|
||||
typedef enum {
|
||||
MP_LSB_FIRST = -1,
|
||||
MP_MSB_FIRST = 1
|
||||
} mp_order;
|
||||
typedef enum {
|
||||
MP_LITTLE_ENDIAN = -1,
|
||||
MP_NATIVE_ENDIAN = 0,
|
||||
MP_BIG_ENDIAN = 1
|
||||
} mp_endian;
|
||||
\end{alltt}
|
||||
|
||||
\chapter{Algebraic Functions}
|
||||
|
@ -428,10 +428,6 @@
|
||||
RelativePath="bn_mp_exch.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_export.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_expt_u32.c"
|
||||
>
|
||||
@ -508,10 +504,6 @@
|
||||
RelativePath="bn_mp_ilogb.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_import.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_incr.c"
|
||||
>
|
||||
@ -648,6 +640,14 @@
|
||||
RelativePath="bn_mp_or.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_pack.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_pack_count.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_prime_fermat.c"
|
||||
>
|
||||
@ -832,6 +832,10 @@
|
||||
RelativePath="bn_mp_ubin_size.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_unpack.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_xor.c"
|
||||
>
|
||||
|
47
makefile
47
makefile
@ -30,30 +30,31 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o \
|
||||
bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o \
|
||||
bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o \
|
||||
bn_mp_init_copy.o bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o \
|
||||
bn_mp_init_set.o bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o \
|
||||
bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \
|
||||
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o bn_mp_fread.o \
|
||||
bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o \
|
||||
bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o \
|
||||
bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o \
|
||||
bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_set.o \
|
||||
bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o \
|
||||
bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o \
|
||||
bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o \
|
||||
bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o bn_mp_set_double.o \
|
||||
bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o bn_mp_set_u64.o \
|
||||
bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o \
|
||||
bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_radix.o bn_mp_to_sbin.o \
|
||||
bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o \
|
||||
bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o \
|
||||
bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o \
|
||||
bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o \
|
||||
bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o \
|
||||
bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_or.o bn_mp_pack.o bn_mp_pack_count.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o \
|
||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o \
|
||||
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o \
|
||||
bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_radix.o bn_mp_to_sbin.o bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_unpack.o bn_mp_xor.o bn_mp_zero.o \
|
||||
bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
#END_INS
|
||||
|
||||
|
@ -33,30 +33,31 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o \
|
||||
bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o \
|
||||
bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o \
|
||||
bn_mp_init_copy.o bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o \
|
||||
bn_mp_init_set.o bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o \
|
||||
bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \
|
||||
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o bn_mp_fread.o \
|
||||
bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o \
|
||||
bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o \
|
||||
bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o \
|
||||
bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_set.o \
|
||||
bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o \
|
||||
bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o \
|
||||
bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o \
|
||||
bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o bn_mp_set_double.o \
|
||||
bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o bn_mp_set_u64.o \
|
||||
bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o \
|
||||
bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_radix.o bn_mp_to_sbin.o \
|
||||
bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o \
|
||||
bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o \
|
||||
bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o \
|
||||
bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o \
|
||||
bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o \
|
||||
bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_or.o bn_mp_pack.o bn_mp_pack_count.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o \
|
||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o \
|
||||
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o \
|
||||
bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_radix.o bn_mp_to_sbin.o bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_unpack.o bn_mp_xor.o bn_mp_zero.o \
|
||||
bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
HEADERS_PUB=tommath.h
|
||||
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)
|
||||
|
@ -25,30 +25,31 @@ OBJECTS=bn_cutoffs.obj bn_deprecated.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add
|
||||
bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj bn_mp_cmp_mag.obj \
|
||||
bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_decr.obj bn_mp_div.obj bn_mp_div_2.obj \
|
||||
bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj bn_mp_dr_setup.obj \
|
||||
bn_mp_error_to_string.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_u32.obj bn_mp_exptmod.obj bn_mp_exteuclid.obj \
|
||||
bn_mp_fread.obj bn_mp_from_sbin.obj bn_mp_from_ubin.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_double.obj \
|
||||
bn_mp_get_i32.obj bn_mp_get_i64.obj bn_mp_get_l.obj bn_mp_get_ll.obj bn_mp_get_mag_u32.obj bn_mp_get_mag_u64.obj \
|
||||
bn_mp_get_mag_ul.obj bn_mp_get_mag_ull.obj bn_mp_grow.obj bn_mp_ilogb.obj bn_mp_import.obj bn_mp_incr.obj bn_mp_init.obj \
|
||||
bn_mp_init_copy.obj bn_mp_init_i32.obj bn_mp_init_i64.obj bn_mp_init_l.obj bn_mp_init_ll.obj bn_mp_init_multi.obj \
|
||||
bn_mp_init_set.obj bn_mp_init_size.obj bn_mp_init_u32.obj bn_mp_init_u64.obj bn_mp_init_ul.obj bn_mp_init_ull.obj \
|
||||
bn_mp_invmod.obj bn_mp_is_square.obj bn_mp_iseven.obj bn_mp_isodd.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj \
|
||||
bn_mp_mod.obj bn_mp_mod_2d.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \
|
||||
bn_mp_error_to_string.obj bn_mp_exch.obj bn_mp_expt_u32.obj bn_mp_exptmod.obj bn_mp_exteuclid.obj bn_mp_fread.obj \
|
||||
bn_mp_from_sbin.obj bn_mp_from_ubin.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_double.obj bn_mp_get_i32.obj \
|
||||
bn_mp_get_i64.obj bn_mp_get_l.obj bn_mp_get_ll.obj bn_mp_get_mag_u32.obj bn_mp_get_mag_u64.obj bn_mp_get_mag_ul.obj \
|
||||
bn_mp_get_mag_ull.obj bn_mp_grow.obj bn_mp_ilogb.obj bn_mp_incr.obj bn_mp_init.obj bn_mp_init_copy.obj \
|
||||
bn_mp_init_i32.obj bn_mp_init_i64.obj bn_mp_init_l.obj bn_mp_init_ll.obj bn_mp_init_multi.obj bn_mp_init_set.obj \
|
||||
bn_mp_init_size.obj bn_mp_init_u32.obj bn_mp_init_u64.obj bn_mp_init_ul.obj bn_mp_init_ull.obj bn_mp_invmod.obj \
|
||||
bn_mp_is_square.obj bn_mp_iseven.obj bn_mp_isodd.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod.obj \
|
||||
bn_mp_mod_2d.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \
|
||||
bn_mp_montgomery_setup.obj bn_mp_mul.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_neg.obj \
|
||||
bn_mp_or.obj bn_mp_prime_fermat.obj bn_mp_prime_frobenius_underwood.obj bn_mp_prime_is_prime.obj \
|
||||
bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj bn_mp_prime_rabin_miller_trials.obj \
|
||||
bn_mp_prime_rand.obj bn_mp_prime_strong_lucas_selfridge.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
|
||||
bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_reduce.obj bn_mp_reduce_2k.obj bn_mp_reduce_2k_l.obj \
|
||||
bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj \
|
||||
bn_mp_reduce_setup.obj bn_mp_root_u32.obj bn_mp_rshd.obj bn_mp_sbin_size.obj bn_mp_set.obj bn_mp_set_double.obj \
|
||||
bn_mp_set_i32.obj bn_mp_set_i64.obj bn_mp_set_l.obj bn_mp_set_ll.obj bn_mp_set_u32.obj bn_mp_set_u64.obj \
|
||||
bn_mp_set_ul.obj bn_mp_set_ull.obj bn_mp_shrink.obj bn_mp_signed_rsh.obj bn_mp_sqr.obj bn_mp_sqrmod.obj bn_mp_sqrt.obj \
|
||||
bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_to_radix.obj bn_mp_to_sbin.obj \
|
||||
bn_mp_to_ubin.obj bn_mp_ubin_size.obj bn_mp_xor.obj bn_mp_zero.obj bn_prime_tab.obj bn_s_mp_add.obj \
|
||||
bn_s_mp_balance_mul.obj bn_s_mp_exptmod.obj bn_s_mp_exptmod_fast.obj bn_s_mp_get_bit.obj bn_s_mp_invmod_fast.obj \
|
||||
bn_s_mp_invmod_slow.obj bn_s_mp_karatsuba_mul.obj bn_s_mp_karatsuba_sqr.obj bn_s_mp_montgomery_reduce_fast.obj \
|
||||
bn_s_mp_mul_digs.obj bn_s_mp_mul_digs_fast.obj bn_s_mp_mul_high_digs.obj bn_s_mp_mul_high_digs_fast.obj \
|
||||
bn_s_mp_prime_is_divisible.obj bn_s_mp_rand_jenkins.obj bn_s_mp_rand_platform.obj bn_s_mp_reverse.obj \
|
||||
bn_s_mp_sqr.obj bn_s_mp_sqr_fast.obj bn_s_mp_sub.obj bn_s_mp_toom_mul.obj bn_s_mp_toom_sqr.obj
|
||||
bn_mp_or.obj bn_mp_pack.obj bn_mp_pack_count.obj bn_mp_prime_fermat.obj bn_mp_prime_frobenius_underwood.obj \
|
||||
bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \
|
||||
bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_rand.obj bn_mp_prime_strong_lucas_selfridge.obj \
|
||||
bn_mp_radix_size.obj bn_mp_radix_smap.obj bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_reduce.obj bn_mp_reduce_2k.obj \
|
||||
bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj bn_mp_reduce_is_2k.obj \
|
||||
bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_root_u32.obj bn_mp_rshd.obj bn_mp_sbin_size.obj bn_mp_set.obj \
|
||||
bn_mp_set_double.obj bn_mp_set_i32.obj bn_mp_set_i64.obj bn_mp_set_l.obj bn_mp_set_ll.obj bn_mp_set_u32.obj \
|
||||
bn_mp_set_u64.obj bn_mp_set_ul.obj bn_mp_set_ull.obj bn_mp_shrink.obj bn_mp_signed_rsh.obj bn_mp_sqr.obj \
|
||||
bn_mp_sqrmod.obj bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj \
|
||||
bn_mp_to_radix.obj bn_mp_to_sbin.obj bn_mp_to_ubin.obj bn_mp_ubin_size.obj bn_mp_unpack.obj bn_mp_xor.obj bn_mp_zero.obj \
|
||||
bn_prime_tab.obj bn_s_mp_add.obj bn_s_mp_balance_mul.obj bn_s_mp_exptmod.obj bn_s_mp_exptmod_fast.obj \
|
||||
bn_s_mp_get_bit.obj bn_s_mp_invmod_fast.obj bn_s_mp_invmod_slow.obj bn_s_mp_karatsuba_mul.obj \
|
||||
bn_s_mp_karatsuba_sqr.obj bn_s_mp_montgomery_reduce_fast.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_digs_fast.obj \
|
||||
bn_s_mp_mul_high_digs.obj bn_s_mp_mul_high_digs_fast.obj bn_s_mp_prime_is_divisible.obj \
|
||||
bn_s_mp_rand_jenkins.obj bn_s_mp_rand_platform.obj bn_s_mp_reverse.obj bn_s_mp_sqr.obj bn_s_mp_sqr_fast.obj \
|
||||
bn_s_mp_sub.obj bn_s_mp_toom_mul.obj bn_s_mp_toom_sqr.obj
|
||||
|
||||
HEADERS_PUB=tommath.h
|
||||
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)
|
||||
|
@ -27,30 +27,31 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o \
|
||||
bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o \
|
||||
bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o \
|
||||
bn_mp_init_copy.o bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o \
|
||||
bn_mp_init_set.o bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o \
|
||||
bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \
|
||||
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o bn_mp_fread.o \
|
||||
bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o \
|
||||
bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o \
|
||||
bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o \
|
||||
bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_set.o \
|
||||
bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o \
|
||||
bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o \
|
||||
bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o \
|
||||
bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o bn_mp_set_double.o \
|
||||
bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o bn_mp_set_u64.o \
|
||||
bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o \
|
||||
bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_radix.o bn_mp_to_sbin.o \
|
||||
bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o \
|
||||
bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o \
|
||||
bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o \
|
||||
bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o \
|
||||
bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o \
|
||||
bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_or.o bn_mp_pack.o bn_mp_pack_count.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o \
|
||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o \
|
||||
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o \
|
||||
bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_radix.o bn_mp_to_sbin.o bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_unpack.o bn_mp_xor.o bn_mp_zero.o \
|
||||
bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
#END_INS
|
||||
|
||||
|
@ -34,30 +34,31 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o \
|
||||
bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o \
|
||||
bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o \
|
||||
bn_mp_init_copy.o bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o \
|
||||
bn_mp_init_set.o bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o \
|
||||
bn_mp_invmod.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \
|
||||
bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o bn_mp_fread.o \
|
||||
bn_mp_from_sbin.o bn_mp_from_ubin.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o \
|
||||
bn_mp_get_i64.o bn_mp_get_l.o bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o \
|
||||
bn_mp_get_mag_ull.o bn_mp_grow.o bn_mp_ilogb.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o \
|
||||
bn_mp_init_i32.o bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_set.o \
|
||||
bn_mp_init_size.o bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o \
|
||||
bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o \
|
||||
bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o \
|
||||
bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o bn_mp_set_double.o \
|
||||
bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o bn_mp_set_u64.o \
|
||||
bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o \
|
||||
bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_to_radix.o bn_mp_to_sbin.o \
|
||||
bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o \
|
||||
bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o \
|
||||
bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o \
|
||||
bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o \
|
||||
bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o \
|
||||
bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_or.o bn_mp_pack.o bn_mp_pack_count.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_reduce.o bn_mp_reduce_2k.o \
|
||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o \
|
||||
bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o bn_mp_sbin_size.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_rsh.o bn_mp_sqr.o \
|
||||
bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_radix.o bn_mp_to_sbin.o bn_mp_to_ubin.o bn_mp_ubin_size.o bn_mp_unpack.o bn_mp_xor.o bn_mp_zero.o \
|
||||
bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
HEADERS_PUB=tommath.h
|
||||
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)
|
||||
|
@ -33,7 +33,6 @@ EXPORTS
|
||||
mp_dr_setup
|
||||
mp_error_to_string
|
||||
mp_exch
|
||||
mp_export
|
||||
mp_expt_u32
|
||||
mp_exptmod
|
||||
mp_exteuclid
|
||||
@ -56,7 +55,6 @@ EXPORTS
|
||||
mp_get_mag_ull
|
||||
mp_grow
|
||||
mp_ilogb
|
||||
mp_import
|
||||
mp_incr
|
||||
mp_init
|
||||
mp_init_copy
|
||||
@ -92,6 +90,8 @@ EXPORTS
|
||||
mp_mulmod
|
||||
mp_neg
|
||||
mp_or
|
||||
mp_pack
|
||||
mp_pack_count
|
||||
mp_prime_fermat
|
||||
mp_prime_frobenius_underwood
|
||||
mp_prime_is_prime
|
||||
@ -140,5 +140,6 @@ EXPORTS
|
||||
mp_to_sbin
|
||||
mp_to_ubin
|
||||
mp_ubin_size
|
||||
mp_unpack
|
||||
mp_xor
|
||||
mp_zero
|
||||
|
65
tommath.h
65
tommath.h
@ -117,25 +117,35 @@ typedef uint64_t private_mp_word;
|
||||
|
||||
#ifdef MP_USE_ENUMS
|
||||
typedef enum {
|
||||
MP_ZPOS = 0,
|
||||
MP_NEG = 1
|
||||
MP_ZPOS = 0, /* positive */
|
||||
MP_NEG = 1 /* negative */
|
||||
} mp_sign;
|
||||
typedef enum {
|
||||
MP_LT = -1,
|
||||
MP_EQ = 0,
|
||||
MP_GT = 1
|
||||
MP_LT = -1, /* less than */
|
||||
MP_EQ = 0, /* equal */
|
||||
MP_GT = 1 /* greater than */
|
||||
} mp_ord;
|
||||
typedef enum {
|
||||
MP_NO = 0,
|
||||
MP_YES = 1
|
||||
} mp_bool;
|
||||
typedef enum {
|
||||
MP_OKAY = 0,
|
||||
MP_ERR = -1,
|
||||
MP_MEM = -2,
|
||||
MP_VAL = -3,
|
||||
MP_ITER = -4
|
||||
MP_OKAY = 0, /* no error */
|
||||
MP_ERR = -1, /* unknown error */
|
||||
MP_MEM = -2, /* out of mem */
|
||||
MP_VAL = -3, /* invalid input */
|
||||
MP_ITER = -4, /* maximum iterations reached */
|
||||
MP_BUF = -5, /* buffer overflow, supplied buffer too small */
|
||||
} mp_err;
|
||||
typedef enum {
|
||||
MP_LSB_FIRST = -1,
|
||||
MP_MSB_FIRST = 1
|
||||
} mp_order;
|
||||
typedef enum {
|
||||
MP_LITTLE_ENDIAN = -1,
|
||||
MP_NATIVE_ENDIAN = 0,
|
||||
MP_BIG_ENDIAN = 1
|
||||
} mp_endian;
|
||||
#else
|
||||
typedef int mp_sign;
|
||||
#define MP_ZPOS 0 /* positive integer */
|
||||
@ -145,15 +155,23 @@ typedef int mp_ord;
|
||||
#define MP_EQ 0 /* equal to */
|
||||
#define MP_GT 1 /* greater than */
|
||||
typedef int mp_bool;
|
||||
#define MP_YES 1 /* yes response */
|
||||
#define MP_NO 0 /* no response */
|
||||
#define MP_YES 1
|
||||
#define MP_NO 0
|
||||
typedef int mp_err;
|
||||
#define MP_OKAY 0 /* ok result */
|
||||
#define MP_OKAY 0 /* no error */
|
||||
#define MP_ERR -1 /* unknown error */
|
||||
#define MP_MEM -2 /* out of mem */
|
||||
#define MP_VAL -3 /* invalid input */
|
||||
#define MP_RANGE (MP_DEPRECATED_PRAGMA("MP_RANGE has been deprecated in favor of MP_VAL") MP_VAL)
|
||||
#define MP_ITER -4 /* Max. iterations reached */
|
||||
#define MP_ITER -4 /* maximum iterations reached */
|
||||
#define MP_BUF -5 /* buffer overflow, supplied buffer too small */
|
||||
typedef int mp_order;
|
||||
#define MP_LSB_FIRST -1
|
||||
#define MP_MSB_FIRST 1
|
||||
typedef int mp_endian;
|
||||
#define MP_LITTLE_ENDIAN -1
|
||||
#define MP_NATIVE_ENDIAN 0
|
||||
#define MP_BIG_ENDIAN 1
|
||||
#endif
|
||||
|
||||
/* tunable cutoffs */
|
||||
@ -351,11 +369,24 @@ mp_err mp_init_copy(mp_int *a, const mp_int *b) MP_WUR;
|
||||
/* trim unused digits */
|
||||
void mp_clamp(mp_int *a);
|
||||
|
||||
/* import binary data */
|
||||
mp_err mp_import(mp_int *rop, size_t count, int order, size_t size, int endian, size_t nails, const void *op) MP_WUR;
|
||||
|
||||
/* export binary data */
|
||||
mp_err mp_export(void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, const mp_int *op) MP_WUR;
|
||||
MP_DEPRECATED(mp_pack) mp_err mp_export(void *rop, size_t *countp, int order, size_t size,
|
||||
int endian, size_t nails, const mp_int *op) MP_WUR;
|
||||
|
||||
/* import binary data */
|
||||
MP_DEPRECATED(mp_unpack) mp_err mp_import(mp_int *rop, size_t count, int order,
|
||||
size_t size, int endian, size_t nails,
|
||||
const void *op) MP_WUR;
|
||||
|
||||
/* unpack binary data */
|
||||
mp_err mp_unpack(mp_int *rop, size_t count, mp_order order, size_t size, mp_endian endian,
|
||||
size_t nails, const void *op) MP_WUR;
|
||||
|
||||
/* pack binary data */
|
||||
size_t mp_pack_count(const mp_int *a, size_t nails, size_t size) MP_WUR;
|
||||
mp_err mp_pack(void *rop, size_t maxcount, size_t *writtencount, mp_order order, size_t size, mp_endian endian,
|
||||
size_t nails, const mp_int *op) MP_WUR;
|
||||
|
||||
/* ---> digit manipulation <--- */
|
||||
|
||||
|
@ -40,7 +40,6 @@
|
||||
# define BN_MP_DR_SETUP_C
|
||||
# define BN_MP_ERROR_TO_STRING_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_EXPORT_C
|
||||
# define BN_MP_EXPT_U32_C
|
||||
# define BN_MP_EXPTMOD_C
|
||||
# define BN_MP_EXTEUCLID_C
|
||||
@ -60,7 +59,6 @@
|
||||
# define BN_MP_GET_MAG_ULL_C
|
||||
# define BN_MP_GROW_C
|
||||
# define BN_MP_ILOGB_C
|
||||
# define BN_MP_IMPORT_C
|
||||
# define BN_MP_INCR_C
|
||||
# define BN_MP_INIT_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
@ -95,6 +93,8 @@
|
||||
# define BN_MP_MULMOD_C
|
||||
# define BN_MP_NEG_C
|
||||
# define BN_MP_OR_C
|
||||
# define BN_MP_PACK_C
|
||||
# define BN_MP_PACK_COUNT_C
|
||||
# define BN_MP_PRIME_FERMAT_C
|
||||
# define BN_MP_PRIME_FROBENIUS_UNDERWOOD_C
|
||||
# define BN_MP_PRIME_IS_PRIME_C
|
||||
@ -141,6 +141,7 @@
|
||||
# define BN_MP_TO_SBIN_C
|
||||
# define BN_MP_TO_UBIN_C
|
||||
# define BN_MP_UBIN_SIZE_C
|
||||
# define BN_MP_UNPACK_C
|
||||
# define BN_MP_XOR_C
|
||||
# define BN_MP_ZERO_C
|
||||
# define BN_PRIME_TAB_C
|
||||
@ -181,6 +182,7 @@
|
||||
# define BN_MP_AND_C
|
||||
# define BN_MP_BALANCE_MUL_C
|
||||
# define BN_MP_CMP_D_C
|
||||
# define BN_MP_EXPORT_C
|
||||
# define BN_MP_EXPTMOD_FAST_C
|
||||
# define BN_MP_EXPT_D_C
|
||||
# define BN_MP_EXPT_D_EX_C
|
||||
@ -194,6 +196,7 @@
|
||||
# define BN_MP_GET_MAG_U32_C
|
||||
# define BN_MP_GET_MAG_ULL_C
|
||||
# define BN_MP_GET_MAG_UL_C
|
||||
# define BN_MP_IMPORT_C
|
||||
# define BN_MP_INIT_SET_INT_C
|
||||
# define BN_MP_INIT_U32_C
|
||||
# define BN_MP_INVMOD_SLOW_C
|
||||
@ -204,6 +207,7 @@
|
||||
# define BN_MP_N_ROOT_C
|
||||
# define BN_MP_N_ROOT_EX_C
|
||||
# define BN_MP_OR_C
|
||||
# define BN_MP_PACK_C
|
||||
# define BN_MP_PRIME_IS_DIVISIBLE_C
|
||||
# define BN_MP_PRIME_RANDOM_EX_C
|
||||
# define BN_MP_RAND_DIGIT_C
|
||||
@ -232,6 +236,7 @@
|
||||
# define BN_MP_TO_UNSIGNED_BIN_C
|
||||
# define BN_MP_TO_UNSIGNED_BIN_N_C
|
||||
# define BN_MP_UBIN_SIZE_C
|
||||
# define BN_MP_UNPACK_C
|
||||
# define BN_MP_UNSIGNED_BIN_SIZE_C
|
||||
# define BN_MP_XOR_C
|
||||
# define BN_S_MP_BALANCE_MUL_C
|
||||
@ -398,13 +403,6 @@
|
||||
#if defined(BN_MP_EXCH_C)
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_EXPORT_C)
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_EXPT_U32_C)
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
@ -521,12 +519,6 @@
|
||||
# define BN_MP_ZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_IMPORT_C)
|
||||
# define BN_MP_CLAMP_C
|
||||
# define BN_MP_MUL_2D_C
|
||||
# define BN_MP_ZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_INCR_C)
|
||||
# define BN_MP_ADD_D_C
|
||||
# define BN_MP_DECR_C
|
||||
@ -721,6 +713,17 @@
|
||||
# define BN_MP_GROW_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_PACK_C)
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_PACK_COUNT_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_PACK_COUNT_C)
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_PRIME_FERMAT_C)
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_CMP_C
|
||||
@ -1077,13 +1080,19 @@
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_S_MP_REVERSE_C
|
||||
# define BN_MP_UBIN_SIZE_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_UBIN_SIZE_C)
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_UNPACK_C)
|
||||
# define BN_MP_CLAMP_C
|
||||
# define BN_MP_MUL_2D_C
|
||||
# define BN_MP_ZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_XOR_C)
|
||||
# define BN_MP_CLAMP_C
|
||||
# define BN_MP_GROW_C
|
||||
|
@ -236,6 +236,13 @@ MP_DEPRECATED(s_mp_toom_mul) mp_err mp_toom_mul(const mp_int *a, const mp_int *b
|
||||
MP_DEPRECATED(s_mp_toom_sqr) mp_err mp_toom_sqr(const mp_int *a, mp_int *b);
|
||||
MP_DEPRECATED(s_mp_reverse) void bn_reverse(unsigned char *s, int len);
|
||||
|
||||
#define MP_GET_ENDIANNESS(x) \
|
||||
do{\
|
||||
int16_t n = 0x1; \
|
||||
char *p = (char *)&n; \
|
||||
x = (p[0] == 1) ? MP_LITTLE_ENDIAN : MP_BIG_ENDIAN; \
|
||||
} while (0)
|
||||
|
||||
/* code-generating macros */
|
||||
#define MP_SET_UNSIGNED(name, type) \
|
||||
void name(mp_int * a, type b) \
|
||||
|
Loading…
Reference in New Issue
Block a user