X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Fcrypto_kdf.c;h=b62b5c8478fd1168c4a747d26785c6b0d6855bab;hb=4707789ebfb4cef9672db31e3ceb8f98381901d0;hp=c760ba33acbe871cce03a53f44916be98c12b013;hpb=8459cba759d85ef512c8400ba7622332cf5ed652;p=oweals%2Fgnunet.git diff --git a/src/util/crypto_kdf.c b/src/util/crypto_kdf.c index c760ba33a..b62b5c847 100644 --- a/src/util/crypto_kdf.c +++ b/src/util/crypto_kdf.c @@ -108,7 +108,7 @@ GNUNET_CRYPTO_kdf (void *result, size_t out_len, void GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, gcry_mpi_t n, - const void *xts, size_t xts_len, + const void *xts, size_t xts_len, const void *skm, size_t skm_len, const char *ctx) { @@ -121,7 +121,8 @@ GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, /* GNUNET_assert (nbits > 512); */ ctr = 0; - do { + while (1) + { /* Ain't clear if n is always divisible by 8 */ uint8_t buf[ (nbits-1)/8 + 1 ]; @@ -145,7 +146,8 @@ GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, GNUNET_assert( 0 == gcry_mpi_test_bit (*r, nbits) ); ++ctr; /* We reject this FDH if either *r > n and retry with another ctr */ - } while ( 0 <= gcry_mpi_cmp(*r,n) ); + if (0 > gcry_mpi_cmp(*r, n)) + break; + gcry_mpi_release (*r); + } } - -