mirror of
https://github.com/pezkuwichain/bizinikiwi-bn.git
synced 2026-06-14 23:51:07 +00:00
Add DH key exchange example.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// This is an example of three-party Diffie-Hellman key exchange
|
||||
// Requires two rounds
|
||||
|
||||
extern crate bn;
|
||||
extern crate rand;
|
||||
|
||||
use bn::*;
|
||||
|
||||
fn main() {
|
||||
let rng = &mut rand::thread_rng();
|
||||
|
||||
// Construct private keys
|
||||
let alice_sk = Scalar::random(rng);
|
||||
let bob_sk = Scalar::random(rng);
|
||||
let carol_sk = Scalar::random(rng);
|
||||
|
||||
// Construct public keys
|
||||
let alice_pk = G1::one() * &alice_sk;
|
||||
let bob_pk = G1::one() * &bob_sk;
|
||||
let carol_pk = G1::one() * &carol_sk;
|
||||
|
||||
// Round one:
|
||||
let alice_dh_1 = &bob_pk * &carol_sk;
|
||||
let bob_dh_1 = &carol_pk * &alice_sk;
|
||||
let carol_dh_1 = &alice_pk * &bob_sk;
|
||||
|
||||
// Round two:
|
||||
let alice_dh_2 = alice_dh_1 * &alice_sk;
|
||||
let bob_dh_2 = bob_dh_1 * &bob_sk;
|
||||
let carol_dh_2 = carol_dh_1 * &carol_sk;
|
||||
|
||||
// All parties should arrive to the same shared secret
|
||||
assert!(alice_dh_2 == bob_dh_2 && bob_dh_2 == carol_dh_2);
|
||||
}
|
||||
Reference in New Issue
Block a user