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"); }
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); }
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; }
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; }