diff --git a/bignum.c b/bignum.c index d1c3c5d049e1cc974b4ca14c3a2bbc672a1a3c92..67abe5d834903dac2c66c47713a8988eb2f4457e 100644 --- a/bignum.c +++ b/bignum.c @@ -34,6 +34,12 @@ #include <assert.h> #include <string.h> +unsigned +nettle_mpz_sizeinbase_256(const mpz_t x) +{ + return (mpz_sizeinbase(x, 2) + 7) / 8; +} + void nettle_mpz_get_str_256(unsigned length, uint8_t *s, const mpz_t x) { @@ -49,7 +55,7 @@ nettle_mpz_get_str_256(unsigned length, uint8_t *s, const mpz_t x) } assert(mpz_sgn(x) >= 0); - assert( (mpz_sizeinbase(x, 2) + 7) / 8 <= length); + assert(nettle_mpz_sizeinbase_256(x) <= length); for (i = 0; i<size; i++) { diff --git a/bignum.h b/bignum.h index b4cfcc372ab6d3e9d2c2bb93d6ac823dfb532fc4..c26d18477576874656e7a8ca24e3fd45c1480baf 100644 --- a/bignum.h +++ b/bignum.h @@ -29,6 +29,9 @@ #include <gmp.h> #include <inttypes.h> +unsigned +nettle_mpz_sizeinbase_256(const mpz_t x); + /* Writes an unsigned integer as length octets, using big endian byte * order. */ void