aboutsummaryrefslogtreecommitdiff
path: root/test_crypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'test_crypto.c')
-rw-r--r--test_crypto.c113
1 files changed, 112 insertions, 1 deletions
diff --git a/test_crypto.c b/test_crypto.c
index 7e8fe2b..33b9a9b 100644
--- a/test_crypto.c
+++ b/test_crypto.c
@@ -27,6 +27,10 @@
#include "test.h"
+static uint16_t bidders;
+static uint16_t prizes;
+static struct AuctionData *ad;
+
int
test_smc_2d_array ()
{
@@ -43,6 +47,7 @@ test_smc_2d_array ()
check (array[i][j], "point has not been initialized");
smc_free2 (array, size1, size2);
+ return 1;
}
@@ -64,6 +69,7 @@ test_smc_3d_array ()
check (array[i][j][k], "point has not been initialized");
smc_free3 (array, size1, size2, size3);
+ return 1;
}
@@ -96,6 +102,7 @@ test_serialization ()
gcry_mpi_point_release (newp);
gcry_mpi_release (oldi);
gcry_mpi_release (newi);
+ return 1;
}
@@ -114,6 +121,7 @@ test_smc_zkp_dl ()
gcry_mpi_release (x);
gcry_mpi_point_release (v);
+ return 1;
}
@@ -142,6 +150,7 @@ test_smc_zkp_2dle ()
gcry_mpi_point_release (g2);
gcry_mpi_point_release (v);
gcry_mpi_point_release (w);
+ return 1;
}
@@ -165,13 +174,110 @@ test_smc_zkp_0og ()
gcry_mpi_point_release (y);
gcry_mpi_point_release (alpha);
gcry_mpi_point_release (beta);
+ return 1;
+}
+
+
+int
+test_setup_auction_data ()
+{
+ uint16_t i;
+
+ ad = calloc (bidders, sizeof (struct AuctionData));
+
+ for (i = 0; i < bidders; i++)
+ {
+ ad[i].n = bidders;
+ ad[i].i = i;
+ ad[i].k = prizes;
+ ad[i].b = 2 * i;
+ }
+ return 1;
+}
+
+
+int
+test_prologue ()
+{
+ uint16_t i, s;
+ unsigned char *bufs[bidders];
+ size_t lens[bidders];
+
+ for (i = 0; i < bidders; i++)
+ {
+ bufs[i] = smc_gen_keyshare (&ad[i], &lens[i]);
+ check (bufs[i], "failed to gen keyshare");
+ }
+
+ for (i = 0; i < bidders; i++)
+ {
+ for (s = 0; s < bidders; s++)
+ {
+ if (s == i)
+ continue;
+ check (smc_recv_keyshare (&ad[i], bufs[s], lens[s], s),
+ "failed checking keyshare");
+ }
+ }
+
+ for (i = 0; i < bidders; i++)
+ free (bufs[i]);
+ return 1;
+}
+
+
+int
+test_round1 ()
+{
+ uint16_t i, s;
+ unsigned char *bufs[bidders];
+ size_t lens[bidders];
+
+ for (i = 0; i < bidders; i++)
+ {
+ bufs[i] = smc_encrypt_bid (&ad[i], &lens[i]);
+ check (bufs[i], "failed to encrypt bid");
+ }
+
+ for (i = 0; i < bidders; i++)
+ {
+ for (s = 0; s < bidders; s++)
+ {
+ if (s == i)
+ continue;
+ check (smc_recv_encrypted_bid (&ad[i], bufs[s], lens[s], s),
+ "failed checking encrypted bid");
+ }
+ }
+
+ for (i = 0; i < bidders; i++)
+ free (bufs[i]);
+ return 1;
+}
+
+
+void
+cleanup_auction_data ()
+{
+ uint16_t i;
+
+ for (i = 0; i < bidders; i++)
+ {
+ free (ad[i].y);
+ smc_free2 (ad[i].alpha, ad[i].n, ad[i].k);
+ smc_free2 (ad[i].beta, ad[i].n, ad[i].k);
+ }
+ free (ad);
}
int
main (int argc, char *argv[])
{
- int repeat = 16;
+ int repeat = 8;
+
+ bidders = 2;
+ prizes = 2 * bidders;
BRANDT_init ();
@@ -185,6 +291,11 @@ main (int argc, char *argv[])
run (test_smc_zkp_dl);
run (test_smc_zkp_2dle);
run (test_smc_zkp_0og);
+
+ run (test_setup_auction_data);
+ run (test_prologue);
+ run (test_round1);
+ cleanup_auction_data ();
}
return ret;