Exemplo n.º 1
0
static void init_pairing(const char *s) {
	pairing_init_set_str(pairing, s);
	assign_field(pairing->G1, "G1");
	assign_field(pairing->G2, "G2");
	assign_field(pairing->GT, "GT");
	assign_field(pairing->Zr, "Zr");
}
Exemplo n.º 2
0
int main(void) {
  pairing_t p;
  pairing_init_set_str(p,
"type a\n"
"q 8780710799663312522437781984754049815806883199414208211028653399266475630880222957078625179422662221423155858769582317459277713367317481324925129998224791\n"
"h 12016012264891146079388821366740534204802954401251311822919615131047207289359704531102844802183906537786776\n"
"r 730750818665451621361119245571504901405976559617\n"
"exp2 159\n"
"exp1 107\n"
"sign1 1\n"
"sign0 1\0a b a b\n"
  );
  pairing_clear(p);
  return 0;
}
Manager::Manager()
{
	pairing_init_set_str(pairing, _PAIRING_PARAM_);
	//init public key
	element_init_G1(g, pairing);
	element_init_GT(gt, pairing);
	element_init_G1(X, pairing);
	element_init_G1(Y, pairing);
	element_init_GT(h, pairing);
	element_init_GT(y1, pairing);
	element_init_GT(y2, pairing);
	element_init_GT(y3, pairing);
	//init issuer key
	element_init_Zr(x, pairing);
	element_init_Zr(y, pairing);
	//init open key
	element_init_Zr(x1, pairing);
	element_init_Zr(x2, pairing);
	element_init_Zr(x3, pairing);
	element_init_Zr(x4, pairing);
	element_init_Zr(x5, pairing);
}
Exemplo n.º 4
0
int main(int argc, char **argv) {
  
  FILE  *fpairing, *ftag, *fdata, *fresult, *fplain, *fkey, *fcipher, *fpub;
  pairing_t pairing;
  paillier_pubkey_t *pub;
  paillier_prvkey_t *priv;
  element_t g, h, u, sig1, sig2, sig3, temp_pow, m, g1, g2;
  element_t public_key, tag, tag_prod;
  element_t secret_key;
  paillier_get_rand_t get_rand;
  paillier_ciphertext_t *cipher1, *cipher2;
  paillier_plaintext_t *plain1, *plain2;
 
  mpz_t pub_n, a, b, data2, nsquare;
  

  int count = 0, val=5;
  pairing_init_set_str(pairing, param_str);
  //mpz_init_set_str(data_sum, "0", 10);

  plain1 = (paillier_plaintext_t*) malloc(sizeof(paillier_plaintext_t));
  plain2 = (paillier_plaintext_t*) malloc(sizeof(paillier_plaintext_t));
  cipher1 = (paillier_ciphertext_t*) malloc(sizeof(paillier_ciphertext_t));
  cipher2 = (paillier_ciphertext_t*) malloc(sizeof(paillier_ciphertext_t));

  //pbc_demo_pairing_init(pairing, argc, argv);
  element_init_G1(g1, pairing);
  element_init_G1(g2, pairing);
  element_init_G2(g, pairing);
  element_init_G2(public_key, pairing);
  element_init_G1(u, pairing);
  element_init_G1(temp_pow, pairing);
  element_init_G2(public_key, pairing);
  element_init_G1(h, pairing);
  element_init_G1(m, pairing);
  element_init_G1(sig1, pairing);
  element_init_G1(sig2, pairing);
  element_init_G1(sig3, pairing); 
  element_init_G1(tag, pairing); 
  element_init_G1(tag_prod, pairing);
  element_init_Zr(secret_key, pairing);
//  mpz_init(pub_n);
  char *len;
  mpz_init(a);
  mpz_init(b);
  mpz_init(data2);
  printf("Short signature test\n");
  len = (char *)malloc(2048*sizeof(char));

 if((fpub = fopen("pub.txt", "r")))
    {
       	pub = (paillier_pubkey_t*) malloc(sizeof(paillier_pubkey_t));
	priv = (paillier_prvkey_t*) malloc(sizeof(paillier_prvkey_t));	
	mpz_init(pub->n_squared);
	mpz_init(pub->n);
	fgets(len, 1000, fpub);
   	mpz_init_set_str(pub->p, len, 10);
	fgets(len, 1000, fpub);
   	mpz_init_set_str(pub->q, len, 10);
	fgets(len, 1000, fpub);
   	mpz_init_set_str(pub->n_plusone, len, 10);
	//printf("value of nplusone : \n");
	//mpz_out_str(stdout, 10, pub->n_plusone);
	paillier_keygen(&pub, &priv, get_rand, 0);
        pub->bits = mpz_sizeinbase(pub->n, 2);	
        fclose(fpub);
    }  

  
//setting already known pairing parameters
  if((fpairing = fopen("pairing.txt", "r")))
    {
	fgets(len, 1000, fpairing);
	//printf("\n %s\n", len);
   	element_set_str(g, len, 10);
	//element_printf(" g = %B\n", g);
	fgets(len, 1000, fpairing);
	//printf("\n %s\n", len);
   	element_set_str(u, len, 10);
	//element_printf("\n u= %B\n", u);
	fgets(len, 1000, fpairing);
	element_set_str(secret_key, len, 10);
	//element_printf(" secretkey %B\n",secret_key);
	fgets(len, 1000, fpairing);
	element_set_str(public_key, len, 10);
        //element_printf(" publickey %B\n", public_key);
	fgets(len, 1000, fpairing);
	element_set_str(h, len, 10);
        //element_printf(" \nh = %B\n", h);
	fgets(len, 1000, fpairing);
	mpz_init_set_str(pub_n, len, 10);
	//printf("\n n = ");
	//mpz_out_str(stdout, 10, pub_n);
	fclose(fpairing);
    }
   
  element_set1(tag_prod);
 
   ftag = fopen("./tag/output5.txt", "r");
   fgets(len, 1000, ftag);
   element_set_str(g1, len, 10);
   element_printf("\ng1 = %B\n", g1);
   fclose(ftag);  
 
   ftag = fopen("./tag/output6.txt", "r");
   fgets(len, 1000, ftag);
   element_set_str(g2, len, 10);
   element_printf("\ng2 = %B\n", g2);
   fclose(ftag);

   fplain = fopen("./split/output5.txt", "r");
   fgets(len, 1000, fplain);
//   printf("\nlen %s", len);
   mpz_set_str(a, len, 10);
   //element_printf("\na = %Zd\n", a);
   fclose(fplain);
  fplain = fopen("./split/output6.txt", "r");
   fgets(len, 1000, fplain);
   mpz_set_str(b, len, 10);

  fcipher = fopen("./cipher/copy1/output5.txt", "r");
   fgets(len, 1000, fcipher);
   mpz_init_set_str(cipher1->c, len, 10);
  fclose(fcipher);

   fcipher = fopen("./cipher/copy1/output6.txt", "r");
   fgets(len, 1000, fcipher);
   mpz_init_set_str(cipher2->c, len, 10);
   fclose(fcipher);
  
   paillier_mul(pub, cipher2, cipher2, cipher1);
   plain1 = paillier_dec(plain1, pub, priv, cipher2);
  //tag
    mpz_t an;
    mpz_init(an);
    mpz_init(nsquare);
   // mpz_mul(an, a, pub_n);
    mpz_mul(nsquare, pub_n, pub_n);
    element_pow_mpz(temp_pow,u, plain1->m); 
    element_mul(temp_pow, temp_pow, h);
    element_pow_zn(sig1, temp_pow, secret_key);
    element_printf("\n signature of plain = %B\n", sig1);  

    //mpz_mul(an, b, pub_n);
   // mpz_mul(nsquare, pub_n, pub_n);
    element_pow_mpz(temp_pow,u, b); 
    element_mul(temp_pow, temp_pow, h);
    element_pow_zn(sig2, temp_pow, secret_key);
    element_printf("\n signature of b = %B\n", sig2);  
   
   //element_printf("\nb = %Zd\n", b);
   fclose(fplain);
     mpz_add(a, a, b);
   //  mpz_mod(a, a, pub_n);
  // mpz_mul(a, a, pub_n);
  // mpz_mod(a, a, nsquare);
   count = 2;
   element_pow_mpz(temp_pow,u, a);
   mpz_set_ui(data2, count);
  //  itoa(count, len, 10);+
    //element_printf(" \nh = %B\n", h);
    element_pow_mpz(h, h, data2);
    element_mul(temp_pow, temp_pow, h);
    //element_printf("\n h. u^bN = %B\n", temp_pow);
    element_pow_zn(sig3, temp_pow, secret_key);
    element_printf("\n sig 3 %B\n", sig3); 
    element_mul(g2, g2, g1);
    element_printf("\n Direct Product %B\n", g2); 
    element_mul(sig2, sig1, sig2);
    element_printf("\n Direct Product %B\n", sig2); 
   
 return 0;
}
Exemplo n.º 5
0
int main() {
    // declaring pairing parameters
    pairing_t p;
    pairing_init_set_str(p, param_str);
    FILE *pf;
    // declaring elements
    element_t C, g1, g2, g3;
   // element_init_G1(C, p);
    element_init_G1(g1, p);
    element_init_G1(g2, p);
    char *len;
    len = (char *) malloc(1000*sizeof(char));
    //element_init_G1(g3, p);
    pf = fopen("comp.txt", "r");
    fgets(len, 1000,pf);
    element_set_str(g1, len, 10);	
    fclose(pf);
    element_printf("g1 = %B\n\n", g1);
     pf = fopen("comp1.txt", "r");
    fgets(len, 1000,pf);
    element_set_str(g2, len, 10);	
    fclose(pf);
    element_printf("g2 = %B\n\n", g2);
    element_mul(g2, g2, g1);
    element_printf("prod = %B\n\n", g2);
    ///element_t a, b;
    //element_init_Zr(a, p);
    //element_init_Zr(b, p);
   
    //int i;
   // for(i = 0; i < 10; i++) {
        // randomizing elements
       // element_random(g1);
       // element_random(g2);
       // element_random(g3);
   
        //element_random(a);
        //element_random(b);
   
        // g1 <- g1 ^ a
        //element_pow_zn(g1, g1, a);
        // g2 <- g2 ^ b
        //element_pow_zn(g2, g2, b);
   
        // C <- g1^a  *  g2^b
        //element_mul(C, g1, g2);

        // C <- g1^a  *  g2^b  * g3
        //element_mul(C, C, g3);
   /*
        element_printf("g1 = %B\n", g1);
        element_printf("g2 = %B\n", g2);
	
        char buf1[element_length_in_bytes(g1)], buf2[element_length_in_bytes(g2)];
        element_to_bytes(buf1, g1);
	element_to_bytes(buf2, g2);
        pf = fopen("comp.txt", "w");
        
        element_fprintf(pf, "%s", buf1);
        fclose(pf); 
         pf = fopen("comp1.txt", "w");
        
        element_fprintf(pf, "%s", buf2);
        fclose(pf);
	element_mul(g2, g2, g1);
         element_printf("prod = %B\n", g2);
       // element_from_bytes(C, buf);
        //element_printf("C = %B\n\n", C);
   // }
   
   */   
   // element_clear(C);
    element_clear(g1);
   // element_clear(g2);
    //element_clear(g3);
    //element_clear(a);
    //element_clear(b);
   
    pairing_clear(p);
   
    return 0;
}