shorter headers
This commit is contained in:
parent
70a30ae7a7
commit
ff56140462
13
bn_error.c
13
bn_error.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_ERROR_C
|
#ifdef BN_ERROR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
int code;
|
int code;
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_FAST_MP_INVMOD_C
|
#ifdef BN_FAST_MP_INVMOD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes the modular inverse via binary extended euclidean algorithm,
|
/* computes the modular inverse via binary extended euclidean algorithm,
|
||||||
* that is c = 1/a mod b
|
* that is c = 1/a mod b
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C
|
#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes xR**-1 == x (mod N) via Montgomery Reduction
|
/* computes xR**-1 == x (mod N) via Montgomery Reduction
|
||||||
*
|
*
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_FAST_S_MP_MUL_DIGS_C
|
#ifdef BN_FAST_S_MP_MUL_DIGS_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Fast (comba) multiplier
|
/* Fast (comba) multiplier
|
||||||
*
|
*
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C
|
#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* this is a modified version of fast_s_mul_digs that only produces
|
/* this is a modified version of fast_s_mul_digs that only produces
|
||||||
* output digits *above* digs. See the comments for fast_s_mul_digs
|
* output digits *above* digs. See the comments for fast_s_mul_digs
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_FAST_S_MP_SQR_C
|
#ifdef BN_FAST_S_MP_SQR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* the jist of squaring...
|
/* the jist of squaring...
|
||||||
* you do like mult except the offset of the tmpx [one that
|
* you do like mult except the offset of the tmpx [one that
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_2EXPT_C
|
#ifdef BN_MP_2EXPT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes a = 2**b
|
/* computes a = 2**b
|
||||||
*
|
*
|
||||||
|
13
bn_mp_abs.c
13
bn_mp_abs.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_ABS_C
|
#ifdef BN_MP_ABS_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* b = |a|
|
/* b = |a|
|
||||||
*
|
*
|
||||||
|
13
bn_mp_add.c
13
bn_mp_add.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_ADD_C
|
#ifdef BN_MP_ADD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* high level addition (handles signs) */
|
/* high level addition (handles signs) */
|
||||||
int mp_add(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_add(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_ADD_D_C
|
#ifdef BN_MP_ADD_D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* single digit addition */
|
/* single digit addition */
|
||||||
int mp_add_d(const mp_int *a, mp_digit b, mp_int *c)
|
int mp_add_d(const mp_int *a, mp_digit b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_ADDMOD_C
|
#ifdef BN_MP_ADDMOD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* d = a + b (mod c) */
|
/* d = a + b (mod c) */
|
||||||
int mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
int mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
||||||
|
13
bn_mp_and.c
13
bn_mp_and.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_AND_C
|
#ifdef BN_MP_AND_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* AND two ints together */
|
/* AND two ints together */
|
||||||
int mp_and(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_and(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CLAMP_C
|
#ifdef BN_MP_CLAMP_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* trim unused digits
|
/* trim unused digits
|
||||||
*
|
*
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CLEAR_C
|
#ifdef BN_MP_CLEAR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* clear one (frees) */
|
/* clear one (frees) */
|
||||||
void mp_clear(mp_int *a)
|
void mp_clear(mp_int *a)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CLEAR_MULTI_C
|
#ifdef BN_MP_CLEAR_MULTI_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
13
bn_mp_cmp.c
13
bn_mp_cmp.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CMP_C
|
#ifdef BN_MP_CMP_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* compare two ints (signed)*/
|
/* compare two ints (signed)*/
|
||||||
int mp_cmp(const mp_int *a, const mp_int *b)
|
int mp_cmp(const mp_int *a, const mp_int *b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CMP_D_C
|
#ifdef BN_MP_CMP_D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* compare a digit */
|
/* compare a digit */
|
||||||
int mp_cmp_d(const mp_int *a, mp_digit b)
|
int mp_cmp_d(const mp_int *a, mp_digit b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CMP_MAG_C
|
#ifdef BN_MP_CMP_MAG_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* compare maginitude of two ints (unsigned) */
|
/* compare maginitude of two ints (unsigned) */
|
||||||
int mp_cmp_mag(const mp_int *a, const mp_int *b)
|
int mp_cmp_mag(const mp_int *a, const mp_int *b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_CNT_LSB_C
|
#ifdef BN_MP_CNT_LSB_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
static const int lnz[16] = {
|
static const int lnz[16] = {
|
||||||
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
|
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_COMPLEMENT_C
|
#ifdef BN_MP_COMPLEMENT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* b = ~a */
|
/* b = ~a */
|
||||||
int mp_complement(const mp_int *a, mp_int *b)
|
int mp_complement(const mp_int *a, mp_int *b)
|
||||||
|
13
bn_mp_copy.c
13
bn_mp_copy.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_COPY_C
|
#ifdef BN_MP_COPY_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* copy, b = a */
|
/* copy, b = a */
|
||||||
int mp_copy(const mp_int *a, mp_int *b)
|
int mp_copy(const mp_int *a, mp_int *b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_COUNT_BITS_C
|
#ifdef BN_MP_COUNT_BITS_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* returns the number of bits in an int */
|
/* returns the number of bits in an int */
|
||||||
int mp_count_bits(const mp_int *a)
|
int mp_count_bits(const mp_int *a)
|
||||||
|
14
bn_mp_decr.c
14
bn_mp_decr.c
@ -1,17 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DECR_C
|
#ifdef BN_MP_DECR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Decrement "a" by one like "a--". Changes input! */
|
/* Decrement "a" by one like "a--". Changes input! */
|
||||||
int mp_decr(mp_int *a)
|
int mp_decr(mp_int *a)
|
||||||
|
13
bn_mp_div.c
13
bn_mp_div.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DIV_C
|
#ifdef BN_MP_DIV_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef BN_MP_DIV_SMALL
|
#ifdef BN_MP_DIV_SMALL
|
||||||
|
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DIV_2_C
|
#ifdef BN_MP_DIV_2_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* b = a/2 */
|
/* b = a/2 */
|
||||||
int mp_div_2(const mp_int *a, mp_int *b)
|
int mp_div_2(const mp_int *a, mp_int *b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DIV_2D_C
|
#ifdef BN_MP_DIV_2D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* shift right by a certain bit count (store quotient in c, optional remainder in d) */
|
/* shift right by a certain bit count (store quotient in c, optional remainder in d) */
|
||||||
int mp_div_2d(const mp_int *a, int b, mp_int *c, mp_int *d)
|
int mp_div_2d(const mp_int *a, int b, mp_int *c, mp_int *d)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DIV_3_C
|
#ifdef BN_MP_DIV_3_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* divide by three (based on routine from MPI and the GMP manual) */
|
/* divide by three (based on routine from MPI and the GMP manual) */
|
||||||
int mp_div_3(const mp_int *a, mp_int *c, mp_digit *d)
|
int mp_div_3(const mp_int *a, mp_int *c, mp_digit *d)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DIV_D_C
|
#ifdef BN_MP_DIV_D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int s_is_power_of_two(mp_digit b, int *p)
|
static int s_is_power_of_two(mp_digit b, int *p)
|
||||||
{
|
{
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DR_IS_MODULUS_C
|
#ifdef BN_MP_DR_IS_MODULUS_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* determines if a number is a valid DR modulus */
|
/* determines if a number is a valid DR modulus */
|
||||||
int mp_dr_is_modulus(const mp_int *a)
|
int mp_dr_is_modulus(const mp_int *a)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DR_REDUCE_C
|
#ifdef BN_MP_DR_REDUCE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* reduce "x" in place modulo "n" using the Diminished Radix algorithm.
|
/* reduce "x" in place modulo "n" using the Diminished Radix algorithm.
|
||||||
*
|
*
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_DR_SETUP_C
|
#ifdef BN_MP_DR_SETUP_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* determines the setup value */
|
/* determines the setup value */
|
||||||
void mp_dr_setup(const mp_int *a, mp_digit *d)
|
void mp_dr_setup(const mp_int *a, mp_digit *d)
|
||||||
|
13
bn_mp_exch.c
13
bn_mp_exch.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXCH_C
|
#ifdef BN_MP_EXCH_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* swap the elements of two integers, for cases where you can't simply swap the
|
/* swap the elements of two integers, for cases where you can't simply swap the
|
||||||
* mp_int pointers around
|
* mp_int pointers around
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXPORT_C
|
#ifdef BN_MP_EXPORT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* based on gmp's mpz_export.
|
/* based on gmp's mpz_export.
|
||||||
* see http://gmplib.org/manual/Integer-Import-and-Export.html
|
* see http://gmplib.org/manual/Integer-Import-and-Export.html
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXPT_D_C
|
#ifdef BN_MP_EXPT_D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* wrapper function for mp_expt_d_ex() */
|
/* wrapper function for mp_expt_d_ex() */
|
||||||
int mp_expt_d(const mp_int *a, mp_digit b, mp_int *c)
|
int mp_expt_d(const mp_int *a, mp_digit b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXPT_D_EX_C
|
#ifdef BN_MP_EXPT_D_EX_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* calculate c = a**b using a square-multiply algorithm */
|
/* calculate c = a**b using a square-multiply algorithm */
|
||||||
int mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
|
int mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
|
||||||
|
@ -1,17 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXPTMOD_C
|
#ifdef BN_MP_EXPTMOD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* this is a shell function that calls either the normal or Montgomery
|
/* this is a shell function that calls either the normal or Montgomery
|
||||||
* exptmod functions. Originally the call to the montgomery code was
|
* exptmod functions. Originally the call to the montgomery code was
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXPTMOD_FAST_C
|
#ifdef BN_MP_EXPTMOD_FAST_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85
|
/* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85
|
||||||
*
|
*
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_EXTEUCLID_C
|
#ifdef BN_MP_EXTEUCLID_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Extended euclidean algorithm of (a, b) produces
|
/* Extended euclidean algorithm of (a, b) produces
|
||||||
a*u1 + b*u2 = u3
|
a*u1 + b*u2 = u3
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_FREAD_C
|
#ifdef BN_MP_FREAD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef LTM_NO_FILE
|
#ifndef LTM_NO_FILE
|
||||||
/* read a bigint from a file stream in ASCII */
|
/* read a bigint from a file stream in ASCII */
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_FWRITE_C
|
#ifdef BN_MP_FWRITE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef LTM_NO_FILE
|
#ifndef LTM_NO_FILE
|
||||||
int mp_fwrite(const mp_int *a, int radix, FILE *stream)
|
int mp_fwrite(const mp_int *a, int radix, FILE *stream)
|
||||||
|
13
bn_mp_gcd.c
13
bn_mp_gcd.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GCD_C
|
#ifdef BN_MP_GCD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Greatest Common Divisor using the binary method */
|
/* Greatest Common Divisor using the binary method */
|
||||||
int mp_gcd(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_gcd(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,17 +1,8 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GET_BIT_C
|
#ifdef BN_MP_GET_BIT_C
|
||||||
|
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Checks the bit at position b and returns MP_YES
|
/* Checks the bit at position b and returns MP_YES
|
||||||
if the bit is 1, MP_NO if it is 0 and MP_VAL
|
if the bit is 1, MP_NO if it is 0 and MP_VAL
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GET_DOUBLE_C
|
#ifdef BN_MP_GET_DOUBLE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
double mp_get_double(const mp_int *a)
|
double mp_get_double(const mp_int *a)
|
||||||
{
|
{
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GET_INT_C
|
#ifdef BN_MP_GET_INT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* get the lower 32-bits of an mp_int */
|
/* get the lower 32-bits of an mp_int */
|
||||||
unsigned long mp_get_int(const mp_int *a)
|
unsigned long mp_get_int(const mp_int *a)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GET_LONG_C
|
#ifdef BN_MP_GET_LONG_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* get the lower unsigned long of an mp_int, platform dependent */
|
/* get the lower unsigned long of an mp_int, platform dependent */
|
||||||
unsigned long mp_get_long(const mp_int *a)
|
unsigned long mp_get_long(const mp_int *a)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GET_LONG_LONG_C
|
#ifdef BN_MP_GET_LONG_LONG_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* get the lower unsigned long long of an mp_int, platform dependent */
|
/* get the lower unsigned long long of an mp_int, platform dependent */
|
||||||
unsigned long long mp_get_long_long(const mp_int *a)
|
unsigned long long mp_get_long_long(const mp_int *a)
|
||||||
|
13
bn_mp_grow.c
13
bn_mp_grow.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_GROW_C
|
#ifdef BN_MP_GROW_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* grow as required */
|
/* grow as required */
|
||||||
int mp_grow(mp_int *a, int size)
|
int mp_grow(mp_int *a, int size)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_IMPORT_C
|
#ifdef BN_MP_IMPORT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* based on gmp's mpz_import.
|
/* based on gmp's mpz_import.
|
||||||
* see http://gmplib.org/manual/Integer-Import-and-Export.html
|
* see http://gmplib.org/manual/Integer-Import-and-Export.html
|
||||||
|
13
bn_mp_incr.c
13
bn_mp_incr.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INCR_C
|
#ifdef BN_MP_INCR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Increment "a" by one like "a++". Changes input! */
|
/* Increment "a" by one like "a++". Changes input! */
|
||||||
int mp_incr(mp_int *a)
|
int mp_incr(mp_int *a)
|
||||||
|
13
bn_mp_init.c
13
bn_mp_init.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INIT_C
|
#ifdef BN_MP_INIT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* init a new mp_int */
|
/* init a new mp_int */
|
||||||
int mp_init(mp_int *a)
|
int mp_init(mp_int *a)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INIT_COPY_C
|
#ifdef BN_MP_INIT_COPY_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* creates "a" then copies b into it */
|
/* creates "a" then copies b into it */
|
||||||
int mp_init_copy(mp_int *a, const mp_int *b)
|
int mp_init_copy(mp_int *a, const mp_int *b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INIT_MULTI_C
|
#ifdef BN_MP_INIT_MULTI_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INIT_SET_C
|
#ifdef BN_MP_INIT_SET_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* initialize and set a digit */
|
/* initialize and set a digit */
|
||||||
int mp_init_set(mp_int *a, mp_digit b)
|
int mp_init_set(mp_int *a, mp_digit b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INIT_SET_INT_C
|
#ifdef BN_MP_INIT_SET_INT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* initialize and set a digit */
|
/* initialize and set a digit */
|
||||||
int mp_init_set_int(mp_int *a, unsigned long b)
|
int mp_init_set_int(mp_int *a, unsigned long b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INIT_SIZE_C
|
#ifdef BN_MP_INIT_SIZE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* init an mp_init for a given size */
|
/* init an mp_init for a given size */
|
||||||
int mp_init_size(mp_int *a, int size)
|
int mp_init_size(mp_int *a, int size)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INVMOD_C
|
#ifdef BN_MP_INVMOD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* hac 14.61, pp608 */
|
/* hac 14.61, pp608 */
|
||||||
int mp_invmod(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_invmod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_INVMOD_SLOW_C
|
#ifdef BN_MP_INVMOD_SLOW_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* hac 14.61, pp608 */
|
/* hac 14.61, pp608 */
|
||||||
int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_IS_SQUARE_C
|
#ifdef BN_MP_IS_SQUARE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Check if remainders are possible squares - fast exclude non-squares */
|
/* Check if remainders are possible squares - fast exclude non-squares */
|
||||||
static const char rem_128[128] = {
|
static const char rem_128[128] = {
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_ISEVEN_C
|
#ifdef BN_MP_ISEVEN_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
int mp_iseven(const mp_int *a)
|
int mp_iseven(const mp_int *a)
|
||||||
{
|
{
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_ISODD_C
|
#ifdef BN_MP_ISODD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
int mp_isodd(const mp_int *a)
|
int mp_isodd(const mp_int *a)
|
||||||
{
|
{
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_JACOBI_C
|
#ifdef BN_MP_JACOBI_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes the jacobi c = (a | n) (or Legendre if n is prime)
|
/* computes the jacobi c = (a | n) (or Legendre if n is prime)
|
||||||
* Kept for legacy reasons, please use mp_kronecker() instead
|
* Kept for legacy reasons, please use mp_kronecker() instead
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_KARATSUBA_MUL_C
|
#ifdef BN_MP_KARATSUBA_MUL_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* c = |a| * |b| using Karatsuba Multiplication using
|
/* c = |a| * |b| using Karatsuba Multiplication using
|
||||||
* three half size multiplications
|
* three half size multiplications
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_KARATSUBA_SQR_C
|
#ifdef BN_MP_KARATSUBA_SQR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Karatsuba squaring, computes b = a*a using three
|
/* Karatsuba squaring, computes b = a*a using three
|
||||||
* half size squarings
|
* half size squarings
|
||||||
|
@ -1,17 +1,8 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_KRONECKER_C
|
#ifdef BN_MP_KRONECKER_C
|
||||||
|
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Kronecker symbol (a|p)
|
Kronecker symbol (a|p)
|
||||||
|
13
bn_mp_lcm.c
13
bn_mp_lcm.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_LCM_C
|
#ifdef BN_MP_LCM_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes least common multiple as |a*b|/(a, b) */
|
/* computes least common multiple as |a*b|/(a, b) */
|
||||||
int mp_lcm(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_lcm(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
13
bn_mp_lshd.c
13
bn_mp_lshd.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_LSHD_C
|
#ifdef BN_MP_LSHD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* shift left a certain amount of digits */
|
/* shift left a certain amount of digits */
|
||||||
int mp_lshd(mp_int *a, int b)
|
int mp_lshd(mp_int *a, int b)
|
||||||
|
13
bn_mp_mod.c
13
bn_mp_mod.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MOD_C
|
#ifdef BN_MP_MOD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */
|
/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */
|
||||||
int mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MOD_2D_C
|
#ifdef BN_MP_MOD_2D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* calc a value mod 2**b */
|
/* calc a value mod 2**b */
|
||||||
int mp_mod_2d(const mp_int *a, int b, mp_int *c)
|
int mp_mod_2d(const mp_int *a, int b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MOD_D_C
|
#ifdef BN_MP_MOD_D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
int mp_mod_d(const mp_int *a, mp_digit b, mp_digit *c)
|
int mp_mod_d(const mp_int *a, mp_digit b, mp_digit *c)
|
||||||
{
|
{
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C
|
#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* shifts with subtractions when the result is greater than b.
|
* shifts with subtractions when the result is greater than b.
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MONTGOMERY_REDUCE_C
|
#ifdef BN_MP_MONTGOMERY_REDUCE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* computes xR**-1 == x (mod N) via Montgomery Reduction */
|
/* computes xR**-1 == x (mod N) via Montgomery Reduction */
|
||||||
int mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho)
|
int mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MONTGOMERY_SETUP_C
|
#ifdef BN_MP_MONTGOMERY_SETUP_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* setups the montgomery reduction stuff */
|
/* setups the montgomery reduction stuff */
|
||||||
int mp_montgomery_setup(const mp_int *n, mp_digit *rho)
|
int mp_montgomery_setup(const mp_int *n, mp_digit *rho)
|
||||||
|
13
bn_mp_mul.c
13
bn_mp_mul.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MUL_C
|
#ifdef BN_MP_MUL_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* high level multiplication (handles sign) */
|
/* high level multiplication (handles sign) */
|
||||||
int mp_mul(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_mul(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MUL_2_C
|
#ifdef BN_MP_MUL_2_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* b = a*2 */
|
/* b = a*2 */
|
||||||
int mp_mul_2(const mp_int *a, mp_int *b)
|
int mp_mul_2(const mp_int *a, mp_int *b)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MUL_2D_C
|
#ifdef BN_MP_MUL_2D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* shift left by a certain bit count */
|
/* shift left by a certain bit count */
|
||||||
int mp_mul_2d(const mp_int *a, int b, mp_int *c)
|
int mp_mul_2d(const mp_int *a, int b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MUL_D_C
|
#ifdef BN_MP_MUL_D_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* multiply by a digit */
|
/* multiply by a digit */
|
||||||
int mp_mul_d(const mp_int *a, mp_digit b, mp_int *c)
|
int mp_mul_d(const mp_int *a, mp_digit b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_MULMOD_C
|
#ifdef BN_MP_MULMOD_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* d = a * b (mod c) */
|
/* d = a * b (mod c) */
|
||||||
int mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
int mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_N_ROOT_C
|
#ifdef BN_MP_N_ROOT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* wrapper function for mp_n_root_ex()
|
/* wrapper function for mp_n_root_ex()
|
||||||
* computes c = (a)**(1/b) such that (c)**b <= a and (c+1)**b > a
|
* computes c = (a)**(1/b) such that (c)**b <= a and (c+1)**b > a
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_N_ROOT_EX_C
|
#ifdef BN_MP_N_ROOT_EX_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* find the n'th root of an integer
|
/* find the n'th root of an integer
|
||||||
*
|
*
|
||||||
|
13
bn_mp_neg.c
13
bn_mp_neg.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_NEG_C
|
#ifdef BN_MP_NEG_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* b = -a */
|
/* b = -a */
|
||||||
int mp_neg(const mp_int *a, mp_int *b)
|
int mp_neg(const mp_int *a, mp_int *b)
|
||||||
|
13
bn_mp_or.c
13
bn_mp_or.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_OR_C
|
#ifdef BN_MP_OR_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* OR two ints together */
|
/* OR two ints together */
|
||||||
int mp_or(const mp_int *a, const mp_int *b, mp_int *c)
|
int mp_or(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_FERMAT_C
|
#ifdef BN_MP_PRIME_FERMAT_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* performs one Fermat test.
|
/* performs one Fermat test.
|
||||||
*
|
*
|
||||||
|
@ -1,17 +1,8 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_FROBENIUS_UNDERWOOD_C
|
#ifdef BN_MP_PRIME_FROBENIUS_UNDERWOOD_C
|
||||||
|
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See file bn_mp_prime_is_prime.c or the documentation in doc/bn.tex for the details
|
* See file bn_mp_prime_is_prime.c or the documentation in doc/bn.tex for the details
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_IS_DIVISIBLE_C
|
#ifdef BN_MP_PRIME_IS_DIVISIBLE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* determines if an integers is divisible by one
|
/* determines if an integers is divisible by one
|
||||||
* of the first PRIME_SIZE primes or not
|
* of the first PRIME_SIZE primes or not
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_IS_PRIME_C
|
#ifdef BN_MP_PRIME_IS_PRIME_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* portable integer log of two with small footprint */
|
/* portable integer log of two with small footprint */
|
||||||
static unsigned int s_floor_ilog2(int value)
|
static unsigned int s_floor_ilog2(int value)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_MILLER_RABIN_C
|
#ifdef BN_MP_PRIME_MILLER_RABIN_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Miller-Rabin test of "a" to the base of "b" as described in
|
/* Miller-Rabin test of "a" to the base of "b" as described in
|
||||||
* HAC pp. 139 Algorithm 4.24
|
* HAC pp. 139 Algorithm 4.24
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_NEXT_PRIME_C
|
#ifdef BN_MP_PRIME_NEXT_PRIME_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* finds the next prime after the number "a" using "t" trials
|
/* finds the next prime after the number "a" using "t" trials
|
||||||
* of Miller-Rabin.
|
* of Miller-Rabin.
|
||||||
|
@ -1,17 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C
|
#ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
int k, t;
|
int k, t;
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_RANDOM_EX_C
|
#ifdef BN_MP_PRIME_RANDOM_EX_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* makes a truly random prime of a given size (bits),
|
/* makes a truly random prime of a given size (bits),
|
||||||
*
|
*
|
||||||
|
@ -1,17 +1,8 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C
|
#ifdef BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C
|
||||||
|
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See file bn_mp_prime_is_prime.c or the documentation in doc/bn.tex for the details
|
* See file bn_mp_prime_is_prime.c or the documentation in doc/bn.tex for the details
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_RADIX_SIZE_C
|
#ifdef BN_MP_RADIX_SIZE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* returns size of ASCII reprensentation */
|
/* returns size of ASCII reprensentation */
|
||||||
int mp_radix_size(const mp_int *a, int radix, int *size)
|
int mp_radix_size(const mp_int *a, int radix, int *size)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_RADIX_SMAP_C
|
#ifdef BN_MP_RADIX_SMAP_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* chars used in radix conversions */
|
/* chars used in radix conversions */
|
||||||
const char *const mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
|
const char *const mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
|
||||||
|
13
bn_mp_rand.c
13
bn_mp_rand.c
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_RAND_C
|
#ifdef BN_MP_RAND_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* First the OS-specific special cases
|
/* First the OS-specific special cases
|
||||||
* - *BSD
|
* - *BSD
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_READ_RADIX_C
|
#ifdef BN_MP_READ_RADIX_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MP_TOUPPER(c) ((((c) >= 'a') && ((c) <= 'z')) ? (((c) + 'A') - 'a') : (c))
|
#define MP_TOUPPER(c) ((((c) >= 'a') && ((c) <= 'z')) ? (((c) + 'A') - 'a') : (c))
|
||||||
|
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_READ_SIGNED_BIN_C
|
#ifdef BN_MP_READ_SIGNED_BIN_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* read signed bin, big endian, first byte is 0==positive or 1==negative */
|
/* read signed bin, big endian, first byte is 0==positive or 1==negative */
|
||||||
int mp_read_signed_bin(mp_int *a, const unsigned char *b, int c)
|
int mp_read_signed_bin(mp_int *a, const unsigned char *b, int c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_READ_UNSIGNED_BIN_C
|
#ifdef BN_MP_READ_UNSIGNED_BIN_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* reads a unsigned char array, assumes the msb is stored first [big endian] */
|
/* reads a unsigned char array, assumes the msb is stored first [big endian] */
|
||||||
int mp_read_unsigned_bin(mp_int *a, const unsigned char *b, int c)
|
int mp_read_unsigned_bin(mp_int *a, const unsigned char *b, int c)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_REDUCE_C
|
#ifdef BN_MP_REDUCE_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* reduces x mod m, assumes 0 < x < m**2, mu is
|
/* reduces x mod m, assumes 0 < x < m**2, mu is
|
||||||
* precomputed via mp_reduce_setup.
|
* precomputed via mp_reduce_setup.
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_REDUCE_2K_C
|
#ifdef BN_MP_REDUCE_2K_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* reduces a modulo n where n is of the form 2**p - d */
|
/* reduces a modulo n where n is of the form 2**p - d */
|
||||||
int mp_reduce_2k(mp_int *a, const mp_int *n, mp_digit d)
|
int mp_reduce_2k(mp_int *a, const mp_int *n, mp_digit d)
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_REDUCE_2K_L_C
|
#ifdef BN_MP_REDUCE_2K_L_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* reduces a modulo n where n is of the form 2**p - d
|
/* reduces a modulo n where n is of the form 2**p - d
|
||||||
This differs from reduce_2k since "d" can be larger
|
This differs from reduce_2k since "d" can be larger
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
#include "tommath_private.h"
|
#include "tommath_private.h"
|
||||||
#ifdef BN_MP_REDUCE_2K_SETUP_C
|
#ifdef BN_MP_REDUCE_2K_SETUP_C
|
||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||||
*
|
/* SPDX-License-Identifier: Unlicense */
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Unlicense
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* determines the setup value */
|
/* determines the setup value */
|
||||||
int mp_reduce_2k_setup(const mp_int *a, mp_digit *d)
|
int mp_reduce_2k_setup(const mp_int *a, mp_digit *d)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user