diff options
-rw-r--r-- | crypto.c | 33 | ||||
-rw-r--r-- | crypto.h | 2 |
2 files changed, 19 insertions, 16 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); } @@ -115,7 +115,7 @@ int smc_zkp_0og_check (const gcry_mpi_point_t y, /* --- Protocol implementation --- */ -void smc_gen_keyshare (struct AuctionData *ad); +void smc_gen_keyshare (struct AuctionData *ad, struct proof_dl *proof); void smc_compute_pkey (struct AuctionData *ad); #endif /* ifndef _BRANDT_CRYPTO_H */ |