mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-10-28 00:10:50 +08:00
refactor: 将 DTLS 本地依赖迁移到 libs 目录
This commit is contained in:
70
libs/dtls/src/handshake/handshake_test.rs
Normal file
70
libs/dtls/src/handshake/handshake_test.rs
Normal file
@@ -0,0 +1,70 @@
|
||||
use std::io::{BufReader, BufWriter};
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
use super::*;
|
||||
use crate::compression_methods::*;
|
||||
use crate::handshake::handshake_message_client_hello::*;
|
||||
use crate::handshake::handshake_random::HandshakeRandom;
|
||||
use crate::record_layer::record_layer_header::ProtocolVersion;
|
||||
|
||||
#[test]
|
||||
fn test_handshake_message() -> Result<()> {
|
||||
let raw_handshake_message = vec![
|
||||
0x01, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xfe, 0xfd, 0xb6,
|
||||
0x2f, 0xce, 0x5c, 0x42, 0x54, 0xff, 0x86, 0xe1, 0x24, 0x41, 0x91, 0x42, 0x62, 0x15, 0xad,
|
||||
0x16, 0xc9, 0x15, 0x8d, 0x95, 0x71, 0x8a, 0xbb, 0x22, 0xd7, 0x47, 0xec, 0xd8, 0x3d, 0xdc,
|
||||
0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
let parsed_handshake = Handshake {
|
||||
handshake_header: HandshakeHeader {
|
||||
handshake_type: HandshakeType::ClientHello,
|
||||
length: 0x29,
|
||||
message_sequence: 0,
|
||||
fragment_offset: 0,
|
||||
fragment_length: 0x29,
|
||||
},
|
||||
handshake_message: HandshakeMessage::ClientHello(HandshakeMessageClientHello {
|
||||
version: ProtocolVersion {
|
||||
major: 0xFE,
|
||||
minor: 0xFD,
|
||||
},
|
||||
random: HandshakeRandom {
|
||||
gmt_unix_time: if let Some(unix_time) =
|
||||
SystemTime::UNIX_EPOCH.checked_add(Duration::new(3056586332u64, 0))
|
||||
{
|
||||
unix_time
|
||||
} else {
|
||||
SystemTime::UNIX_EPOCH
|
||||
},
|
||||
random_bytes: [
|
||||
0x42, 0x54, 0xff, 0x86, 0xe1, 0x24, 0x41, 0x91, 0x42, 0x62, 0x15, 0xad, 0x16,
|
||||
0xc9, 0x15, 0x8d, 0x95, 0x71, 0x8a, 0xbb, 0x22, 0xd7, 0x47, 0xec, 0xd8, 0x3d,
|
||||
0xdc, 0x4b,
|
||||
],
|
||||
},
|
||||
cookie: vec![],
|
||||
cipher_suites: vec![],
|
||||
compression_methods: CompressionMethods { ids: vec![] },
|
||||
extensions: vec![],
|
||||
}),
|
||||
};
|
||||
|
||||
let mut reader = BufReader::new(raw_handshake_message.as_slice());
|
||||
let h = Handshake::unmarshal(&mut reader)?;
|
||||
assert_eq!(
|
||||
h, parsed_handshake,
|
||||
"handshakeMessageClientHello unmarshal: got {h:?}, want {parsed_handshake:?}"
|
||||
);
|
||||
|
||||
let mut raw = vec![];
|
||||
{
|
||||
let mut writer = BufWriter::<&mut Vec<u8>>::new(raw.as_mut());
|
||||
h.marshal(&mut writer)?;
|
||||
}
|
||||
assert_eq!(
|
||||
raw, raw_handshake_message,
|
||||
"handshakeMessageClientHello marshal: got {raw:?}, want {raw_handshake_message:?}"
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user