static void test_size(long x, unsigned size) { mpz_t t; mpz_init_set_si(t, x); ASSERT(nettle_mpz_sizeinbase_256_s(t) == size); mpz_clear(t); }
static int wrap_nettle_mpi_print(const bigint_t a, void *buffer, size_t * nbytes, gnutls_bigint_format_t format) { unsigned int size; mpz_t *p = (void *) a; if (format == GNUTLS_MPI_FORMAT_USG) { 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; } if (buffer == NULL || size > *nbytes) { *nbytes = size; gnutls_assert(); return GNUTLS_E_SHORT_MEMORY_BUFFER; } #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; }