Browse Source

checkpoint 3seconds with allocation working

Michele Orrù 7 years ago
parent
commit
b1cc05da56
3 changed files with 23 additions and 28 deletions
  1. 1 1
      configure.ac
  2. 9 13
      src/elgamal.c
  3. 13 14
      src/rms.c

+ 1 - 1
configure.ac

@@ -43,7 +43,7 @@ AC_SUBST([AM_MAKEFLAGS], [--no-print-directory])
 
 AC_ARG_ENABLE(debug,
    AS_HELP_STRING([--enable-debug], [enable debugging, default: no]),
-   CFLAGS+=" -UNDEBUG -O0 -ggdb -fbounds-check -D_FORTIFY_SOURCE=1",
+   CFLAGS+=" -UNDEBUG -O3 -ggdb -fbounds-check -D_FORTIFY_SOURCE=1",
    CFLAGS+=" -DNDEBUG -O3 -march=native")
 
 

+ 9 - 13
src/elgamal.c

@@ -40,17 +40,15 @@ void elgamal_encrypt(elgamal_cipher_t rop, const elgamal_key_t k, const mpz_t m)
   mpz_powm(rop->c2, rop->c2, x, p);
   mpz_set_ui(x, 2);
   mpz_powm(x, x, m, p);
-  mpz_mul(rop->c2, rop->c2, x);
-  mpz_mod(rop->c2, rop->c2, p);
+  mpz_mul_modp(rop->c2, rop->c2, x);
 
   mpz_clear(x);
 
   /* fixed bases */
-  //fb_set(rop->fb_c1, rop->c1);
-  /* fb_set(rop->fb_c1e64, rop->c1e64); */
-  /* fb_set(rop->fb_c1e128, rop->c1e128); */
-  /* fb_set(rop->fb_c2, rop->c2); */
-
+  fb_set(rop->fb_c1, rop->c1);
+  fb_set(rop->fb_c1e64, rop->c1e64);
+  fb_set(rop->fb_c1e128, rop->c1e128);
+  fb_set_small(rop->fb_c2, rop->c2);
 
 }
 
@@ -69,7 +67,6 @@ void elgamal_cipher_init(elgamal_cipher_t c)
   c->fb_c1 = fb_init();
   c->fb_c1e64 = fb_init();
   c->fb_c1e128 = fb_init();
-  c->fb_c1e128 = fb_init();
   c->fb_c2 = fb_init();
 }
 
@@ -79,7 +76,6 @@ void elgamal_cipher_clear(elgamal_cipher_t c)
   fb_clear(c->fb_c1);
   fb_clear(c->fb_c1e64);
   fb_clear(c->fb_c1e128);
-  fb_clear(c->fb_c1e128);
   fb_clear(c->fb_c2);
 }
 
@@ -92,9 +88,9 @@ void elgamal_cipher_set(elgamal_cipher_t rop, const elgamal_cipher_t op1)
   mpz_set(rop->c1e128, op1->c1e128);
 
   /* fixed bases */
-  //fb_set(rop->fb_c1, rop->c1);
-  //fb_set(rop->fb_c1e64, rop->c1e64);
-  //fb_set(rop->fb_c1e128, rop->c1e128);
-  //fb_set(rop->fb_c2, rop->c2);
+  fb_copy(rop->fb_c1, op1->fb_c1);
+  fb_copy(rop->fb_c1e64, op1->fb_c1e64);
+  fb_copy(rop->fb_c1e128, op1->fb_c1e128);
+  fb_copy(rop->fb_c2, op1->fb_c2);
 
 }

+ 13 - 14
src/rms.c

@@ -36,10 +36,10 @@ uint32_t mul_single(const elgamal_cipher_t c,
   powmp_ui(op2, c->c1e128, cx->_mp_d[2]);
   mpz_mul_modp(op1, op2, op1);
 
-  powmp_ui(op2, c->c2, x);
+  fb_powmp_ui(op2, c->fb_c2, x);
   mpz_mul_modp(op2, op2, op1);
 
-  const uint32_t converted = convert(op2->_mp_d);
+  const uint32_t converted = convert(PTR(op2));
   mpz_clears(op1, op2, NULL);
   return converted;
 }
@@ -96,21 +96,20 @@ int main()
   ssl2_init(t1);
   ssl2_init(t2);
 
-  for (int i = 0; i <  (int) 1e2; i++) {
-
-    mpz_urandomb(y, _rstate, 1);
-    mpz_urandomb(x, _rstate, 1);
-    /* mpz_set_ui(x, 1); */
-    /* mpz_set_ui(y, 1); */
+  mpz_urandomb(y, _rstate, 1);
+  mpz_urandomb(x, _rstate, 1);
+  /* mpz_set_ui(x, 1); */
+  /* mpz_set_ui(y, 1); */
 
-    ssl2_share(s1, s2, x, key->sk);
-    ssl2_open(test, s1, s2);
-    assert(!mpz_cmp(test, x));
+  ssl2_share(s1, s2, x, key->sk);
+  ssl2_open(test, s1, s2);
+  assert(!mpz_cmp(test, x));
 
-    ssl1_share(r1, r2, y, key);
-    ssl1_open(test, r1, r2, key);
-    assert(!mpz_cmp_ui(test, mpz_cmp_ui(y, 0) ? 2 : 1));
+  ssl1_share(r1, r2, y, key);
+  ssl1_open(test, r1, r2, key);
+  assert(!mpz_cmp_ui(test, mpz_cmp_ui(y, 0) ? 2 : 1));
 
+  for (int i = 0; i <  (int) 1e2; i++) {
     START_TIMEIT();
     hss_mul(t1, r1, s1);
     END_TIMEIT();