use beaconcrypt::*;
fn test_register_pqxdh_beacon(server: &mut Server, beacon: &mut Beacon) -> Vec<u8> {
let message = [0xFFu8; 32];
let phase_1 = beacon.get_registration_bundle().unwrap();
let reg_out = server.get_shared_secret(&phase_1).unwrap();
let phase2 = server
.build_registration_response(reg_out, Some(&message))
.unwrap();
beacon.finish_registration(&phase2.serialized).unwrap()
}
#[test]
fn beacon_can_catch_up() {
let mut server = Server::new(0, None);
let server_id = server.identity_pk().to_owned();
let mut b1 = Beacon::new(0, server_id.as_bytes());
let _ = test_register_pqxdh_beacon(&mut server, &mut b1);
assert!(server.pk_by_kid(1).is_some());
let message = [0xFFu8; 32];
let b1_m1 = server.encrypt_message(&message, 1).unwrap();
let b1_m2 = server.encrypt_message(&message, 1).unwrap();
assert_ne!(b1_m1, b1_m2);
let dec_b1_m1 = b1.decrypt_message(&b1_m1).unwrap();
let dec_b1_m2 = b1.decrypt_message(&b1_m2).unwrap();
assert_eq!(dec_b1_m1.plaintext, dec_b1_m2.plaintext);
assert_eq!(dec_b1_m1.key_id, dec_b1_m2.key_id);
}