diff options
Diffstat (limited to 'libtommath/bn_mp_sqr.c')
-rw-r--r-- | libtommath/bn_mp_sqr.c | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/libtommath/bn_mp_sqr.c b/libtommath/bn_mp_sqr.c index 3938537..63bb2e2 100644 --- a/libtommath/bn_mp_sqr.c +++ b/libtommath/bn_mp_sqr.c @@ -1,4 +1,4 @@ -#include <tommath.h> +#include "tommath_private.h" #ifdef BN_MP_SQR_C /* LibTomMath, multiple-precision integer library -- Tom St Denis * @@ -9,46 +9,48 @@ * Michael Fromberger but has been written from scratch with * additional optimizations in place. * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com + * SPDX-License-Identifier: Unlicense */ /* computes b = a*a */ -int -mp_sqr (mp_int * a, mp_int * b) +int mp_sqr(const mp_int *a, mp_int *b) { - int res; + int res; #ifdef BN_MP_TOOM_SQR_C - /* use Toom-Cook? */ - if (a->used >= TOOM_SQR_CUTOFF) { - res = mp_toom_sqr(a, b); - /* Karatsuba? */ - } else + /* use Toom-Cook? */ + if (a->used >= TOOM_SQR_CUTOFF) { + res = mp_toom_sqr(a, b); + /* Karatsuba? */ + } else #endif #ifdef BN_MP_KARATSUBA_SQR_C -if (a->used >= KARATSUBA_SQR_CUTOFF) { - res = mp_karatsuba_sqr (a, b); - } else + if (a->used >= KARATSUBA_SQR_CUTOFF) { + res = mp_karatsuba_sqr(a, b); + } else #endif - { + { #ifdef BN_FAST_S_MP_SQR_C - /* can we use the fast comba multiplier? */ - if ((a->used * 2 + 1) < MP_WARRAY && - a->used < - (1 << (sizeof(mp_word) * CHAR_BIT - 2*DIGIT_BIT - 1))) { - res = fast_s_mp_sqr (a, b); - } else + /* can we use the fast comba multiplier? */ + if ((((a->used * 2) + 1) < (int)MP_WARRAY) && + (a->used < + (int)(1u << (((sizeof(mp_word) * (size_t)CHAR_BIT) - (2u * (size_t)DIGIT_BIT)) - 1u)))) { + res = fast_s_mp_sqr(a, b); + } else #endif + { #ifdef BN_S_MP_SQR_C - res = s_mp_sqr (a, b); + res = s_mp_sqr(a, b); #else - res = MP_VAL; + res = MP_VAL; #endif - } - b->sign = MP_ZPOS; - return res; + } + } + b->sign = MP_ZPOS; + return res; } #endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ |