From 5299b2ad7c4ba7a82ee1bcb1953663f63e8e9a14 Mon Sep 17 00:00:00 2001 From: Nathan Wagner Date: Sun, 7 Jul 2019 03:15:05 +0000 Subject: [PATCH] remove gmp math descriptor --- Makefile | 1 - libtomcrypt/src/math/gmp_desc.c | 554 -------------------------------- 2 files changed, 555 deletions(-) delete mode 100644 libtomcrypt/src/math/gmp_desc.c diff --git a/Makefile b/Makefile index c4791a6..80d3061 100644 --- a/Makefile +++ b/Makefile @@ -452,7 +452,6 @@ LTCOBJ= \ mac/xcbc/xcbc_process.o \ mac/xcbc/xcbc_test.o \ math/fp/ltc_ecc_fp_mulmod.o \ - math/gmp_desc.o \ math/ltm_desc.o \ math/multi.o \ math/radix_to_bin.o \ diff --git a/libtomcrypt/src/math/gmp_desc.c b/libtomcrypt/src/math/gmp_desc.c deleted file mode 100644 index d80d87f..0000000 --- a/libtomcrypt/src/math/gmp_desc.c +++ /dev/null @@ -1,554 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#define DESC_DEF_ONLY -#include "tomcrypt.h" - -#ifdef GMP_DESC - -#include -#include - -static int init(void **a) -{ - LTC_ARGCHK(a != NULL); - - *a = XCALLOC(1, sizeof(__mpz_struct)); - if (*a == NULL) { - return CRYPT_MEM; - } - mpz_init(((__mpz_struct *)*a)); - return CRYPT_OK; -} - -static void deinit(void *a) -{ - LTC_ARGCHKVD(a != NULL); - mpz_clear(a); - XFREE(a); -} - -static int neg(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_neg(b, a); - return CRYPT_OK; -} - -static int copy(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_set(b, a); - return CRYPT_OK; -} - -static int init_copy(void **a, void *b) -{ - if (init(a) != CRYPT_OK) { - return CRYPT_MEM; - } - return copy(b, *a); -} - -/* ---- trivial ---- */ -static int set_int(void *a, ltc_mp_digit b) -{ - LTC_ARGCHK(a != NULL); - mpz_set_ui(((__mpz_struct *)a), b); - return CRYPT_OK; -} - -static unsigned long get_int(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_get_ui(a); -} - -static ltc_mp_digit get_digit(void *a, int n) -{ - LTC_ARGCHK(a != NULL); - return mpz_getlimbn(a, n); -} - -static int get_digit_count(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_size(a); -} - -static int compare(void *a, void *b) -{ - int ret; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - ret = mpz_cmp(a, b); - if (ret < 0) { - return LTC_MP_LT; - } else if (ret > 0) { - return LTC_MP_GT; - } else { - return LTC_MP_EQ; - } -} - -static int compare_d(void *a, ltc_mp_digit b) -{ - int ret; - LTC_ARGCHK(a != NULL); - ret = mpz_cmp_ui(((__mpz_struct *)a), b); - if (ret < 0) { - return LTC_MP_LT; - } else if (ret > 0) { - return LTC_MP_GT; - } else { - return LTC_MP_EQ; - } -} - -static int count_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_sizeinbase(a, 2); -} - -static int count_lsb_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_scan1(a, 0); -} - - -static int twoexpt(void *a, int n) -{ - LTC_ARGCHK(a != NULL); - mpz_set_ui(a, 0); - mpz_setbit(a, n); - return CRYPT_OK; -} - -/* ---- conversions ---- */ - -static const char rmap[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; - -/* read ascii string */ -static int read_radix(void *a, const char *b, int radix) -{ - int ret; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - if (radix == 64) { - /* Sadly, GMP only supports radixes up to 62, but we need 64. - * So, although this is not the most elegant or efficient way, - * let's just convert the base 64 string (6 bits per digit) to - * an octal string (3 bits per digit) that's twice as long. */ - char c, *tmp, *q; - const char *p; - int i; - tmp = XMALLOC (1 + 2 * strlen (b)); - if (tmp == NULL) { - return CRYPT_MEM; - } - p = b; - q = tmp; - while ((c = *p++) != 0) { - for (i = 0; i < 64; i++) { - if (c == rmap[i]) - break; - } - if (i == 64) { - XFREE (tmp); - /* printf ("c = '%c'\n", c); */ - return CRYPT_ERROR; - } - *q++ = '0' + (i / 8); - *q++ = '0' + (i % 8); - } - *q = 0; - ret = mpz_set_str(a, tmp, 8); - /* printf ("ret = %d for '%s'\n", ret, tmp); */ - XFREE (tmp); - } else { - ret = mpz_set_str(a, b, radix); - } - return (ret == 0 ? CRYPT_OK : CRYPT_ERROR); -} - -/* write one */ -static int write_radix(void *a, char *b, int radix) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - if (radix >= 11 && radix <= 36) - /* If radix is positive, GMP uses lowercase, and if negative, uppercase. - * We want it to use uppercase, to match the test vectors (presumably - * generated with LibTomMath). */ - radix = -radix; - mpz_get_str(b, radix, a); - return CRYPT_OK; -} - -/* get size as unsigned char string */ -static unsigned long unsigned_size(void *a) -{ - unsigned long t; - LTC_ARGCHK(a != NULL); - t = mpz_sizeinbase(a, 2); - if (mpz_cmp_ui(((__mpz_struct *)a), 0) == 0) return 0; - return (t>>3) + ((t&7)?1:0); -} - -/* store */ -static int unsigned_write(void *a, unsigned char *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_export(b, NULL, 1, 1, 1, 0, ((__mpz_struct*)a)); - return CRYPT_OK; -} - -/* read */ -static int unsigned_read(void *a, unsigned char *b, unsigned long len) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_import(a, len, 1, 1, 1, 0, b); - return CRYPT_OK; -} - -/* add */ -static int add(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_add(c, a, b); - return CRYPT_OK; -} - -static int addi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - mpz_add_ui(c, a, b); - return CRYPT_OK; -} - -/* sub */ -static int sub(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_sub(c, a, b); - return CRYPT_OK; -} - -static int subi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - mpz_sub_ui(c, a, b); - return CRYPT_OK; -} - -/* mul */ -static int mul(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_mul(c, a, b); - return CRYPT_OK; -} - -static int muli(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - mpz_mul_ui(c, a, b); - return CRYPT_OK; -} - -/* sqr */ -static int sqr(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_mul(b, a, a); - return CRYPT_OK; -} - -/* div */ -static int divide(void *a, void *b, void *c, void *d) -{ - mpz_t tmp; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - if (c != NULL) { - mpz_init(tmp); - mpz_divexact(tmp, a, b); - } - if (d != NULL) { - mpz_mod(d, a, b); - } - if (c != NULL) { - mpz_set(c, tmp); - mpz_clear(tmp); - } - return CRYPT_OK; -} - -static int div_2(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_divexact_ui(b, a, 2); - return CRYPT_OK; -} - -/* modi */ -static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - - *c = mpz_fdiv_ui(a, b); - return CRYPT_OK; -} - -/* gcd */ -static int gcd(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_gcd(c, a, b); - return CRYPT_OK; -} - -/* lcm */ -static int lcm(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_lcm(c, a, b); - return CRYPT_OK; -} - -static int addmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_add(d, a, b); - mpz_mod(d, d, c); - return CRYPT_OK; -} - -static int submod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_sub(d, a, b); - mpz_mod(d, d, c); - return CRYPT_OK; -} - -static int mulmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_mul(d, a, b); - mpz_mod(d, d, c); - return CRYPT_OK; -} - -static int sqrmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_mul(c, a, a); - mpz_mod(c, c, b); - return CRYPT_OK; -} - -/* invmod */ -static int invmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_invert(c, a, b); - return CRYPT_OK; -} - -/* setup */ -static int montgomery_setup(void *a, void **b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - *b = (void *)1; - return CRYPT_OK; -} - -/* get normalization value */ -static int montgomery_normalization(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_set_ui(a, 1); - return CRYPT_OK; -} - -/* reduce */ -static int montgomery_reduce(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_mod(a, a, b); - return CRYPT_OK; -} - -/* clean up */ -static void montgomery_deinit(void *a) -{ - LTC_UNUSED_PARAM(a); -} - -static int exptmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_powm(d, a, b, c); - return CRYPT_OK; -} - -static int isprime(void *a, int b, int *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - if (b == 0) { - b = LTC_MILLER_RABIN_REPS; - } /* if */ - *c = mpz_probab_prime_p(a, b) > 0 ? LTC_MP_YES : LTC_MP_NO; - return CRYPT_OK; -} - -static int set_rand(void *a, int size) -{ - LTC_ARGCHK(a != NULL); - mpz_random(a, size); - return CRYPT_OK; -} - -const ltc_math_descriptor gmp_desc = { - "GNU MP", - sizeof(mp_limb_t) * CHAR_BIT - GMP_NAIL_BITS, - - &init, - &init_copy, - &deinit, - - &neg, - ©, - - &set_int, - &get_int, - &get_digit, - &get_digit_count, - &compare, - &compare_d, - &count_bits, - &count_lsb_bits, - &twoexpt, - - &read_radix, - &write_radix, - &unsigned_size, - &unsigned_write, - &unsigned_read, - - &add, - &addi, - &sub, - &subi, - &mul, - &muli, - &sqr, - ÷, - &div_2, - &modi, - &gcd, - &lcm, - - &mulmod, - &sqrmod, - &invmod, - - &montgomery_setup, - &montgomery_normalization, - &montgomery_reduce, - &montgomery_deinit, - - &exptmod, - &isprime, - -#ifdef LTC_MECC -#ifdef LTC_MECC_FP - <c_ecc_fp_mulmod, -#else - <c_ecc_mulmod, -#endif /* LTC_MECC_FP */ - <c_ecc_projective_add_point, - <c_ecc_projective_dbl_point, - <c_ecc_map, -#ifdef LTC_ECC_SHAMIR -#ifdef LTC_MECC_FP - <c_ecc_fp_mul2add, -#else - <c_ecc_mul2add, -#endif /* LTC_MECC_FP */ -#else - NULL, -#endif /* LTC_ECC_SHAMIR */ -#else - NULL, NULL, NULL, NULL, NULL, -#endif /* LTC_MECC */ - -#ifdef LTC_MRSA - &rsa_make_key, - &rsa_exptmod, -#else - NULL, NULL, -#endif - &addmod, - &submod, - - &set_rand, - -}; - - -#endif - -/* ref: $Format:%D$ */ -/* git commit: $Format:%H$ */ -/* commit time: $Format:%ai$ */ -- 2.40.0