1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::io::Cursor;
use byteorder::{LittleEndian, ReadBytesExt};
use crate::secure::{SecureHandshake, SecureHandshakeHeader, SECURE_HANDSHAKE_HEAD_SIZE};
use super::SecureHandshakeError;
pub fn decode_handshake_head(buf: &[u8]) -> Result<SecureHandshake, SecureHandshakeError> {
let key_size = Cursor::new(&buf[..4]).read_u32::<LittleEndian>()?;
let header =
bincode::deserialize::<SecureHandshakeHeader>(&buf[4..SECURE_HANDSHAKE_HEAD_SIZE])?;
Ok(SecureHandshake {
header,
encrypted_key: vec![0_u8; key_size as usize],
})
}