int main(void) { EC_PAIRING p; EC_POINT a, b, c; Element d; pairing_init(p, "ECBN254"); point_init(a, p->g1); point_init(b, p->g2); point_init(c, p->g1); element_init(d, p->g3); point_set_str(a, "[" "0000000000000000000000000000000000000000000000000000000000000001," "0D45589B158FAAF6AB0E4AD38D998E9982E7FF63964EE1460342A592677CCCB0" "]" ); point_set_str(b, "[" "19850140BC38957238BDEB56EC7B97FE30A6A65D15C4BA07CEF54DB5026C7210 " "1DEB7F4B6C1AEFAEBD0EB750B841BD8ABF916EB750FDF7291F99DFD290C28CE0," "14C164D6D18CBC7F64559076E00789C75FF001D1BE0968D210C19FB0D3AD649A " "059A2ABA101B7A3C1FA3CAF4DF6B38F2CB4976287488E33F526FA7E8C5441B4B" "]" ); pairing_map(d, a, b, p); point_print("a", a); point_print("b", b); element_print("d", d); char msg[] = "abc"; point_map_to_point(c, msg, sizeof(msg), 80); point_print("c", c); point_clear(a); point_clear(b); point_clear(c); element_clear(d); pairing_clear(p); return 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() { //clear public key element_clear(g); element_clear(gt); element_clear(X); element_clear(Y); element_clear(h); element_clear(y1); element_clear(y2); element_clear(y3); //clear issuer key element_clear(x); element_clear(y); //clear open key element_clear(x1); element_clear(x2); element_clear(x3); element_clear(x4); element_clear(x5); //clear paring pairing_clear(pairing); }
int main(int argc, char **argv) { pairing_t pairing; double time1, time2; element_t P, a, b, c, Ka, Kb, Kc, t1, t2, t3, t4, t5, t6; pbc_demo_pairing_init(pairing, argc, argv); if (!pairing_is_symmetric(pairing)) pbc_die("pairing must be symmetric"); element_init_G1(P, pairing); element_init_G1(t1, pairing); element_init_G1(t2, pairing); element_init_G1(t3, pairing); element_init_Zr(a, pairing); element_init_Zr(b, pairing); element_init_Zr(c, pairing); element_init_GT(t4, pairing); element_init_GT(t5, pairing); element_init_GT(t6, pairing); element_init_GT(Ka, pairing); element_init_GT(Kb, pairing); element_init_GT(Kc, pairing); time1 = pbc_get_time(); printf("Joux key agreement between A, B and C.\n"); element_random(P); element_random(a); element_random(b); element_random(c); element_mul_zn(t1, P, a); printf("A sends B and C: aP\n"); element_printf("aP = %B\n", t1); element_mul_zn(t2, P, b); printf("B sends A and C: bP\n"); element_printf("bP = %B\n", t2); element_mul_zn(t3, P, c); printf("C sends A and B: cP\n"); element_printf("cP = %B\n", t3); element_pairing(t4, t2, t3); element_pow_zn(Ka, t4, a); element_printf("Ka = %B\n", Ka); element_pairing(t5, t1, t3); element_pow_zn(Kb, t5, b); element_printf("Kb = %B\n", Kb); element_pairing(t6, t1, t2); element_pow_zn(Kc, t6, c); element_printf("Kc = %B\n", Kc); printf("Shared key K = Ka = Kb = Kc\n"); time2 = pbc_get_time(); printf("All time = %fs\n", time2 - time1); element_clear(P); element_clear(a); element_clear(b); element_clear(c); element_clear(Ka); element_clear(Kb); element_clear(Kc); element_clear(t1); element_clear(t2); element_clear(t3); element_clear(t4); element_clear(t5); element_clear(t6); pairing_clear(pairing); return 0; }
int main(int argc, char **argv) { pairing_t pairing; pbc_demo_pairing_init(pairing, argc, argv); if (!pairing_is_symmetric(pairing)) pbc_die("pairing must be symmetric"); double time1, time2; element_t P, Ppub, x, S, H, t1, t2, t3, t4; element_init_Zr(x, pairing); element_init_Zr(H, pairing); element_init_Zr(t1, pairing); element_init_G1(S, pairing); element_init_G1(P, pairing); element_init_G1(Ppub, pairing); element_init_G1(t2, pairing); element_init_GT(t3, pairing); element_init_GT(t4, pairing); printf("ZSS short signature schema\n"); printf("KEYGEN\n"); time1 = pbc_get_time(); element_random(x); element_random(P); element_mul_zn(Ppub, P, x); element_printf("P = %B\n", P); element_printf("x = %B\n", x); element_printf("Ppub = %B\n", Ppub); printf("SIGN\n"); element_from_hash(H, "Message", 7); element_add(t1, H, x); element_invert(t1, t1); element_mul_zn(S, P, t1); printf("Signature of message \"Message\" is:\n"); element_printf("S = %B\n", S); printf("VERIFY\n"); element_from_hash(H, "Message", 7); element_mul_zn(t2, P, H); element_add(t2, t2, Ppub); element_pairing(t3, t2, S); element_pairing(t4, P, P); element_printf("e(H(m)P + Ppub, S) = %B\n", t3); element_printf("e(P, P) = %B\n", t4); if (!element_cmp(t3, t4)) printf("Signature is valid\n"); else printf("Signature is invalid\n"); time2 = pbc_get_time(); printf("All time = %fs\n", time2 - time1); element_clear(P); element_clear(Ppub); element_clear(x); element_clear(S); element_clear(H); element_clear(t1); element_clear(t2); element_clear(t3); element_clear(t4); pairing_clear(pairing); return 0; }
void clean_pbc(struct crypto *pbc) { pairing_clear(pbc->pairing); free(pbc); }
int main(int argc, char **argv) { pairing_t pairing; element_t g1, u1, up1, g2, u2, up2, r; mpz_t r_mpz; element_pp_t g1_pp, g2_pp; double t0, t1; int i, n; printf("reading pairing from stdin...\n"); pbc_demo_pairing_init(pairing, argc, argv); element_init(r, pairing->Zr); element_init(g1, pairing->G1); element_init(u1, pairing->G1); element_init(up1, pairing->G1); element_init(g2, pairing->G2); element_init(u2, pairing->G2); element_init(up2, pairing->G2); element_random(r); element_random(g1); element_random(g2); mpz_init(r_mpz); element_to_mpz(r_mpz, r); element_pp_init(g1_pp, g1); element_pp_init(g2_pp, g2); n = 100; t0 = pbc_get_time(); for (i=0; i<n; i++) { element_pow_mpz(u1, g1, r_mpz); } t1 = pbc_get_time(); printf("G1 exp:\t\t%fs\n", t1 - t0); n = 100; t0 = pbc_get_time(); for (i=0; i<n; i++) { element_pow_mpz(u2, g2, r_mpz); } t1 = pbc_get_time(); printf("G2 exp:\t\t%fs\n", t1 - t0); n = 100; t0 = pbc_get_time(); for (i=0; i<n; i++) { element_pp_pow(up1, r_mpz, g1_pp); } t1 = pbc_get_time(); printf("G1 pp exp:\t%fs\n", t1 - t0); n = 100; t0 = pbc_get_time(); for (i=0; i<n; i++) { element_pp_pow(up2, r_mpz, g2_pp); } t1 = pbc_get_time(); printf("G2 pp exp:\t%fs\n", t1 - t0); if (element_cmp(u1, up1)) { printf("Oops 1!\n"); } if (element_cmp(u2, up2)) { printf("Oops 2!\n"); } mpz_clear(r_mpz); element_clear(g1); element_clear(u1); element_clear(up1); element_clear(g2); element_clear(u2); element_clear(up2); element_clear(r); element_pp_clear(g1_pp); element_pp_clear(g2_pp); pairing_clear(pairing); 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; }
int main(int argc, char* argv[]) { QTextStream err(stderr, QIODevice::WriteOnly); if(argc != 2) { err << "Usage: " << argv[0] << " qbits\n"; return 1; } int qbits; QTextStream in(argv[1], QIODevice::ReadOnly); in >> qbits; if(qbits < 10) { err << "qbits must be greater than 10\n"; return 1; } QTextStream out(stdout, QIODevice::WriteOnly); out << "--- PBC Parameter Utility ---\n"; out << "r < q (for prime r and q)\n"; out << "Bits: " << qbits << "\n"; out << "\n\n"; out.flush(); pbc_param_t params; pairing_t pairing; const int rbits = qbits-8; pbc_param_init_a_gen(params, rbits, qbits); pbc_param_out_str(stdout, params); pairing_init_pbc_param(pairing, params); element_t gen1; element_t neg1; element_t gent; element_t tmp, tmp2; element_init_G1(tmp, pairing); element_init_G1(tmp2, pairing); element_init_Zr(neg1, pairing); element_init_G1(gen1, pairing); element_init_G1(gent, pairing); // neg1 = 1 element_set1(neg1); // neg1 = -1 mod r element_neg(neg1, neg1); do { element_random(gen1); // tmp = gen1^-1 element_pow_zn(tmp, gen1, neg1); // tmp = (gen1^-1)*gen1 == gen1^r element_mul(tmp2, tmp, gen1); } while (!element_is1(tmp2)); element_fprintf(stdout, "g1 = %B\n", gen1); do { element_random(gent); // tmp = gen1^-1 element_pow_zn(tmp, gent, neg1); // tmp = (gen1^-1)*gen1 == gen1^r element_mul(tmp2, tmp, gent); } while (!element_is1(tmp2)); element_fprintf(stdout, "gT = %B\n", gent); element_clear(gen1); element_clear(gent); element_clear(tmp); element_clear(tmp2); element_clear(neg1); pbc_param_clear(params); pairing_clear(pairing); return 0; }