static void
-get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption *fe, gcry_mpi_t e)
+get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption *fe,
+ gcry_mpi_t *e)
{
struct {
struct GNUNET_CRYPTO_PaillierCiphertext c;
GNUNET_CRYPTO_hash (&hash_data,
sizeof (hash_data),
&e_hash);
- GNUNET_CRYPTO_mpi_scan_unsigned (&e, &e_hash, sizeof (struct GNUNET_HashCode));
- gcry_mpi_mod (e, e, elgamal_q);
+ /* This allocates "e" */
+ GNUNET_CRYPTO_mpi_scan_unsigned (e,
+ &e_hash,
+ sizeof (struct GNUNET_HashCode));
+ gcry_mpi_mod (*e, *e, elgamal_q);
}
static int
-verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, const struct GNUNET_SECRETSHARING_FairEncryption *fe)
+verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
+ const struct GNUNET_SECRETSHARING_FairEncryption *fe)
{
gcry_mpi_t n;
gcry_mpi_t n_sq;
GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0)));
GNUNET_assert (NULL != (tmp1 = gcry_mpi_new (0)));
GNUNET_assert (NULL != (tmp2 = gcry_mpi_new (0)));
- GNUNET_assert (NULL != (e = gcry_mpi_new (0)));
- get_fair_encryption_challenge (fe, e);
+ get_fair_encryption_challenge (fe,
+ &e /* this allocates e */);
- GNUNET_CRYPTO_mpi_scan_unsigned (&n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
+ GNUNET_CRYPTO_mpi_scan_unsigned (&n,
+ ppub,
+ sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
GNUNET_CRYPTO_mpi_scan_unsigned (&t1, fe->t1, GNUNET_CRYPTO_PAILLIER_BITS / 8);
GNUNET_CRYPTO_mpi_scan_unsigned (&z, fe->z, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
GNUNET_CRYPTO_mpi_scan_unsigned (&y, fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
* @param[out] fe the fair encryption
*/
static void
-encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, struct GNUNET_SECRETSHARING_FairEncryption *fe)
+encrypt_fair (gcry_mpi_t v,
+ const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
+ struct GNUNET_SECRETSHARING_FairEncryption *fe)
{
gcry_mpi_t r;
gcry_mpi_t s;
gcry_mpi_t Y;
gcry_mpi_t G;
gcry_mpi_t h;
+
GNUNET_assert (NULL != (r = gcry_mpi_new (0)));
GNUNET_assert (NULL != (s = gcry_mpi_new (0)));
GNUNET_assert (NULL != (t1 = gcry_mpi_new (0)));
GNUNET_assert (NULL != (z = gcry_mpi_new (0)));
GNUNET_assert (NULL != (w = gcry_mpi_new (0)));
GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0)));
- GNUNET_assert (NULL != (e = gcry_mpi_new (0)));
GNUNET_assert (NULL != (u = gcry_mpi_new (0)));
GNUNET_assert (NULL != (Y = gcry_mpi_new (0)));
GNUNET_assert (NULL != (G = gcry_mpi_new (0)));
GNUNET_assert (NULL != (h = gcry_mpi_new (0)));
- GNUNET_CRYPTO_mpi_scan_unsigned (&n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
+ GNUNET_CRYPTO_mpi_scan_unsigned (&n,
+ ppub,
+ sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
gcry_mpi_mul (n_sq, n, n);
gcry_mpi_add_ui (G, n, 1);
GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8,
t2);
-
- get_fair_encryption_challenge (fe, e);
+ get_fair_encryption_challenge (fe,
+ &e /* This allocates "e" */);
// compute z
gcry_mpi_mul (z, e, v);