Inline Connection::update_keys() into decrypt_packet()

This commit is contained in:
Dirkjan Ochtman
2018-10-23 20:52:43 +02:00
parent 370e11c5b3
commit 8f7175cd6f
+7 -16
View File
@@ -804,20 +804,6 @@ impl Connection {
self.set_loss_detection_alarm(config);
}
pub fn update_keys(
&mut self,
packet: u64,
header: &[u8],
payload: &mut BytesMut,
) -> Result<(), ()> {
let new = self.crypto.as_mut().unwrap().update(self.side);
new.decrypt(packet, header, payload)?;
let old = mem::replace(self.crypto.as_mut().unwrap(), new);
self.prev_crypto = Some((packet, old));
self.key_phase = !self.key_phase;
Ok(())
}
pub fn transmit_handshake(&mut self, messages: &[u8]) {
let offset = {
let ss = self
@@ -2460,8 +2446,13 @@ impl Connection {
// Illegal key update
return Err(Some(TransportError::PROTOCOL_VIOLATION));
}
self.update_keys(number, &packet.header_data, &mut packet.payload)
.map_err(|_| None)?;
let new = self.crypto.as_mut().unwrap().update(self.side);
new.decrypt(number, &packet.header_data, &mut packet.payload)
.map_err(|()| None)?;
let old = mem::replace(self.crypto.as_mut().unwrap(), new);
self.prev_crypto = Some((number, old));
self.key_phase = !self.key_phase;
Ok((packet.payload.to_vec(), number))
} else {
let crypto = match (handshake, &self.prev_crypto) {