diff options
Diffstat (limited to 'crypto.c')
-rw-r--r-- | crypto.c | 33 |
1 files changed, 18 insertions, 15 deletions
@@ -528,26 +528,15 @@ smc_sum (gcry_mpi_point_t out, gcry_mpi_point_t in[], uint16_t len) /** - * smc_compute_pkey calculates the shared public key - * - * @param[in,out] ad The struct AuctionData used - */ -void -smc_compute_pkey (struct AuctionData *ad) -{ - ad->Y = gcry_mpi_point_new (0); - smc_sum (ad->Y, ad->y, ad->n); -} - - -/** * smc_gen_keyshare creates the private additive keyshare and computes the * public multiplicative key share * * @param[in,out] ad Pointer to the AuctionData struct to operate on + * @param[out] proof Pointer to where the proof of knowledge should be saved. + * Must be allocated memory with apropriate size for one proof struct. */ void -smc_gen_keyshare (struct AuctionData *ad) +smc_gen_keyshare (struct AuctionData *ad, struct proof_dl *proof) { uint16_t i; @@ -556,7 +545,21 @@ smc_gen_keyshare (struct AuctionData *ad) ad->y[0] = gcry_mpi_point_new (0); ad->x = gcry_mpi_new (0); - ec_keypair_create (ad->y[ad->i], ad->x); + ec_skey_create (ad->x); + smc_zkp_dl (ad->y[ad->i], ad->x, proof); +} + + +/** + * smc_compute_pkey calculates the shared public key + * + * @param[in,out] ad The struct AuctionData used + */ +void +smc_compute_pkey (struct AuctionData *ad) +{ + ad->Y = gcry_mpi_point_new (0); + smc_sum (ad->Y, ad->y, ad->n); } |