Renamed confirmed -> initator on keypair
Done to reflect that the property is immutable, unlike the "confirmed" field on the decryption state.
This commit is contained in:
@@ -442,7 +442,7 @@ mod tests {
|
|||||||
// 4. device-2 : responds with noise response
|
// 4. device-2 : responds with noise response
|
||||||
let msg_response = match dev2.process(&mut rng, &msg_init, Some(&src1)).unwrap() {
|
let msg_response = match dev2.process(&mut rng, &msg_init, Some(&src1)).unwrap() {
|
||||||
(Some(_), Some(msg), Some(kp)) => {
|
(Some(_), Some(msg), Some(kp)) => {
|
||||||
assert_eq!(kp.confirmed, false);
|
assert_eq!(kp.initiator, false);
|
||||||
msg
|
msg
|
||||||
}
|
}
|
||||||
_ => panic!("unexpected response"),
|
_ => panic!("unexpected response"),
|
||||||
@@ -469,7 +469,7 @@ mod tests {
|
|||||||
// 7. device-2 : responds with noise response
|
// 7. device-2 : responds with noise response
|
||||||
let (msg_response, kp1) = match dev2.process(&mut rng, &msg_init, Some(&src1)).unwrap() {
|
let (msg_response, kp1) = match dev2.process(&mut rng, &msg_init, Some(&src1)).unwrap() {
|
||||||
(Some(_), Some(msg), Some(kp)) => {
|
(Some(_), Some(msg), Some(kp)) => {
|
||||||
assert_eq!(kp.confirmed, false);
|
assert_eq!(kp.initiator, false);
|
||||||
(msg, kp)
|
(msg, kp)
|
||||||
}
|
}
|
||||||
_ => panic!("unexpected response"),
|
_ => panic!("unexpected response"),
|
||||||
@@ -478,7 +478,7 @@ mod tests {
|
|||||||
// device-1 : process noise response
|
// device-1 : process noise response
|
||||||
let kp2 = match dev1.process(&mut rng, &msg_response, Some(&src2)).unwrap() {
|
let kp2 = match dev1.process(&mut rng, &msg_response, Some(&src2)).unwrap() {
|
||||||
(Some(_), None, Some(kp)) => {
|
(Some(_), None, Some(kp)) => {
|
||||||
assert_eq!(kp.confirmed, true);
|
assert_eq!(kp.initiator, true);
|
||||||
kp
|
kp
|
||||||
}
|
}
|
||||||
_ => panic!("unexpected response"),
|
_ => panic!("unexpected response"),
|
||||||
@@ -515,7 +515,7 @@ mod tests {
|
|||||||
println!("msg2 = {} : {} bytes", hex::encode(&msg2[..]), msg2.len());
|
println!("msg2 = {} : {} bytes", hex::encode(&msg2[..]), msg2.len());
|
||||||
println!("msg2 = {:?}", Response::parse(&msg2[..]).unwrap());
|
println!("msg2 = {:?}", Response::parse(&msg2[..]).unwrap());
|
||||||
|
|
||||||
assert!(!ks_r.confirmed, "Responders key-pair is confirmed");
|
assert!(!ks_r.initiator, "Responders key-pair is confirmed");
|
||||||
|
|
||||||
// process response and obtain confirmed key-pair
|
// process response and obtain confirmed key-pair
|
||||||
|
|
||||||
@@ -523,7 +523,7 @@ mod tests {
|
|||||||
let ks_i = ks_i.unwrap();
|
let ks_i = ks_i.unwrap();
|
||||||
|
|
||||||
assert!(msg3.is_none(), "Returned message after response");
|
assert!(msg3.is_none(), "Returned message after response");
|
||||||
assert!(ks_i.confirmed, "Initiators key-pair is not confirmed");
|
assert!(ks_i.initiator, "Initiators key-pair is not confirmed");
|
||||||
|
|
||||||
assert_eq!(ks_i.send, ks_r.recv, "KeyI.send != KeyR.recv");
|
assert_eq!(ks_i.send, ks_r.recv, "KeyI.send != KeyR.recv");
|
||||||
assert_eq!(ks_i.recv, ks_r.send, "KeyI.recv != KeyR.send");
|
assert_eq!(ks_i.recv, ks_r.send, "KeyI.recv != KeyR.send");
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ pub fn create_response<T: Copy, R: RngCore + CryptoRng>(
|
|||||||
|
|
||||||
Ok(KeyPair {
|
Ok(KeyPair {
|
||||||
birth: Instant::now(),
|
birth: Instant::now(),
|
||||||
confirmed: false,
|
initiator: false,
|
||||||
send: Key {
|
send: Key {
|
||||||
id: sender,
|
id: sender,
|
||||||
key: key_send.into(),
|
key: key_send.into(),
|
||||||
@@ -532,7 +532,7 @@ pub fn consume_response<T: Copy>(
|
|||||||
None, // no response message
|
None, // no response message
|
||||||
Some(KeyPair {
|
Some(KeyPair {
|
||||||
birth: Instant::now(),
|
birth: Instant::now(),
|
||||||
confirmed: true,
|
initiator: true,
|
||||||
send: Key {
|
send: Key {
|
||||||
id: sender,
|
id: sender,
|
||||||
key: key_send.into(),
|
key: key_send.into(),
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ impl<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>> Peer<T, S, R,
|
|||||||
keys.previous.as_ref().map(|k| release.push(k.recv.id));
|
keys.previous.as_ref().map(|k| release.push(k.recv.id));
|
||||||
|
|
||||||
// update key-wheel
|
// update key-wheel
|
||||||
if new.confirmed {
|
if new.initiator {
|
||||||
// start using key for encryption
|
// start using key for encryption
|
||||||
*self.0.ekey.lock() = Some(EncryptionState {
|
*self.0.ekey.lock() = Some(EncryptionState {
|
||||||
id: new.send.id,
|
id: new.send.id,
|
||||||
@@ -276,7 +276,7 @@ impl<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>> Peer<T, S, R,
|
|||||||
recv.insert(
|
recv.insert(
|
||||||
new.recv.id,
|
new.recv.id,
|
||||||
DecryptionState {
|
DecryptionState {
|
||||||
confirmed: AtomicBool::new(new.confirmed),
|
confirmed: AtomicBool::new(new.initiator),
|
||||||
keypair: Arc::downgrade(&new),
|
keypair: Arc::downgrade(&new),
|
||||||
key: new.recv.key,
|
key: new.recv.key,
|
||||||
protector: spin::Mutex::new(AntiReplay::new()),
|
protector: spin::Mutex::new(AntiReplay::new()),
|
||||||
|
|||||||
@@ -125,6 +125,8 @@ pub fn worker_inbound<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<
|
|||||||
peer.confirm_key(state.keypair.clone());
|
peer.confirm_key(state.keypair.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update enpoint, TODO
|
||||||
|
|
||||||
// write packet to TUN device, TODO
|
// write packet to TUN device, TODO
|
||||||
|
|
||||||
// trigger callback
|
// trigger callback
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ impl PartialEq for Key {
|
|||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct KeyPair {
|
pub struct KeyPair {
|
||||||
pub birth: Instant, // when was the key-pair created
|
pub birth: Instant, // when was the key-pair created
|
||||||
pub confirmed: bool, // has the key-pair been confirmed?
|
pub initiator: bool, // has the key-pair been confirmed?
|
||||||
pub send: Key, // key for outbound messages
|
pub send: Key, // key for outbound messages
|
||||||
pub recv: Key, // key for inbound messages
|
pub recv: Key, // key for inbound messages
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user