Browse Source

Add sanity_check file.

Michele Orrù 6 years ago
parent
commit
e494ea6d0b
4 changed files with 56 additions and 6 deletions
  1. 4 1
      src/Makefile.am
  2. 13 1
      src/hss.h
  3. 2 4
      src/rms_bench.c
  4. 37 0
      src/sanity_check.c

+ 4 - 1
src/Makefile.am

@@ -1,6 +1,6 @@
 BENCHMARKS = rms_bench ddlog_bench exp_bench mul_bench
 
-bin_PROGRAMS = $(BENCHMARKS)
+bin_PROGRAMS = $(BENCHMARKS) sanity_check
 check_PROGRAMS = group_test
 
 DDLOG = ddlog.c ddlog.h
@@ -22,3 +22,6 @@ exp_bench_SOURCES = exp_bench.c \
 	$(ENTROPY) $(GROUP) $(FBASE) $(TIMEIT)
 mul_bench_SOURCES = mul_bench.c \
 	$(ENTROPY) $(GROUP)
+
+sanity_check_SOURCES = sanity_check.c \
+	$(DDLOG) $(ELGAMAL) $(ENTROPY) $(GROUP) $(FBASE) $(HSS) $(TIMEIT)

+ 13 - 1
src/hss.h

@@ -8,7 +8,19 @@
 #define SK_SIZE   160
 #define SK_BLOCKS ((SK_SIZE)/(SS_BASE))
 
-void hss_init();
+#define hss_init()                              \
+  do {                                          \
+    group_init();                               \
+    mpz_entropy_init();                         \
+    dlog_precompute();                          \
+  } while (0)
+
+#define hss_clear()                             \
+  do {                                          \
+    group_clear();                              \
+  } while (0)
+
+
 void hss_del();
 
 

+ 2 - 4
src/rms_bench.c

@@ -14,9 +14,7 @@ INIT_TIMEIT(CLOCK_PROCESS_CPUTIME_ID);
 
 int main()
 {
-  group_init();
-  mpz_entropy_init();
-  dlog_precompute();
+  hss_init();
 
   mpz_t test;
   mpz_init(test);
@@ -97,6 +95,6 @@ int main()
 
   mpz_clears(x, y, NULL);
   ELGAMAL_KEY(clear, key);
-  group_clear();
+  hss_clear();
   return 0;
 }

+ 37 - 0
src/sanity_check.c

@@ -0,0 +1,37 @@
+#include "config.h"
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <gmp.h>
+
+#include "ddlog.h"
+#include "hss.h"
+
+int main()
+{
+  hss_init();
+
+
+  mpz_t x, y;
+  uint32_t xc, yc;
+
+  mpz_inits(x, y, NULL);
+
+  mpz_urandomm(x, _rstate, q);
+  mpz_set_ui(y, 2);
+
+  /* y is a uniformly random group element */
+  mpz_powm(y, y, x, p);
+  /* x = 2y  (mod p) */
+  mpz_mul_2exp(x, y, 1);
+  mpz_mod(x, x, p);
+
+  xc = convert(x->_mp_d);
+  yc = convert(y->_mp_d);
+  printf("%d %d\n", xc, yc);
+
+  hss_clear();
+  return 0;
+
+}