finish/fix public first price auctions
This commit is contained in:
parent
6a4fa07b28
commit
017a90a88c
27
crypto.c
27
crypto.c
@ -407,7 +407,9 @@ smc_free1 (gcry_mpi_point_t *dst, uint16_t size1)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* smc_init1 creates a 1 dimensional array of curve points
|
* smc_init1 creates a 1 dimensional array of curve points. Make sure to
|
||||||
|
* initialize the values before using them, they are not automatically set to
|
||||||
|
* the zero point!
|
||||||
*
|
*
|
||||||
* @param[in] size1 size of the first dimension
|
* @param[in] size1 size of the first dimension
|
||||||
* @return a pointer to the array or NULL on error.
|
* @return a pointer to the array or NULL on error.
|
||||||
@ -460,7 +462,9 @@ smc_free2 (gcry_mpi_point_t **dst, uint16_t size1, uint16_t size2)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* smc_init2 creates a 2 dimensional array of curve points
|
* smc_init2 creates a 2 dimensional array of curve points. Make sure to
|
||||||
|
* initialize the values before using them, they are not automatically set to
|
||||||
|
* the zero point!
|
||||||
*
|
*
|
||||||
* @param[in] size1 size of the first dimension
|
* @param[in] size1 size of the first dimension
|
||||||
* @param[in] size2 size of the second dimension
|
* @param[in] size2 size of the second dimension
|
||||||
@ -525,7 +529,9 @@ smc_free3 (gcry_mpi_point_t ***dst,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* smc_init3 creates a 3 dimensional array of curve points
|
* smc_init3 creates a 3 dimensional array of curve points. Make sure to
|
||||||
|
* initialize the values before using them, they are not automatically set to
|
||||||
|
* the zero point!
|
||||||
*
|
*
|
||||||
* @param[in] size1 size of the first dimension
|
* @param[in] size1 size of the first dimension
|
||||||
* @param[in] size2 size of the second dimension
|
* @param[in] size2 size of the second dimension
|
||||||
@ -884,8 +890,15 @@ fp_pub_compute_outcome (struct BRANDT_Auction *ad, size_t *buflen)
|
|||||||
brandt_assert (!ec_point_cmp (ec_zero, tlta1[ad->k - 1]));
|
brandt_assert (!ec_point_cmp (ec_zero, tlta1[ad->k - 1]));
|
||||||
brandt_assert (!ec_point_cmp (ec_zero, tltb1[ad->k - 1]));
|
brandt_assert (!ec_point_cmp (ec_zero, tltb1[ad->k - 1]));
|
||||||
|
|
||||||
/* temporarily store the \sum_{i=1}^n2^{i-1}b_i in tmp1, since it is needed
|
/* initialize tmp array with zeroes, since we are calculating a sum */
|
||||||
* each time a gamma,delta pair is received from another bidder */
|
for (uint16_t j = 0; j < ad->k; j++)
|
||||||
|
{
|
||||||
|
ec_point_copy (ad->tmpa1[j], ec_zero);
|
||||||
|
ec_point_copy (ad->tmpb1[j], ec_zero);
|
||||||
|
}
|
||||||
|
/* store the \sum_{i=1}^n2^{i-1}b_i in tmp1 until outcome determination,
|
||||||
|
* since it is needed each time a gamma,delta pair is received from another
|
||||||
|
* bidder */
|
||||||
for (uint16_t i = 0; i < ad->n; i++)
|
for (uint16_t i = 0; i < ad->n; i++)
|
||||||
{
|
{
|
||||||
for (uint16_t j = 0; j < ad->k; j++)
|
for (uint16_t j = 0; j < ad->k; j++)
|
||||||
@ -895,7 +908,7 @@ fp_pub_compute_outcome (struct BRANDT_Auction *ad, size_t *buflen)
|
|||||||
gcry_mpi_ec_mul (tmp, coeff, ad->beta[i][j], ec_ctx);
|
gcry_mpi_ec_mul (tmp, coeff, ad->beta[i][j], ec_ctx);
|
||||||
gcry_mpi_ec_add (ad->tmpb1[j], ad->tmpb1[j], tmp, ec_ctx);
|
gcry_mpi_ec_add (ad->tmpb1[j], ad->tmpb1[j], tmp, ec_ctx);
|
||||||
}
|
}
|
||||||
gcry_mpi_mul_ui (coeff, coeff, 2);
|
gcry_mpi_lshift (coeff, coeff, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint16_t j = 0; j < ad->k; j++)
|
for (uint16_t j = 0; j < ad->k; j++)
|
||||||
@ -1033,7 +1046,7 @@ fp_pub_decrypt_outcome (struct BRANDT_Auction *ad, size_t *buflen)
|
|||||||
phi = (struct ec_mpi *)cur;
|
phi = (struct ec_mpi *)cur;
|
||||||
proof2 = (struct proof_2dle *)(cur + sizeof (*phi));
|
proof2 = (struct proof_2dle *)(cur + sizeof (*phi));
|
||||||
|
|
||||||
smc_sum (tmp, &ad->delta2[0][j], ad->n, ad->n * ad->k);
|
smc_sum (tmp, &ad->delta2[0][j], ad->n, ad->k);
|
||||||
|
|
||||||
/* copy still encrypted outcome to all other bidder layers so they
|
/* copy still encrypted outcome to all other bidder layers so they
|
||||||
* don't have to be recomputed to check the ZK proof_2dle's from
|
* don't have to be recomputed to check the ZK proof_2dle's from
|
||||||
|
Loading…
Reference in New Issue
Block a user