* 02110-1301, USA.
*/
-use nom::number::streaming::{le_u16, le_u32, le_u64};
+use nom7::bytes::streaming::{tag, take};
+use nom7::number::streaming::{le_u16, le_u32, le_u64};
+use nom7::IResult;
#[derive(Debug,PartialEq)]
pub struct Smb3TransformRecord<'a> {
pub enc_data: &'a[u8],
}
-named!(pub parse_smb3_transform_record<Smb3TransformRecord>,
- do_parse!(
- tag!(b"\xfdSMB")
- >> _signature: take!(16)
- >> _nonce: take!(16)
- >> msg_size: le_u32
- >> _reserved: le_u16
- >> enc_algo: le_u16
- >> session_id: le_u64
- >> enc_data: take!(msg_size)
- >> ( Smb3TransformRecord {
- session_id,
- enc_algo,
- enc_data,
- })
-));
+pub fn parse_smb3_transform_record(i: &[u8]) -> IResult<&[u8], Smb3TransformRecord> {
+ let (i, _) = tag(b"\xfdSMB")(i)?;
+ let (i, _signature) = take(16_usize)(i)?;
+ let (i, _nonce) = take(16_usize)(i)?;
+ let (i, msg_size) = le_u32(i)?;
+ let (i, _reserved) = le_u16(i)?;
+ let (i, enc_algo) = le_u16(i)?;
+ let (i, session_id) = le_u64(i)?;
+ let (i, enc_data) = take(msg_size)(i)?;
+ let record = Smb3TransformRecord {
+ session_id,
+ enc_algo,
+ enc_data,
+ };
+ Ok((i, record))
+}