From: Dmitry Eremin-Solenikov Date: Tue, 29 Nov 2016 02:30:10 +0000 (+0300) Subject: nettle: add support for unsigned LE MPIs X-Git-Tag: gnutls_3_6_3~77^2~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05cd755fa46b0dfaa7aab9aa64627e41129fb7f7;p=thirdparty%2Fgnutls.git nettle: add support for unsigned LE MPIs Signed-off-by: Dmitry Eremin-Solenikov --- diff --git a/lib/nettle/mpi.c b/lib/nettle/mpi.c index c45aa3e0ae..8a93ac2786 100644 --- a/lib/nettle/mpi.c +++ b/lib/nettle/mpi.c @@ -29,6 +29,9 @@ #include #include #include /* includes gmp.h */ +#if ENABLE_GOST +#include "gost/bignum-le.h" +#endif #include #include @@ -43,6 +46,10 @@ wrap_nettle_mpi_print(const bigint_t a, void *buffer, size_t * nbytes, size = nettle_mpz_sizeinbase_256_u(*p); } else if (format == GNUTLS_MPI_FORMAT_STD) { size = nettle_mpz_sizeinbase_256_s(*p); +#if ENABLE_GOST + } else if (format == GNUTLS_MPI_FORMAT_ULE) { + size = nettle_mpz_sizeinbase_256_u_le(*p); +#endif } else { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -50,11 +57,16 @@ wrap_nettle_mpi_print(const bigint_t a, void *buffer, size_t * nbytes, if (buffer == NULL || size > *nbytes) { *nbytes = size; + gnutls_assert(); return GNUTLS_E_SHORT_MEMORY_BUFFER; } - nettle_mpz_get_str_256(size, buffer, *p); - +#if ENABLE_GOST + if (format == GNUTLS_MPI_FORMAT_ULE) + nettle_mpz_get_str_256_u_le(size, buffer, *p); + else +#endif + nettle_mpz_get_str_256(size, buffer, *p); *nbytes = size; return 0; @@ -136,6 +148,10 @@ wrap_nettle_mpi_scan(bigint_t r, const void *buffer, size_t nbytes, nettle_mpz_set_str_256_u(TOMPZ(r), nbytes, buffer); } else if (format == GNUTLS_MPI_FORMAT_STD) { nettle_mpz_set_str_256_s(TOMPZ(r), nbytes, buffer); +#if ENABLE_GOST + } else if (format == GNUTLS_MPI_FORMAT_ULE) { + nettle_mpz_set_str_256_u_le(TOMPZ(r), nbytes, buffer); +#endif } else { gnutls_assert(); goto fail;