$pairing = new Crypt::PBC("params_a.txt"); $P = $pairing->init_G2->random; # generator in G2 $s = $pairing->init_Zr->random; # master secret $P_pub = $pairing->init_G2->pow_zn($P, $s); # master public key my $Q_0 = $pairing->init_G1->set_to_hash( sha1("node_id=22609") ); # tye my $Q_1 = $pairing->init_G1->set_to_hash( sha1("node_id=9073") ); # merlyn my $d_0 = $pairing->init_G1->pow_zn( $Q_0, $s ); my $d_1 = $pairing->init_G1->pow_zn( $Q_1, $s ); my $K_01_a = $pairing->init_GT->e_hat( $Q_0, $d_1 ); # merlyn's version of K_01 my $K_01_b = $pairing->init_GT->e_hat( $d_0, $Q_1 ); # tye's version print "K_01 (these better be the same):\n\t", substr($K_01_a->as_base64, 0, 80), "\n\t", substr($K_01_b->as_base64, 0, 80), "\n"; my $K_10_a = $pairing->init_GT->e_hat( $Q_1, $d_0 ); # tye's version of K_10 my $K_10_b = $pairing->init_GT->e_hat( $d_1, $Q_0 ); # merlyn's version print "K_10 (these also better be the same):\n\t", substr($K_10_a->as_base64, 0, 80), "\n\t", substr($K_10_b->as_base64, 0, 80), "\n\n";