| 
					
				 | 
			
			
				@@ -26,14 +26,15 @@ uint32_t mul_single(const elgamal_cipher_t c, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   mpz_inits(op1, op2, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //mpz_powm(op1, c1, cx, p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* first block */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  powmp_ui(op1, c->c1, cx->_mp_d[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fb_powmp_ui(op1, c->fb_c1, cx->_mp_d[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* second block */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  powmp_ui(op2, c->c1e64, cx->_mp_d[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fb_powmp_ui(op2, c->fb_c1e64, cx->_mp_d[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   mpz_mul_modp(op1, op2, op1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* third block */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  powmp_ui(op2, c->c1e128, cx->_mp_d[2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fb_powmp_ui(op2, c->fb_c1e128, cx->_mp_d[2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   mpz_mul_modp(op1, op2, op1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   fb_powmp_ui(op2, c->fb_c2, x); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -96,24 +97,25 @@ int main() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ssl2_init(t1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ssl2_init(t2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  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); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ssl1_share(r1, r2, y, key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ssl1_open(test, r1, r2, key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  assert(!mpz_cmp_ui(test, mpz_cmp_ui(y, 0) ? 2 : 1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ssl2_share(s1, s2, x, key->sk); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ssl2_open(test, s1, s2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert(!mpz_cmp(test, x)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for (int i = 0; i <  (int) 1e2; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     START_TIMEIT(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    hss_mul(t1, r1, s1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ssl1_share(r1, r2, y, key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     END_TIMEIT(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ssl1_open(test, r1, r2, key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    assert(!mpz_cmp_ui(test, mpz_cmp_ui(y, 0) ? 2 : 1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hss_mul(t1, r1, s1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     hss_mul(t2, r2, s2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifndef NDEBUG 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     gmp_printf("%Zx %Zx\n", x, y); 
			 |