diff --git a/crypto.c b/crypto.c index e7397d5..537dd66 100644 --- a/crypto.c +++ b/crypto.c @@ -425,6 +425,20 @@ smc_compute_pkey (struct AuctionData *ad) } +void +smc_gen_keyshare (struct AuctionData *ad) +{ + uint16_t i; + + ad->y = calloc(ad->n, sizeof(*ad->y)); + for (i = 0; i < ad->n; i++) + ad->y[0] = gcry_mpi_point_new (0); + + ad->x = gcry_mpi_new (0); + ec_keypair_create (ad->y[ad->i], ad->x); +} + + /** * smc_zkp_dl * diff --git a/crypto.h b/crypto.h index e736236..aa518cd 100644 --- a/crypto.h +++ b/crypto.h @@ -25,6 +25,8 @@ #include #include +#include "internals.h" + void brandt_crypto_init (); @@ -64,8 +66,6 @@ void ec_keypair_create_base (gcry_mpi_point_t pkey, const gcry_mpi_point_t base); - - /* --- Zero knowledge proofs --- */ void smc_zkp_dl (const gcry_mpi_point_t v, @@ -124,4 +124,9 @@ int smc_zkp_0og_check (const gcry_mpi_point_t alpha, const gcry_mpi_t r1, const gcry_mpi_t r2); +/* --- Protocol implementation --- */ + +void smc_gen_keyshare (struct AuctionData *ad); +void smc_compute_pkey (struct AuctionData *ad); + #endif /* ifndef _BRANDT_CRYPTO_H */