full_exchange/
full_exchange.rs1use pq_msg::{
2 exchange::pair::KEMPair, messaging::MessageSession, messaging::create_nonce,
3 messaging::gen_session_id, signatures::keypair::SignerPair,
4};
5
6fn main() {
7 let alice_kem = KEMPair::create();
8 let alice_signer = SignerPair::create();
9
10 let bob_kem = KEMPair::create();
11 let bob_signer = SignerPair::create();
12
13 let base_nonce = create_nonce(&gen_session_id(), 0);
15
16 let (mut alice_session, ciphertext) = MessageSession::new_initiator(
18 alice_kem,
19 alice_signer.clone(),
20 base_nonce,
21 &bob_kem.to_bytes().unwrap().0, &bob_signer.to_bytes().unwrap().0, )
24 .unwrap();
25
26 let mut bob_session = MessageSession::new_responder(
28 bob_kem,
29 bob_signer.clone(),
30 base_nonce,
31 &ciphertext,
32 &alice_signer.to_bytes().unwrap().0, )
34 .unwrap();
35
36 let message = b"Hello, Bob! This is a secret message.";
41 let encrypted_message = alice_session.craft_message(message).unwrap();
42
43 let raw_message = bob_session.validate_message(&encrypted_message).unwrap();
45
46 let message_str = String::from_utf8_lossy(message);
48 let raw_message_str = String::from_utf8_lossy(&raw_message);
49
50 println!("[1] Alice's message: {}", message_str);
51 println!("[2] Bob's decrypted message: {}", raw_message_str);
52
53 let reply = b"Hello, Alice! I received your message safely.";
55 let encrypted_reply = bob_session.craft_message(reply).unwrap();
56
57 let raw_reply = alice_session.validate_message(&encrypted_reply).unwrap();
59
60 let reply_str = String::from_utf8_lossy(reply);
62 let raw_reply_str = String::from_utf8_lossy(&raw_reply);
63
64 println!("[3] Bob's reply: {}", reply_str);
65 println!("[4] Alice's decrypted reply: {}", raw_reply_str);
66}