diff options
Diffstat (limited to 'src/ltm/bn_mp_reduce_2k_l.c')
-rw-r--r-- | src/ltm/bn_mp_reduce_2k_l.c | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/src/ltm/bn_mp_reduce_2k_l.c b/src/ltm/bn_mp_reduce_2k_l.c index 6a9f3d31..afdc3219 100644 --- a/src/ltm/bn_mp_reduce_2k_l.c +++ b/src/ltm/bn_mp_reduce_2k_l.c @@ -1,41 +1,49 @@ #include "tommath_private.h" #ifdef BN_MP_REDUCE_2K_L_C -/* LibTomMath, multiple-precision integer library -- Tom St Denis */ -/* SPDX-License-Identifier: Unlicense */ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ /* reduces a modulo n where n is of the form 2**p - d This differs from reduce_2k since "d" can be larger than a single digit. */ -mp_err mp_reduce_2k_l(mp_int *a, const mp_int *n, const mp_int *d) +int mp_reduce_2k_l(mp_int *a, const mp_int *n, const mp_int *d) { mp_int q; - mp_err err; - int p; + int p, res; - if ((err = mp_init(&q)) != MP_OKAY) { - return err; + if ((res = mp_init(&q)) != MP_OKAY) { + return res; } p = mp_count_bits(n); top: /* q = a/2**p, a = a mod 2**p */ - if ((err = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { goto LBL_ERR; } /* q = q * d */ - if ((err = mp_mul(&q, d, &q)) != MP_OKAY) { + if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { goto LBL_ERR; } /* a = a + q */ - if ((err = s_mp_add(a, &q, a)) != MP_OKAY) { + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { goto LBL_ERR; } if (mp_cmp_mag(a, n) != MP_LT) { - if ((err = s_mp_sub(a, n, a)) != MP_OKAY) { + if ((res = s_mp_sub(a, n, a)) != MP_OKAY) { goto LBL_ERR; } goto top; @@ -43,7 +51,11 @@ top: LBL_ERR: mp_clear(&q); - return err; + return res; } #endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ |