wireforge_app/rdp/
negotiation.rs1pub struct RdpNegotiationRequest<'a> { buf: &'a [u8] }
2impl<'a> RdpNegotiationRequest<'a> {
3 pub fn parse(buf:&'a[u8])->Option<Self>{
4 if buf.len()<8||buf[0]!=0{return None;} Some(Self{buf})
6 }
7 pub fn flags(&self)->u8 { self.buf[1] }
8 pub fn requested_protocols(&self)->u32 { u32::from_le_bytes([self.buf[4],self.buf[5],self.buf[6],self.buf[7]]) }
9}
10
11#[cfg(test)]mod tests{use super::*;
12 #[test]fn parse_rdp_negotiation(){
13 let data=[0x00u8,0x00,0x00,0x08,0x07,0x00,0x00,0x00]; let n=RdpNegotiationRequest::parse(&data).unwrap();
15 assert_eq!(n.requested_protocols(),0x07);
16 }
17}