|
|
|
|
@ -17,12 +17,12 @@
|
|
|
|
|
|
|
|
|
|
use super::error::QuicError;
|
|
|
|
|
use crate::quic::parser::quic_var_uint;
|
|
|
|
|
use nom::bytes::complete::take;
|
|
|
|
|
use nom::combinator::{all_consuming, complete};
|
|
|
|
|
use nom::multi::{count, many0};
|
|
|
|
|
use nom::number::complete::{be_u16, be_u32, be_u8, le_u16, le_u32};
|
|
|
|
|
use nom::sequence::pair;
|
|
|
|
|
use nom::IResult;
|
|
|
|
|
use nom7::bytes::complete::take;
|
|
|
|
|
use nom7::combinator::{all_consuming, complete};
|
|
|
|
|
use nom7::multi::{count, many0};
|
|
|
|
|
use nom7::number::complete::{be_u16, be_u32, be_u8, le_u16, le_u32};
|
|
|
|
|
use nom7::sequence::pair;
|
|
|
|
|
use nom7::IResult;
|
|
|
|
|
use num::FromPrimitive;
|
|
|
|
|
use std::fmt;
|
|
|
|
|
use tls_parser::TlsMessage::Handshake;
|
|
|
|
|
@ -355,13 +355,13 @@ fn parse_crypto_frame(input: &[u8]) -> IResult<&[u8], Frame, QuicError> {
|
|
|
|
|
}
|
|
|
|
|
_ => {}
|
|
|
|
|
}
|
|
|
|
|
return Err(nom::Err::Error(QuicError::InvalidPacket));
|
|
|
|
|
return Err(nom7::Err::Error(QuicError::InvalidPacket));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn parse_tag(input: &[u8]) -> IResult<&[u8], StreamTag, QuicError> {
|
|
|
|
|
let (rest, tag) = be_u32(input)?;
|
|
|
|
|
|
|
|
|
|
let tag = StreamTag::from_u32(tag).ok_or(nom::Err::Error(QuicError::StreamTagNoMatch(tag)))?;
|
|
|
|
|
let tag = StreamTag::from_u32(tag).ok_or(nom7::Err::Error(QuicError::StreamTagNoMatch(tag)))?;
|
|
|
|
|
|
|
|
|
|
Ok((rest, tag))
|
|
|
|
|
}
|
|
|
|
|
@ -387,7 +387,7 @@ fn parse_crypto_stream(input: &[u8]) -> IResult<&[u8], Vec<TagValue>, QuicError>
|
|
|
|
|
// offsets should be increasing
|
|
|
|
|
let value_len = offset
|
|
|
|
|
.checked_sub(previous_offset)
|
|
|
|
|
.ok_or(nom::Err::Error(QuicError::InvalidPacket))?;
|
|
|
|
|
.ok_or(nom7::Err::Error(QuicError::InvalidPacket))?;
|
|
|
|
|
let (new_rest, value) = take(value_len)(rest)?;
|
|
|
|
|
|
|
|
|
|
previous_offset = offset;
|
|
|
|
|
@ -448,7 +448,7 @@ fn parse_crypto_stream_frame(input: &[u8]) -> IResult<&[u8], Frame, QuicError> {
|
|
|
|
|
let (rest, _offset) = quic_var_uint(input)?;
|
|
|
|
|
let (rest, data_length) = quic_var_uint(rest)?;
|
|
|
|
|
if data_length > u32::MAX as u64 {
|
|
|
|
|
return Err(nom::Err::Error(QuicError::Unhandled));
|
|
|
|
|
return Err(nom7::Err::Error(QuicError::Unhandled));
|
|
|
|
|
}
|
|
|
|
|
let (rest, stream_data) = take(data_length as u32)(rest)?;
|
|
|
|
|
|
|
|
|
|
|