use sm9::*;
#[test]
fn test_key_exchange() {
let mpk = MasterPublicKey::read_pem_file("master_exchange_public_key.pem")
.expect("read master_public_key_file error");
let alice_id = b"Alice";
let alice_key = UserPrivateKey::read_pem_file("alice_exchange_private_key.pem")
.expect("read user_privte_key_file error");
let bob_id = b"Bob";
let bob_key = UserPrivateKey::read_pem_file("bob_exchange_private_key.pem")
.expect("read user_privte_key_file error");
let mut initiator = KeyExchanger::new(alice_id, &alice_key, &mpk, true).unwrap();
let mut responder = KeyExchanger::new(bob_id, &bob_key, &mpk, false).unwrap();
let ra = initiator.generate_ephemeral_secret(bob_id).unwrap();
let rb = responder.generate_ephemeral_secret(alice_id).unwrap();
let rb_received = EphemeralSecret::from_slice(rb.as_slice());
let ska = initiator.generate_shared_secret(&rb_received).unwrap();
let ra_received = EphemeralSecret::from_slice(ra.as_slice());
let skb = responder.generate_shared_secret(&ra_received).unwrap();
assert_eq!(ska, skb);
let sb = responder.generate_comfirmable_secret().unwrap();
let sb_received = ComfirmableSecret::from_slice(sb.as_slice());
let confirmation_a = initiator.comfirm(&sb_received).unwrap();
let sa = initiator.generate_comfirmable_secret().unwrap();
let sa_received = ComfirmableSecret::from_slice(sa.as_slice());
let confirmation_b = responder.comfirm(&sa_received).unwrap();
assert!(confirmation_a);
assert!(confirmation_b);
}