/rust/registry/src/index.crates.io-1949cf8c6b5b557f/der-parser-6.0.1/src/ber/multi.rs
Line | Count | Source |
1 | | use crate::ber::*; |
2 | | use crate::error::*; |
3 | | use nom::bytes::streaming::take; |
4 | | use nom::combinator::{all_consuming, complete, cut, map}; |
5 | | use nom::error::ParseError; |
6 | | use nom::multi::many0; |
7 | | use nom::{Err, IResult}; |
8 | | |
9 | | /// Parse a SEQUENCE OF object |
10 | | /// |
11 | | /// Given a subparser for a BER type, parse a sequence of identical objects. |
12 | | /// |
13 | | /// ```rust |
14 | | /// # use der_parser::ber::{parse_ber_integer, parse_ber_sequence_of, BerObject}; |
15 | | /// # use der_parser::error::BerResult; |
16 | | /// # |
17 | | /// /// Read a SEQUENCE OF INTEGER |
18 | | /// fn parser(i:&[u8]) -> BerResult<BerObject> { |
19 | | /// parse_ber_sequence_of(parse_ber_integer)(i) |
20 | | /// } |
21 | | /// |
22 | | /// # let empty = &b""[..]; |
23 | | /// # let bytes = [ 0x30, 0x0a, |
24 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
25 | | /// # 0x02, 0x03, 0x01, 0x00, 0x00, |
26 | | /// # ]; |
27 | | /// # let expected = BerObject::from_seq(vec![ |
28 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
29 | | /// # BerObject::from_int_slice(b"\x01\x00\x00"), |
30 | | /// # ]); |
31 | | /// # assert_eq!(parser(&bytes), Ok((empty, expected))); |
32 | | /// let (rem, v) = parser(&bytes).expect("parsing failed"); |
33 | | /// ``` |
34 | 0 | pub fn parse_ber_sequence_of<'a, F>(f: F) -> impl FnMut(&'a [u8]) -> BerResult |
35 | 0 | where |
36 | 0 | F: Fn(&'a [u8]) -> BerResult, |
37 | | { |
38 | 0 | map(parse_ber_sequence_of_v(f), BerObject::from_seq) |
39 | 0 | } |
40 | | |
41 | | /// Parse a SEQUENCE OF object (returning a vec) |
42 | | /// |
43 | | /// Given a subparser for a BER type, parse a sequence of identical objects. |
44 | | /// |
45 | | /// This differs from `parse_ber_sequence_of` in the parse function and return type. |
46 | | /// |
47 | | /// ```rust |
48 | | /// # use der_parser::ber::{parse_ber_integer, parse_ber_sequence_of_v, BerObject}; |
49 | | /// # use der_parser::error::BerResult; |
50 | | /// # |
51 | | /// /// Read a SEQUENCE OF INTEGER |
52 | | /// fn parser(i:&[u8]) -> BerResult<Vec<BerObject>> { |
53 | | /// parse_ber_sequence_of_v(parse_ber_integer)(i) |
54 | | /// } |
55 | | /// |
56 | | /// # let empty = &b""[..]; |
57 | | /// # let bytes = [ 0x30, 0x0a, |
58 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
59 | | /// # 0x02, 0x03, 0x01, 0x00, 0x00, |
60 | | /// # ]; |
61 | | /// # let expected = vec![ |
62 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
63 | | /// # BerObject::from_int_slice(b"\x01\x00\x00"), |
64 | | /// # ]; |
65 | | /// let (rem, v) = parser(&bytes).expect("parsing failed"); |
66 | | /// # assert_eq!(v, expected); |
67 | | /// ``` |
68 | 94.9k | pub fn parse_ber_sequence_of_v<'a, T, F, E>( |
69 | 94.9k | f: F, |
70 | 94.9k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], Vec<T>, E> |
71 | 94.9k | where |
72 | 94.9k | F: FnMut(&'a [u8]) -> IResult<&'a [u8], T, E>, |
73 | 94.9k | E: ParseError<&'a [u8]> + From<BerError>, |
74 | | { |
75 | 94.9k | let mut subparser = all_consuming(many0(complete(cut(f)))); |
76 | 94.9k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) der_parser::ber::multi::parse_ber_sequence_of_v::<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress, der_parser::error::BerError>::{closure#0}Line | Count | Source | 76 | 5.01k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) |
der_parser::ber::multi::parse_ber_sequence_of_v::<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata, der_parser::error::BerError>::{closure#0}Line | Count | Source | 76 | 24.6k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) |
der_parser::ber::multi::parse_ber_sequence_of_v::<alloc::string::String, kerberos_parser::krb5_parser::parse_kerberos_string, der_parser::error::BerError>::{closure#0}Line | Count | Source | 76 | 10.8k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) |
der_parser::ber::multi::parse_ber_sequence_of_v::<i32, kerberos_parser::krb5_parser::parse_der_int32, der_parser::error::BerError>::{closure#0}Line | Count | Source | 76 | 46.0k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_sequence_of_v::<_, _, _>::{closure#0} |
77 | 94.9k | } der_parser::ber::multi::parse_ber_sequence_of_v::<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress, der_parser::error::BerError> Line | Count | Source | 68 | 8.01k | pub fn parse_ber_sequence_of_v<'a, T, F, E>( | 69 | 8.01k | f: F, | 70 | 8.01k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], Vec<T>, E> | 71 | 8.01k | where | 72 | 8.01k | F: FnMut(&'a [u8]) -> IResult<&'a [u8], T, E>, | 73 | 8.01k | E: ParseError<&'a [u8]> + From<BerError>, | 74 | | { | 75 | 8.01k | let mut subparser = all_consuming(many0(complete(cut(f)))); | 76 | 8.01k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) | 77 | 8.01k | } |
der_parser::ber::multi::parse_ber_sequence_of_v::<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata, der_parser::error::BerError> Line | Count | Source | 68 | 26.9k | pub fn parse_ber_sequence_of_v<'a, T, F, E>( | 69 | 26.9k | f: F, | 70 | 26.9k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], Vec<T>, E> | 71 | 26.9k | where | 72 | 26.9k | F: FnMut(&'a [u8]) -> IResult<&'a [u8], T, E>, | 73 | 26.9k | E: ParseError<&'a [u8]> + From<BerError>, | 74 | | { | 75 | 26.9k | let mut subparser = all_consuming(many0(complete(cut(f)))); | 76 | 26.9k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) | 77 | 26.9k | } |
der_parser::ber::multi::parse_ber_sequence_of_v::<alloc::string::String, kerberos_parser::krb5_parser::parse_kerberos_string, der_parser::error::BerError> Line | Count | Source | 68 | 12.4k | pub fn parse_ber_sequence_of_v<'a, T, F, E>( | 69 | 12.4k | f: F, | 70 | 12.4k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], Vec<T>, E> | 71 | 12.4k | where | 72 | 12.4k | F: FnMut(&'a [u8]) -> IResult<&'a [u8], T, E>, | 73 | 12.4k | E: ParseError<&'a [u8]> + From<BerError>, | 74 | | { | 75 | 12.4k | let mut subparser = all_consuming(many0(complete(cut(f)))); | 76 | 12.4k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) | 77 | 12.4k | } |
der_parser::ber::multi::parse_ber_sequence_of_v::<i32, kerberos_parser::krb5_parser::parse_der_int32, der_parser::error::BerError> Line | Count | Source | 68 | 47.5k | pub fn parse_ber_sequence_of_v<'a, T, F, E>( | 69 | 47.5k | f: F, | 70 | 47.5k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], Vec<T>, E> | 71 | 47.5k | where | 72 | 47.5k | F: FnMut(&'a [u8]) -> IResult<&'a [u8], T, E>, | 73 | 47.5k | E: ParseError<&'a [u8]> + From<BerError>, | 74 | | { | 75 | 47.5k | let mut subparser = all_consuming(many0(complete(cut(f)))); | 76 | 47.5k | parse_ber_sequence_defined_g(move |data, _| subparser(data)) | 77 | 47.5k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_sequence_of_v::<_, _, _> |
78 | | |
79 | | /// Parse a defined sequence of DER elements (function version) |
80 | | /// |
81 | | /// Given a list of expected parsers, apply them to build a DER sequence and |
82 | | /// return the remaining bytes and the built object. |
83 | | /// |
84 | | /// The remaining bytes point *after* the sequence: any bytes that are part of the sequence but not |
85 | | /// parsed are ignored. |
86 | | /// |
87 | | /// The object header is not available to the parsing function, and the returned type is always a |
88 | | /// `BerObject`. |
89 | | /// For a generic version, see |
90 | | /// [`parse_ber_sequence_defined_g`](fn.parse_ber_sequence_defined_g.html). |
91 | | /// |
92 | | /// # Examples |
93 | | /// |
94 | | /// Parsing a sequence of identical types (same as `parse_ber_sequence_of`): |
95 | | /// |
96 | | /// ```rust |
97 | | /// # use der_parser::ber::{parse_ber_integer, parse_ber_sequence_defined, BerObject}; |
98 | | /// # use der_parser::error::BerResult; |
99 | | /// use nom::combinator::complete; |
100 | | /// use nom::multi::many1; |
101 | | /// |
102 | | /// fn localparse_seq(i:&[u8]) -> BerResult { |
103 | | /// parse_ber_sequence_defined( |
104 | | /// many1(complete(parse_ber_integer)) |
105 | | /// )(i) |
106 | | /// } |
107 | | /// |
108 | | /// # let empty = &b""[..]; |
109 | | /// # let bytes = [ 0x30, 0x0a, |
110 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
111 | | /// # 0x02, 0x03, 0x01, 0x00, 0x00, |
112 | | /// # ]; |
113 | | /// # let expected = BerObject::from_seq(vec![ |
114 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
115 | | /// # BerObject::from_int_slice(b"\x01\x00\x00"), |
116 | | /// # ]); |
117 | | /// # assert_eq!(localparse_seq(&bytes), Ok((empty, expected))); |
118 | | /// let (rem, v) = localparse_seq(&bytes).expect("parsing failed"); |
119 | | /// ``` |
120 | | /// |
121 | | /// Parsing a defined sequence with different types: |
122 | | /// |
123 | | /// ```rust |
124 | | /// # use der_parser::ber::*; |
125 | | /// # use der_parser::error::BerResult; |
126 | | /// use nom::combinator::map; |
127 | | /// use nom::sequence::tuple; |
128 | | /// |
129 | | /// /// Read a DER-encoded object: |
130 | | /// /// SEQUENCE { |
131 | | /// /// a INTEGER, |
132 | | /// /// b OCTETSTRING |
133 | | /// /// } |
134 | | /// fn localparse_seq(i:&[u8]) -> BerResult { |
135 | | /// parse_ber_sequence_defined( |
136 | | /// // the nom `tuple` combinator returns a tuple, so we have to map it |
137 | | /// // to a list |
138 | | /// map( |
139 | | /// tuple((parse_ber_integer, parse_ber_octetstring)), |
140 | | /// |(a, b)| vec![a, b] |
141 | | /// ) |
142 | | /// )(i) |
143 | | /// } |
144 | | /// |
145 | | /// # let empty = &b""[..]; |
146 | | /// # let bytes = [ 0x30, 0x0a, |
147 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
148 | | /// # 0x04, 0x03, 0x01, 0x00, 0x00, |
149 | | /// # ]; |
150 | | /// # let expected = BerObject::from_seq(vec![ |
151 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
152 | | /// # BerObject::from_obj(BerObjectContent::OctetString(b"\x01\x00\x00")), |
153 | | /// # ]); |
154 | | /// # assert_eq!(localparse_seq(&bytes), Ok((empty, expected))); |
155 | | /// let (rem, v) = localparse_seq(&bytes).expect("parsing failed"); |
156 | | /// ``` |
157 | 0 | pub fn parse_ber_sequence_defined<'a, F>(mut f: F) -> impl FnMut(&'a [u8]) -> BerResult |
158 | 0 | where |
159 | 0 | F: FnMut(&'a [u8]) -> BerResult<Vec<BerObject>>, |
160 | | { |
161 | 0 | map( |
162 | 0 | parse_ber_sequence_defined_g(move |data, _| f(data)), |
163 | | BerObject::from_seq, |
164 | | ) |
165 | 0 | } |
166 | | |
167 | | /// Parse a defined SEQUENCE object (generic function) |
168 | | /// |
169 | | /// Given a parser for sequence content, apply it to build a DER sequence and |
170 | | /// return the remaining bytes and the built object. |
171 | | /// |
172 | | /// The remaining bytes point *after* the sequence: any bytes that are part of the sequence but not |
173 | | /// parsed are ignored. |
174 | | /// |
175 | | /// Unlike `parse_ber_sequence_defined`, this function allows returning any object or error type, |
176 | | /// and also passes the object header to the callback. |
177 | | /// |
178 | | /// # Examples |
179 | | /// |
180 | | /// Parsing a defined sequence with different types: |
181 | | /// |
182 | | /// ```rust |
183 | | /// # use der_parser::ber::*; |
184 | | /// # use der_parser::error::BerResult; |
185 | | /// # |
186 | | /// # #[derive(Debug, PartialEq)] |
187 | | /// pub struct MyObject<'a> { |
188 | | /// a: u32, |
189 | | /// b: &'a [u8], |
190 | | /// } |
191 | | /// |
192 | | /// /// Read a DER-encoded object: |
193 | | /// /// SEQUENCE { |
194 | | /// /// a INTEGER (0..4294967295), |
195 | | /// /// b OCTETSTRING |
196 | | /// /// } |
197 | | /// fn parse_myobject(i: &[u8]) -> BerResult<MyObject> { |
198 | | /// parse_ber_sequence_defined_g( |
199 | | /// |i:&[u8], _| { |
200 | | /// let (i, a) = parse_ber_u32(i)?; |
201 | | /// let (i, obj) = parse_ber_octetstring(i)?; |
202 | | /// let b = obj.as_slice().unwrap(); |
203 | | /// Ok((i, MyObject{ a, b })) |
204 | | /// } |
205 | | /// )(i) |
206 | | /// } |
207 | | /// |
208 | | /// # let empty = &b""[..]; |
209 | | /// # let bytes = [ 0x30, 0x0a, |
210 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
211 | | /// # 0x04, 0x03, 0x01, 0x00, 0x00, |
212 | | /// # ]; |
213 | | /// # let expected = MyObject { |
214 | | /// # a: 0x010001, |
215 | | /// # b: &[01, 00, 00] |
216 | | /// # }; |
217 | | /// # assert_eq!(parse_myobject(&bytes), Ok((empty, expected))); |
218 | | /// let (rem, v) = parse_myobject(&bytes).expect("parsing failed"); |
219 | | /// ``` |
220 | 467k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( |
221 | 467k | mut f: F, |
222 | 467k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> |
223 | 467k | where |
224 | 467k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, |
225 | 467k | E: ParseError<&'a [u8]> + From<BerError>, |
226 | | { |
227 | 467k | parse_ber_container(move |i, hdr| { |
228 | 425k | if hdr.tag != BerTag::Sequence { |
229 | 8.26k | return Err(Err::Error(BerError::InvalidTag.into())); |
230 | 417k | } |
231 | 417k | f(i, hdr) |
232 | 425k | }) der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<alloc::string::String>, der_parser::ber::multi::parse_ber_sequence_of_v<alloc::string::String, kerberos_parser::krb5_parser::parse_kerberos_string, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 11.3k | parse_ber_container(move |i, hdr| { | 228 | 11.3k | if hdr.tag != BerTag::Sequence { | 229 | 454 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 10.8k | } | 231 | 10.8k | f(i, hdr) | 232 | 11.3k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 5.61k | parse_ber_container(move |i, hdr| { | 228 | 5.61k | if hdr.tag != BerTag::Sequence { | 229 | 597 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 5.01k | } | 231 | 5.01k | f(i, hdr) | 232 | 5.61k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 24.9k | parse_ber_container(move |i, hdr| { | 228 | 24.9k | if hdr.tag != BerTag::Sequence { | 229 | 280 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 24.6k | } | 231 | 24.6k | f(i, hdr) | 232 | 24.9k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KdcReqBody, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 68.5k | parse_ber_container(move |i, hdr| { | 228 | 68.5k | if hdr.tag != BerTag::Sequence { | 229 | 691 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 67.8k | } | 231 | 67.8k | f(i, hdr) | 232 | 68.5k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 3.96k | parse_ber_container(move |i, hdr| { | 228 | 3.96k | if hdr.tag != BerTag::Sequence { | 229 | 239 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 3.73k | } | 231 | 3.73k | f(i, hdr) | 232 | 3.96k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 5.88k | parse_ber_container(move |i, hdr| { | 228 | 5.88k | if hdr.tag != BerTag::Sequence { | 229 | 239 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 5.64k | } | 231 | 5.64k | f(i, hdr) | 232 | 5.88k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 18.5k | parse_ber_container(move |i, hdr| { | 228 | 18.5k | if hdr.tag != BerTag::Sequence { | 229 | 445 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 18.1k | } | 231 | 18.1k | f(i, hdr) | 232 | 18.5k | }) |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::ApRep, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::ApReq, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 16.1k | parse_ber_container(move |i, hdr| { | 228 | 16.1k | if hdr.tag != BerTag::Sequence { | 229 | 463 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 15.6k | } | 231 | 15.6k | f(i, hdr) | 232 | 16.1k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 32.8k | parse_ber_container(move |i, hdr| { | 228 | 32.8k | if hdr.tag != BerTag::Sequence { | 229 | 913 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 31.9k | } | 231 | 31.9k | f(i, hdr) | 232 | 32.8k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 126k | parse_ber_container(move |i, hdr| { | 228 | 126k | if hdr.tag != BerTag::Sequence { | 229 | 1.14k | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 125k | } | 231 | 125k | f(i, hdr) | 232 | 126k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 25.9k | parse_ber_container(move |i, hdr| { | 228 | 25.9k | if hdr.tag != BerTag::Sequence { | 229 | 1.21k | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 24.7k | } | 231 | 24.7k | f(i, hdr) | 232 | 25.9k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 4.40k | parse_ber_container(move |i, hdr| { | 228 | 4.40k | if hdr.tag != BerTag::Sequence { | 229 | 272 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 4.13k | } | 231 | 4.13k | f(i, hdr) | 232 | 4.40k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KrbError, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 34.6k | parse_ber_container(move |i, hdr| { | 228 | 34.6k | if hdr.tag != BerTag::Sequence { | 229 | 1.04k | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 33.5k | } | 231 | 33.5k | f(i, hdr) | 232 | 34.6k | }) |
der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<i32>, der_parser::ber::multi::parse_ber_sequence_of_v<i32, kerberos_parser::krb5_parser::parse_der_int32, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 227 | 46.3k | parse_ber_container(move |i, hdr| { | 228 | 46.3k | if hdr.tag != BerTag::Sequence { | 229 | 274 | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | 46.0k | } | 231 | 46.0k | f(i, hdr) | 232 | 46.3k | }) |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_sequence_defined_g::<_, _, _>::{closure#0} |
233 | 467k | } der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<alloc::string::String>, der_parser::ber::multi::parse_ber_sequence_of_v<alloc::string::String, kerberos_parser::krb5_parser::parse_kerberos_string, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 12.4k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 12.4k | mut f: F, | 222 | 12.4k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 12.4k | where | 224 | 12.4k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 12.4k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 12.4k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 12.4k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 8.01k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 8.01k | mut f: F, | 222 | 8.01k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 8.01k | where | 224 | 8.01k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 8.01k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 8.01k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 8.01k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 26.9k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 26.9k | mut f: F, | 222 | 26.9k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 26.9k | where | 224 | 26.9k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 26.9k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 26.9k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 26.9k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<alloc::vec::Vec<i32>, der_parser::ber::multi::parse_ber_sequence_of_v<i32, kerberos_parser::krb5_parser::parse_der_int32, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 47.5k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 47.5k | mut f: F, | 222 | 47.5k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 47.5k | where | 224 | 47.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 47.5k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 47.5k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 47.5k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KdcReqBody, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 70.9k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 70.9k | mut f: F, | 222 | 70.9k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 70.9k | where | 224 | 70.9k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 70.9k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 70.9k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 70.9k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 5.06k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 5.06k | mut f: F, | 222 | 5.06k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 5.06k | where | 224 | 5.06k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 5.06k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 5.06k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 5.06k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 6.89k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 6.89k | mut f: F, | 222 | 6.89k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 6.89k | where | 224 | 6.89k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 6.89k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 6.89k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 6.89k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 20.0k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 20.0k | mut f: F, | 222 | 20.0k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 20.0k | where | 224 | 20.0k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 20.0k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 20.0k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 20.0k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::ApRep, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}, der_parser::error::BerError>der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::ApReq, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 17.5k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 17.5k | mut f: F, | 222 | 17.5k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 17.5k | where | 224 | 17.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 17.5k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 17.5k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 17.5k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 41.8k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 41.8k | mut f: F, | 222 | 41.8k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 41.8k | where | 224 | 41.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 41.8k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 41.8k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 41.8k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 135k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 135k | mut f: F, | 222 | 135k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 135k | where | 224 | 135k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 135k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 135k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 135k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 31.1k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 31.1k | mut f: F, | 222 | 31.1k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 31.1k | where | 224 | 31.1k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 31.1k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 31.1k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 31.1k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 5.92k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 5.92k | mut f: F, | 222 | 5.92k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 5.92k | where | 224 | 5.92k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 5.92k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 5.92k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 5.92k | } |
der_parser::ber::multi::parse_ber_sequence_defined_g::<kerberos_parser::krb5::KrbError, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}, der_parser::error::BerError>Line | Count | Source | 220 | 38.3k | pub fn parse_ber_sequence_defined_g<'a, O, F, E>( | 221 | 38.3k | mut f: F, | 222 | 38.3k | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 223 | 38.3k | where | 224 | 38.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 225 | 38.3k | E: ParseError<&'a [u8]> + From<BerError>, | 226 | | { | 227 | 38.3k | parse_ber_container(move |i, hdr| { | 228 | | if hdr.tag != BerTag::Sequence { | 229 | | return Err(Err::Error(BerError::InvalidTag.into())); | 230 | | } | 231 | | f(i, hdr) | 232 | | }) | 233 | 38.3k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_sequence_defined_g::<_, _, _> |
234 | | |
235 | | /// Parse a SET OF object |
236 | | /// |
237 | | /// Given a subparser for a BER type, parse a set of identical objects. |
238 | | /// |
239 | | /// ```rust |
240 | | /// # use der_parser::ber::{parse_ber_integer, parse_ber_set_of, BerObject}; |
241 | | /// # use der_parser::error::BerResult; |
242 | | /// # |
243 | | /// /// Read a SET OF INTEGER |
244 | | /// fn parser(i:&[u8]) -> BerResult<BerObject> { |
245 | | /// parse_ber_set_of(parse_ber_integer)(i) |
246 | | /// } |
247 | | /// |
248 | | /// # let empty = &b""[..]; |
249 | | /// # let bytes = [ 0x31, 0x0a, |
250 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
251 | | /// # 0x02, 0x03, 0x01, 0x00, 0x00, |
252 | | /// # ]; |
253 | | /// # let expected = BerObject::from_set(vec![ |
254 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
255 | | /// # BerObject::from_int_slice(b"\x01\x00\x00"), |
256 | | /// # ]); |
257 | | /// # assert_eq!(parser(&bytes), Ok((empty, expected))); |
258 | | /// let (rem, v) = parser(&bytes).expect("parsing failed"); |
259 | | /// ``` |
260 | 0 | pub fn parse_ber_set_of<'a, F>(f: F) -> impl FnMut(&'a [u8]) -> BerResult |
261 | 0 | where |
262 | 0 | F: Fn(&'a [u8]) -> BerResult, |
263 | | { |
264 | 0 | map(parse_ber_set_of_v(f), BerObject::from_set) |
265 | 0 | } |
266 | | |
267 | | /// Parse a SET OF object (returning a vec) |
268 | | /// |
269 | | /// Given a subparser for a BER type, parse a set of identical objects. |
270 | | /// |
271 | | /// This differs from `parse_ber_set_of` in the parse function and return type. |
272 | | /// |
273 | | /// ```rust |
274 | | /// # use der_parser::ber::{parse_ber_integer, parse_ber_set_of_v, BerObject}; |
275 | | /// # use der_parser::error::BerResult; |
276 | | /// # |
277 | | /// /// Read a SET OF INTEGER |
278 | | /// fn parser(i:&[u8]) -> BerResult<Vec<BerObject>> { |
279 | | /// parse_ber_set_of_v(parse_ber_integer)(i) |
280 | | /// } |
281 | | /// |
282 | | /// # let empty = &b""[..]; |
283 | | /// # let bytes = [ 0x31, 0x0a, |
284 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
285 | | /// # 0x02, 0x03, 0x01, 0x00, 0x00, |
286 | | /// # ]; |
287 | | /// # let expected = vec![ |
288 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
289 | | /// # BerObject::from_int_slice(b"\x01\x00\x00"), |
290 | | /// # ]; |
291 | | /// let (rem, v) = parser(&bytes).expect("parsing failed"); |
292 | | /// # assert_eq!(v, expected); |
293 | | /// ``` |
294 | 0 | pub fn parse_ber_set_of_v<'a, T, F, E>(f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], Vec<T>, E> |
295 | 0 | where |
296 | 0 | F: FnMut(&'a [u8]) -> IResult<&'a [u8], T, E>, |
297 | 0 | E: ParseError<&'a [u8]> + From<BerError>, |
298 | | { |
299 | 0 | let mut subparser = all_consuming(many0(complete(cut(f)))); |
300 | 0 | parse_ber_set_defined_g(move |data, _| subparser(data)) |
301 | 0 | } |
302 | | |
303 | | /// Parse a defined set of DER elements (function version) |
304 | | /// |
305 | | /// Given a list of expected parsers, apply them to build a DER set and |
306 | | /// return the remaining bytes and the built object. |
307 | | /// |
308 | | /// The remaining bytes point *after* the set: any bytes that are part of the sequence but not |
309 | | /// parsed are ignored. |
310 | | /// The nom combinator `all_consuming` can be used to ensure all the content is parsed. |
311 | | /// |
312 | | /// The object header is not available to the parsing function, and the returned type is always a |
313 | | /// `BerObject`. |
314 | | /// For a generic version, see [`parse_ber_set_defined_g`](fn.parse_ber_set_defined_g.html). |
315 | | /// |
316 | | /// # Examples |
317 | | /// |
318 | | /// Parsing a set of identical types (same as `parse_ber_set_of`): |
319 | | /// |
320 | | /// ```rust |
321 | | /// # use der_parser::ber::{parse_ber_integer, parse_ber_set_defined, BerObject}; |
322 | | /// # use der_parser::error::BerResult; |
323 | | /// use nom::combinator::complete; |
324 | | /// use nom::multi::many1; |
325 | | /// |
326 | | /// fn localparse_seq(i:&[u8]) -> BerResult { |
327 | | /// parse_ber_set_defined( |
328 | | /// many1(complete(parse_ber_integer)) |
329 | | /// )(i) |
330 | | /// } |
331 | | /// |
332 | | /// # let empty = &b""[..]; |
333 | | /// # let bytes = [ 0x31, 0x0a, |
334 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
335 | | /// # 0x02, 0x03, 0x01, 0x00, 0x00, |
336 | | /// # ]; |
337 | | /// # let expected = BerObject::from_set(vec![ |
338 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
339 | | /// # BerObject::from_int_slice(b"\x01\x00\x00"), |
340 | | /// # ]); |
341 | | /// # assert_eq!(localparse_seq(&bytes), Ok((empty, expected))); |
342 | | /// let (rem, v) = localparse_seq(&bytes).expect("parsing failed"); |
343 | | /// ``` |
344 | | /// |
345 | | /// Parsing a defined set with different types: |
346 | | /// |
347 | | /// ```rust |
348 | | /// # use der_parser::ber::*; |
349 | | /// # use der_parser::error::BerResult; |
350 | | /// use nom::combinator::map; |
351 | | /// use nom::sequence::tuple; |
352 | | /// |
353 | | /// /// Read a DER-encoded object: |
354 | | /// /// SET { |
355 | | /// /// a INTEGER, |
356 | | /// /// b OCTETSTRING |
357 | | /// /// } |
358 | | /// fn localparse_set(i:&[u8]) -> BerResult { |
359 | | /// parse_ber_set_defined( |
360 | | /// // the nom `tuple` combinator returns a tuple, so we have to map it |
361 | | /// // to a list |
362 | | /// map( |
363 | | /// tuple((parse_ber_integer, parse_ber_octetstring)), |
364 | | /// |(a, b)| vec![a, b] |
365 | | /// ) |
366 | | /// )(i) |
367 | | /// } |
368 | | /// |
369 | | /// # let empty = &b""[..]; |
370 | | /// # let bytes = [ 0x31, 0x0a, |
371 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
372 | | /// # 0x04, 0x03, 0x01, 0x00, 0x00, |
373 | | /// # ]; |
374 | | /// # let expected = BerObject::from_set(vec![ |
375 | | /// # BerObject::from_int_slice(b"\x01\x00\x01"), |
376 | | /// # BerObject::from_obj(BerObjectContent::OctetString(b"\x01\x00\x00")), |
377 | | /// # ]); |
378 | | /// # assert_eq!(localparse_set(&bytes), Ok((empty, expected))); |
379 | | /// let (rem, v) = localparse_set(&bytes).expect("parsing failed"); |
380 | | /// ``` |
381 | 0 | pub fn parse_ber_set_defined<'a, F>(mut f: F) -> impl FnMut(&'a [u8]) -> BerResult |
382 | 0 | where |
383 | 0 | F: FnMut(&'a [u8]) -> BerResult<Vec<BerObject>>, |
384 | | { |
385 | 0 | map( |
386 | 0 | parse_ber_set_defined_g(move |data, _| f(data)), |
387 | | BerObject::from_set, |
388 | | ) |
389 | 0 | } |
390 | | |
391 | | /// Parse a defined SET object (generic version) |
392 | | /// |
393 | | /// Given a parser for set content, apply it to build a DER set and |
394 | | /// return the remaining bytes and the built object. |
395 | | /// |
396 | | /// The remaining bytes point *after* the set: any bytes that are part of the sequence but not |
397 | | /// parsed are ignored. |
398 | | /// The nom combinator `all_consuming` can be used to ensure all the content is parsed. |
399 | | /// |
400 | | /// Unlike `parse_ber_set_defined`, this function allows returning any object or error type, |
401 | | /// and also passes the object header to the callback. |
402 | | /// |
403 | | /// # Examples |
404 | | /// |
405 | | /// Parsing a defined set with different types: |
406 | | /// |
407 | | /// ```rust |
408 | | /// # use der_parser::ber::*; |
409 | | /// # use der_parser::error::BerResult; |
410 | | /// # |
411 | | /// # #[derive(Debug, PartialEq)] |
412 | | /// pub struct MyObject<'a> { |
413 | | /// a: u32, |
414 | | /// b: &'a [u8], |
415 | | /// } |
416 | | /// |
417 | | /// /// Read a DER-encoded object: |
418 | | /// /// SET { |
419 | | /// /// a INTEGER (0..4294967295), |
420 | | /// /// b OCTETSTRING |
421 | | /// /// } |
422 | | /// fn parse_myobject(i: &[u8]) -> BerResult<MyObject> { |
423 | | /// parse_ber_set_defined_g( |
424 | | /// |i:&[u8], _| { |
425 | | /// let (i, a) = parse_ber_u32(i)?; |
426 | | /// let (i, obj) = parse_ber_octetstring(i)?; |
427 | | /// let b = obj.as_slice().unwrap(); |
428 | | /// Ok((i, MyObject{ a, b })) |
429 | | /// } |
430 | | /// )(i) |
431 | | /// } |
432 | | /// |
433 | | /// # let empty = &b""[..]; |
434 | | /// # let bytes = [ 0x31, 0x0a, |
435 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
436 | | /// # 0x04, 0x03, 0x01, 0x00, 0x00, |
437 | | /// # ]; |
438 | | /// # let expected = MyObject { |
439 | | /// # a: 0x010001, |
440 | | /// # b: &[01, 00, 00] |
441 | | /// # }; |
442 | | /// # assert_eq!(parse_myobject(&bytes), Ok((empty, expected))); |
443 | | /// let (rem, v) = parse_myobject(&bytes).expect("parsing failed"); |
444 | | /// ``` |
445 | 0 | pub fn parse_ber_set_defined_g<'a, O, F, E>( |
446 | 0 | mut f: F, |
447 | 0 | ) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> |
448 | 0 | where |
449 | 0 | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, |
450 | 0 | E: ParseError<&'a [u8]> + From<BerError>, |
451 | | { |
452 | 0 | parse_ber_container(move |i, hdr| { |
453 | 0 | if hdr.tag != BerTag::Set { |
454 | 0 | return Err(Err::Error(BerError::InvalidTag.into())); |
455 | 0 | } |
456 | 0 | f(i, hdr) |
457 | 0 | }) |
458 | 0 | } |
459 | | |
460 | | /// Parse a BER object and apply provided function to content |
461 | | /// |
462 | | /// Given a parser for content, read BER object header and apply parser to |
463 | | /// return the remaining bytes and the parser result. |
464 | | /// |
465 | | /// The remaining bytes point *after* the content: any bytes that are part of the content but not |
466 | | /// parsed are ignored. |
467 | | /// The nom combinator `all_consuming` can be used to ensure all the content is parsed. |
468 | | /// |
469 | | /// This function is mostly intended for structured objects, but can be used for any valid BER |
470 | | /// object. |
471 | | /// |
472 | | /// # Examples |
473 | | /// |
474 | | /// Parsing a defined sequence with different types: |
475 | | /// |
476 | | /// ```rust |
477 | | /// # use der_parser::ber::*; |
478 | | /// # use der_parser::error::{BerError, BerResult}; |
479 | | /// # |
480 | | /// # #[derive(Debug, PartialEq)] |
481 | | /// pub struct MyObject<'a> { |
482 | | /// a: u32, |
483 | | /// b: &'a [u8], |
484 | | /// } |
485 | | /// |
486 | | /// /// Read a DER-encoded object: |
487 | | /// /// SEQUENCE { |
488 | | /// /// a INTEGER (0..4294967295), |
489 | | /// /// b OCTETSTRING |
490 | | /// /// } |
491 | | /// fn parse_myobject(i: &[u8]) -> BerResult<MyObject> { |
492 | | /// parse_ber_container( |
493 | | /// |i: &[u8], hdr: BerObjectHeader| { |
494 | | /// if hdr.tag != BerTag::Sequence { |
495 | | /// return Err(nom::Err::Error(BerError::BerTypeError.into())); |
496 | | /// } |
497 | | /// let (i, a) = parse_ber_u32(i)?; |
498 | | /// let (i, obj) = parse_ber_octetstring(i)?; |
499 | | /// let b = obj.as_slice().unwrap(); |
500 | | /// Ok((i, MyObject{ a, b })) |
501 | | /// } |
502 | | /// )(i) |
503 | | /// } |
504 | | /// |
505 | | /// # let empty = &b""[..]; |
506 | | /// # let bytes = [ 0x30, 0x0a, |
507 | | /// # 0x02, 0x03, 0x01, 0x00, 0x01, |
508 | | /// # 0x04, 0x03, 0x01, 0x00, 0x00, |
509 | | /// # ]; |
510 | | /// # let expected = MyObject { |
511 | | /// # a: 0x010001, |
512 | | /// # b: &[01, 00, 00] |
513 | | /// # }; |
514 | | /// # assert_eq!(parse_myobject(&bytes), Ok((empty, expected))); |
515 | | /// let (rem, v) = parse_myobject(&bytes).expect("parsing failed"); |
516 | | /// ``` |
517 | 2.27M | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> |
518 | 2.27M | where |
519 | 2.27M | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, |
520 | 2.27M | E: ParseError<&'a [u8]> + From<BerError>, |
521 | | { |
522 | 2.27M | move |i: &[u8]| { |
523 | 2.27M | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; |
524 | 2.18M | let (i, data) = match hdr.len { |
525 | 2.11M | BerSize::Definite(len) => take(len)(i)?, |
526 | | BerSize::Indefinite => { |
527 | 70.1k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? |
528 | | } |
529 | | }; |
530 | 2.03M | let (_rest, v) = f(data, hdr)?; |
531 | 978k | Ok((i, v)) |
532 | 2.27M | } der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<alloc::string::String>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<alloc::string::String>, der_parser::ber::multi::parse_ber_sequence_of_v<alloc::string::String, kerberos_parser::krb5_parser::parse_kerberos_string, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 12.4k | move |i: &[u8]| { | 523 | 12.4k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 11.9k | let (i, data) = match hdr.len { | 525 | 11.4k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 583 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 11.3k | let (_rest, v) = f(data, hdr)?; | 531 | 9.45k | Ok((i, v)) | 532 | 12.4k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<alloc::string::String>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<alloc::string::String>, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 14.7k | move |i: &[u8]| { | 523 | 14.7k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 14.1k | let (i, data) = match hdr.len { | 525 | 13.5k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 586 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 13.0k | let (_rest, v) = f(data, hdr)?; | 531 | 9.45k | Ok((i, v)) | 532 | 14.7k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5_constants::EncryptionType>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5_constants::EncryptionType>, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#8}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 49.3k | move |i: &[u8]| { | 523 | 49.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 48.9k | let (i, data) = match hdr.len { | 525 | 48.0k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 867 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 48.2k | let (_rest, v) = f(data, hdr)?; | 531 | 45.6k | Ok((i, v)) | 532 | 49.3k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 8.01k | move |i: &[u8]| { | 523 | 8.01k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 7.30k | let (i, data) = match hdr.len { | 525 | 6.66k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 649 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 5.61k | let (_rest, v) = f(data, hdr)?; | 531 | 239 | Ok((i, v)) | 532 | 8.01k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 26.9k | move |i: &[u8]| { | 523 | 26.9k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 26.2k | let (i, data) = match hdr.len { | 525 | 25.5k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 731 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 24.9k | let (_rest, v) = f(data, hdr)?; | 531 | 2.58k | Ok((i, v)) | 532 | 26.9k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::PAData>, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 20.8k | move |i: &[u8]| { | 523 | 20.8k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 20.3k | let (i, data) = match hdr.len { | 525 | 19.7k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 594 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 19.6k | let (_rest, v) = f(data, hdr)?; | 531 | 216 | Ok((i, v)) | 532 | 20.8k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::PAData>, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 99.0k | move |i: &[u8]| { | 523 | 99.0k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 96.6k | let (i, data) = match hdr.len { | 525 | 95.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.40k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 95.0k | let (_rest, v) = f(data, hdr)?; | 531 | 2.37k | Ok((i, v)) | 532 | 99.0k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 6.72k | move |i: &[u8]| { | 523 | 6.72k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 6.40k | let (i, data) = match hdr.len { | 525 | 5.59k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 809 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 5.39k | let (_rest, v) = f(data, hdr)?; | 531 | 3.98k | Ok((i, v)) | 532 | 6.72k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 19.3k | move |i: &[u8]| { | 523 | 19.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 18.3k | let (i, data) = match hdr.len { | 525 | 16.9k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.40k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 17.1k | let (_rest, v) = f(data, hdr)?; | 531 | 13.7k | Ok((i, v)) | 532 | 19.3k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 67.8k | move |i: &[u8]| { | 523 | 67.8k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 64.9k | let (i, data) = match hdr.len { | 525 | 64.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 722 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 64.2k | let (_rest, v) = f(data, hdr)?; | 531 | 60.8k | Ok((i, v)) | 532 | 67.8k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#5}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 57.2k | move |i: &[u8]| { | 523 | 57.2k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 56.6k | let (i, data) = match hdr.len { | 525 | 55.5k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.07k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 55.3k | let (_rest, v) = f(data, hdr)?; | 531 | 52.5k | Ok((i, v)) | 532 | 57.2k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_errors::ErrorCode, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_errors::ErrorCode, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#6}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 11.1k | move |i: &[u8]| { | 523 | 11.1k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 10.7k | let (i, data) = match hdr.len { | 525 | 10.1k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 588 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 10.0k | let (_rest, v) = f(data, hdr)?; | 531 | 9.02k | Ok((i, v)) | 532 | 11.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::AddressType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::AddressType, kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.73k | move |i: &[u8]| { | 523 | 3.73k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.24k | let (i, data) = match hdr.len { | 525 | 2.65k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 589 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 2.62k | let (_rest, v) = f(data, hdr)?; | 531 | 1.60k | Ok((i, v)) | 532 | 3.73k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 10.1k | move |i: &[u8]| { | 523 | 10.1k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 9.60k | let (i, data) = match hdr.len { | 525 | 8.83k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 774 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 8.74k | let (_rest, v) = f(data, hdr)?; | 531 | 6.72k | Ok((i, v)) | 532 | 10.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 25.8k | move |i: &[u8]| { | 523 | 25.8k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 24.7k | let (i, data) = match hdr.len { | 525 | 23.4k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.27k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 22.7k | let (_rest, v) = f(data, hdr)?; | 531 | 19.3k | Ok((i, v)) | 532 | 25.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 26.2k | move |i: &[u8]| { | 523 | 26.2k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 24.4k | let (i, data) = match hdr.len { | 525 | 23.0k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.40k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 22.9k | let (_rest, v) = f(data, hdr)?; | 531 | 20.8k | Ok((i, v)) | 532 | 26.2k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 110k | move |i: &[u8]| { | 523 | 110k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 107k | let (i, data) = match hdr.len { | 525 | 104k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 2.03k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 103k | let (_rest, v) = f(data, hdr)?; | 531 | 99.0k | Ok((i, v)) | 532 | 110k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::EncryptionType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::EncryptionType, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 5.64k | move |i: &[u8]| { | 523 | 5.64k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 5.23k | let (i, data) = match hdr.len { | 525 | 4.63k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 593 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 4.55k | let (_rest, v) = f(data, hdr)?; | 531 | 3.64k | Ok((i, v)) | 532 | 5.64k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::PAType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::PAType, kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 24.7k | move |i: &[u8]| { | 523 | 24.7k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 24.2k | let (i, data) = match hdr.len { | 525 | 23.6k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 584 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 23.5k | let (_rest, v) = f(data, hdr)?; | 531 | 22.4k | Ok((i, v)) | 532 | 24.7k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::NameType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::NameType, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 18.1k | move |i: &[u8]| { | 523 | 18.1k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 17.5k | let (i, data) = match hdr.len { | 525 | 16.7k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 734 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 16.8k | let (_rest, v) = f(data, hdr)?; | 531 | 14.7k | Ok((i, v)) | 532 | 18.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReqBody, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KdcReqBody, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 70.9k | move |i: &[u8]| { | 523 | 70.9k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 69.9k | let (i, data) = match hdr.len { | 525 | 69.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 742 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 68.5k | let (_rest, v) = f(data, hdr)?; | 531 | 43.0k | Ok((i, v)) | 532 | 70.9k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReqBody, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::KdcReqBody, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 99.0k | move |i: &[u8]| { | 523 | 99.0k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 96.3k | let (i, data) = match hdr.len { | 525 | 94.9k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.40k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 94.8k | let (_rest, v) = f(data, hdr)?; | 531 | 43.0k | Ok((i, v)) | 532 | 99.0k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::HostAddress, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 5.06k | move |i: &[u8]| { | 523 | 5.06k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 4.62k | let (i, data) = match hdr.len { | 525 | 4.03k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 594 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 3.96k | let (_rest, v) = f(data, hdr)?; | 531 | 44 | Ok((i, v)) | 532 | 5.06k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 6.89k | move |i: &[u8]| { | 523 | 6.89k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 6.47k | let (i, data) = match hdr.len { | 525 | 5.85k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 626 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 5.88k | let (_rest, v) = f(data, hdr)?; | 531 | 871 | Ok((i, v)) | 532 | 6.89k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 308 | move |i: &[u8]| { | 523 | 308 | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 304 | let (i, data) = match hdr.len { | 525 | 304 | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 303 | let (_rest, v) = f(data, hdr)?; | 531 | 293 | Ok((i, v)) | 532 | 308 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 358 | move |i: &[u8]| { | 523 | 358 | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 358 | let (i, data) = match hdr.len { | 525 | 358 | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 357 | let (_rest, v) = f(data, hdr)?; | 531 | 346 | Ok((i, v)) | 532 | 358 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#7}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 38 | move |i: &[u8]| { | 523 | 38 | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 36 | let (i, data) = match hdr.len { | 525 | 36 | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 36 | let (_rest, v) = f(data, hdr)?; | 531 | 33 | Ok((i, v)) | 532 | 38 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 20.0k | move |i: &[u8]| { | 523 | 20.0k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 19.5k | let (i, data) = match hdr.len { | 525 | 18.7k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 890 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 18.5k | let (_rest, v) = f(data, hdr)?; | 531 | 9.45k | Ok((i, v)) | 532 | 20.0k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#10}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 5.80k | move |i: &[u8]| { | 523 | 5.80k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 5.40k | let (i, data) = match hdr.len { | 525 | 4.82k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 584 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 4.75k | let (_rest, v) = f(data, hdr)?; | 531 | 3.83k | Ok((i, v)) | 532 | 5.80k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 364 | move |i: &[u8]| { | 523 | 364 | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 364 | let (i, data) = match hdr.len { | 525 | 364 | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 364 | let (_rest, v) = f(data, hdr)?; | 531 | 358 | Ok((i, v)) | 532 | 364 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#5}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 14.3k | move |i: &[u8]| { | 523 | 14.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 13.8k | let (i, data) = match hdr.len { | 525 | 13.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 613 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 13.1k | let (_rest, v) = f(data, hdr)?; | 531 | 3.22k | Ok((i, v)) | 532 | 14.3k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApRep, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::ApRep, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApRep, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::ApRep, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApReq, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::ApReq, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 17.5k | move |i: &[u8]| { | 523 | 17.5k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 17.1k | let (i, data) = match hdr.len { | 525 | 16.3k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 753 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 16.1k | let (_rest, v) = f(data, hdr)?; | 531 | 293 | Ok((i, v)) | 532 | 17.5k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApReq, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::ApReq, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 20.7k | move |i: &[u8]| { | 523 | 20.7k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 20.2k | let (i, data) = match hdr.len { | 525 | 18.9k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.35k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 18.6k | let (_rest, v) = f(data, hdr)?; | 531 | 293 | Ok((i, v)) | 532 | 20.7k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#9}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 9.02k | move |i: &[u8]| { | 523 | 9.02k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 8.23k | let (i, data) = match hdr.len { | 525 | 7.26k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 971 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 7.29k | let (_rest, v) = f(data, hdr)?; | 531 | 5.80k | Ok((i, v)) | 532 | 9.02k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 1.95k | move |i: &[u8]| { | 523 | 1.95k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 1.56k | let (i, data) = match hdr.len { | 525 | 1.36k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 194 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 1.16k | let (_rest, v) = f(data, hdr)?; | 531 | 364 | Ok((i, v)) | 532 | 1.95k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 20.8k | move |i: &[u8]| { | 523 | 20.8k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 20.1k | let (i, data) = match hdr.len { | 525 | 19.5k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 594 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 19.4k | let (_rest, v) = f(data, hdr)?; | 531 | 14.3k | Ok((i, v)) | 532 | 20.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 60.6k | move |i: &[u8]| { | 523 | 60.6k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 60.0k | let (i, data) = match hdr.len { | 525 | 59.4k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 585 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 59.1k | let (_rest, v) = f(data, hdr)?; | 531 | 57.4k | Ok((i, v)) | 532 | 60.6k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcRep, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 41.8k | move |i: &[u8]| { | 523 | 41.8k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 35.4k | let (i, data) = match hdr.len { | 525 | 33.7k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.64k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 32.8k | let (_rest, v) = f(data, hdr)?; | 531 | 33 | Ok((i, v)) | 532 | 41.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcRep, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_as_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 20.9k | move |i: &[u8]| { | 523 | 20.9k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 20.9k | let (i, data) = match hdr.len { | 525 | 20.9k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 15.8k | let (_rest, v) = f(data, hdr)?; | 531 | 22 | Ok((i, v)) | 532 | 20.9k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcRep, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_tgs_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 30.3k | move |i: &[u8]| { | 523 | 30.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 30.3k | let (i, data) = match hdr.len { | 525 | 30.3k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 26.8k | let (_rest, v) = f(data, hdr)?; | 531 | 11 | Ok((i, v)) | 532 | 30.3k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReq, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 135k | move |i: &[u8]| { | 523 | 135k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 131k | let (i, data) = match hdr.len { | 525 | 127k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 3.71k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 126k | let (_rest, v) = f(data, hdr)?; | 531 | 43.0k | Ok((i, v)) | 532 | 135k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReq, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_as_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 79.6k | move |i: &[u8]| { | 523 | 79.6k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 79.6k | let (i, data) = match hdr.len { | 525 | 79.6k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 73.7k | let (_rest, v) = f(data, hdr)?; | 531 | 37.4k | Ok((i, v)) | 532 | 79.6k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReq, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_tgs_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 76.1k | move |i: &[u8]| { | 523 | 76.1k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 76.1k | let (i, data) = match hdr.len { | 525 | 76.1k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 62.4k | let (_rest, v) = f(data, hdr)?; | 531 | 5.54k | Ok((i, v)) | 532 | 76.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PAData, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 31.1k | move |i: &[u8]| { | 523 | 31.1k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 27.9k | let (i, data) = match hdr.len { | 525 | 27.3k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 611 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 25.9k | let (_rest, v) = f(data, hdr)?; | 531 | 6.51k | Ok((i, v)) | 532 | 31.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 5.92k | move |i: &[u8]| { | 523 | 5.92k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 5.03k | let (i, data) = match hdr.len { | 525 | 4.45k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 583 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 4.40k | let (_rest, v) = f(data, hdr)?; | 531 | 346 | Ok((i, v)) | 532 | 5.92k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 8.65k | move |i: &[u8]| { | 523 | 8.65k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 8.16k | let (i, data) = match hdr.len { | 525 | 7.00k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.15k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 6.86k | let (_rest, v) = f(data, hdr)?; | 531 | 346 | Ok((i, v)) | 532 | 8.65k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.98k | move |i: &[u8]| { | 523 | 3.98k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.70k | let (i, data) = match hdr.len { | 525 | 3.19k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 513 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 2.15k | let (_rest, v) = f(data, hdr)?; | 531 | 308 | Ok((i, v)) | 532 | 3.98k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#6}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.22k | move |i: &[u8]| { | 523 | 3.22k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 2.69k | let (i, data) = match hdr.len { | 525 | 2.07k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 614 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 1.92k | let (_rest, v) = f(data, hdr)?; | 531 | 38 | Ok((i, v)) | 532 | 3.22k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KrbError, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KrbError, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 38.3k | move |i: &[u8]| { | 523 | 38.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 37.2k | let (i, data) = match hdr.len { | 525 | 35.1k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 2.13k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 34.6k | let (_rest, v) = f(data, hdr)?; | 531 | 3.83k | Ok((i, v)) | 532 | 38.3k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KrbError, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KrbError, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 47.2k | move |i: &[u8]| { | 523 | 47.2k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 47.2k | let (i, data) = match hdr.len { | 525 | 47.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 0 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 38.7k | let (_rest, v) = f(data, hdr)?; | 531 | 3.83k | Ok((i, v)) | 532 | 47.2k | } |
der_parser::ber::multi::parse_ber_container::<&[u8], der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, &[u8], kerberos_parser::krb5_parser::parse_encrypted::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.64k | move |i: &[u8]| { | 523 | 3.64k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.03k | let (i, data) = match hdr.len { | 525 | 2.44k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 585 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 2.30k | let (_rest, v) = f(data, hdr)?; | 531 | 871 | Ok((i, v)) | 532 | 3.64k | } |
der_parser::ber::multi::parse_ber_container::<&[u8], der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, &[u8], kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 22.4k | move |i: &[u8]| { | 523 | 22.4k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 22.0k | let (i, data) = match hdr.len { | 525 | 21.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 814 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 21.3k | let (_rest, v) = f(data, hdr)?; | 531 | 6.51k | Ok((i, v)) | 532 | 22.4k | } |
der_parser::ber::multi::parse_ber_container::<&[u8], der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, &[u8], kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 1.60k | move |i: &[u8]| { | 523 | 1.60k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 1.21k | let (i, data) = match hdr.len { | 525 | 1.02k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 194 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 820 | let (_rest, v) = f(data, hdr)?; | 531 | 44 | Ok((i, v)) | 532 | 1.60k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 15.6k | move |i: &[u8]| { | 523 | 15.6k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 15.2k | let (i, data) = match hdr.len { | 525 | 12.6k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 2.59k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 13.1k | let (_rest, v) = f(data, hdr)?; | 531 | 10.1k | Ok((i, v)) | 532 | 15.6k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 33.5k | move |i: &[u8]| { | 523 | 33.5k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 32.2k | let (i, data) = match hdr.len { | 525 | 30.6k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.56k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 29.2k | let (_rest, v) = f(data, hdr)?; | 531 | 25.8k | Ok((i, v)) | 532 | 33.5k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#5}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 13.7k | move |i: &[u8]| { | 523 | 13.7k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 13.1k | let (i, data) = match hdr.len { | 525 | 12.5k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 584 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 12.4k | let (_rest, v) = f(data, hdr)?; | 531 | 11.1k | Ok((i, v)) | 532 | 13.7k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 4.13k | move |i: &[u8]| { | 523 | 4.13k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.73k | let (i, data) = match hdr.len { | 525 | 3.14k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 584 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 3.10k | let (_rest, v) = f(data, hdr)?; | 531 | 2.15k | Ok((i, v)) | 532 | 4.13k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 31.9k | move |i: &[u8]| { | 523 | 31.9k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 30.3k | let (i, data) = match hdr.len { | 525 | 28.9k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.39k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 28.5k | let (_rest, v) = f(data, hdr)?; | 531 | 26.2k | Ok((i, v)) | 532 | 31.9k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 125k | move |i: &[u8]| { | 523 | 125k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 122k | let (i, data) = match hdr.len { | 525 | 121k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.67k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 120k | let (_rest, v) = f(data, hdr)?; | 531 | 110k | Ok((i, v)) | 532 | 125k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#7}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 52.5k | move |i: &[u8]| { | 523 | 52.5k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 51.9k | let (i, data) = match hdr.len { | 525 | 51.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 702 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 51.1k | let (_rest, v) = f(data, hdr)?; | 531 | 49.3k | Ok((i, v)) | 532 | 52.5k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#9}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 45.6k | move |i: &[u8]| { | 523 | 45.6k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 34.4k | let (i, data) = match hdr.len { | 525 | 33.4k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.04k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 24.0k | let (_rest, v) = f(data, hdr)?; | 531 | 239 | Ok((i, v)) | 532 | 45.6k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::Ticket>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::Ticket>, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#11}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 43.0k | move |i: &[u8]| { | 523 | 43.0k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 31.5k | let (i, data) = match hdr.len { | 525 | 30.5k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.04k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 20.9k | let (_rest, v) = f(data, hdr)?; | 531 | 0 | Ok((i, v)) | 532 | 43.0k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<i32>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<i32>, der_parser::ber::multi::parse_ber_sequence_of_v<i32, kerberos_parser::krb5_parser::parse_der_int32, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 47.5k | move |i: &[u8]| { | 523 | 47.5k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 47.0k | let (i, data) = match hdr.len { | 525 | 39.6k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 7.36k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 46.3k | let (_rest, v) = f(data, hdr)?; | 531 | 45.6k | Ok((i, v)) | 532 | 47.5k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 19.3k | move |i: &[u8]| { | 523 | 19.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 18.8k | let (i, data) = match hdr.len { | 525 | 17.3k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.40k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 17.7k | let (_rest, v) = f(data, hdr)?; | 531 | 209 | Ok((i, v)) | 532 | 19.3k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#12}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.83k | move |i: &[u8]| { | 523 | 3.83k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.41k | let (i, data) = match hdr.len { | 525 | 2.81k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 596 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 2.54k | let (_rest, v) = f(data, hdr)?; | 531 | 656 | Ok((i, v)) | 532 | 3.83k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 57.2k | move |i: &[u8]| { | 523 | 57.2k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 56.7k | let (i, data) = match hdr.len { | 525 | 55.6k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.07k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 55.4k | let (_rest, v) = f(data, hdr)?; | 531 | 593 | Ok((i, v)) | 532 | 57.2k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#6}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 52.5k | move |i: &[u8]| { | 523 | 52.5k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 51.9k | let (i, data) = match hdr.len { | 525 | 51.2k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 702 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 51.1k | let (_rest, v) = f(data, hdr)?; | 531 | 1.23k | Ok((i, v)) | 532 | 52.5k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#10}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 43.0k | move |i: &[u8]| { | 523 | 43.0k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 31.7k | let (i, data) = match hdr.len { | 525 | 30.7k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.04k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 21.1k | let (_rest, v) = f(data, hdr)?; | 531 | 199 | Ok((i, v)) | 532 | 43.0k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#8}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 9.02k | move |i: &[u8]| { | 523 | 9.02k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 8.42k | let (i, data) = match hdr.len { | 525 | 7.45k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 971 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 7.48k | let (_rest, v) = f(data, hdr)?; | 531 | 194 | Ok((i, v)) | 532 | 9.02k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 57.4k | move |i: &[u8]| { | 523 | 57.4k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 56.9k | let (i, data) = match hdr.len { | 525 | 56.0k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 889 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 56.0k | let (_rest, v) = f(data, hdr)?; | 531 | 980 | Ok((i, v)) | 532 | 57.4k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 60.8k | move |i: &[u8]| { | 523 | 60.8k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 60.4k | let (i, data) = match hdr.len { | 525 | 59.8k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 585 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 59.5k | let (_rest, v) = f(data, hdr)?; | 531 | 867 | Ok((i, v)) | 532 | 60.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#7}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 9.02k | move |i: &[u8]| { | 523 | 9.02k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 8.62k | let (i, data) = match hdr.len { | 525 | 7.59k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.02k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 7.69k | let (_rest, v) = f(data, hdr)?; | 531 | 210 | Ok((i, v)) | 532 | 9.02k | } |
der_parser::ber::multi::parse_ber_container::<alloc::string::String, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::string::String, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#11}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.83k | move |i: &[u8]| { | 523 | 3.83k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.41k | let (i, data) = match hdr.len { | 525 | 2.62k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 791 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 2.54k | let (_rest, v) = f(data, hdr)?; | 531 | 195 | Ok((i, v)) | 532 | 3.83k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 19.3k | move |i: &[u8]| { | 523 | 19.3k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 18.7k | let (i, data) = match hdr.len { | 525 | 17.3k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 1.40k | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 17.5k | let (_rest, v) = f(data, hdr)?; | 531 | 379 | Ok((i, v)) | 532 | 19.3k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}Line | Count | Source | 522 | 3.64k | move |i: &[u8]| { | 523 | 3.64k | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | 3.24k | let (i, data) = match hdr.len { | 525 | 2.65k | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | 585 | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | 2.51k | let (_rest, v) = f(data, hdr)?; | 531 | 578 | Ok((i, v)) | 532 | 3.64k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<_, _, _>::{closure#0} |
533 | 2.27M | } der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<alloc::string::String>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<alloc::string::String>, der_parser::ber::multi::parse_ber_sequence_of_v<alloc::string::String, kerberos_parser::krb5_parser::parse_kerberos_string, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 12.4k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 12.4k | where | 519 | 12.4k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 12.4k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 12.4k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 8.01k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 8.01k | where | 519 | 8.01k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 8.01k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 8.01k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::multi::parse_ber_sequence_of_v<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 26.9k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 26.9k | where | 519 | 26.9k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 26.9k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 26.9k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<i32>, der_parser::ber::multi::parse_ber_sequence_defined_g<alloc::vec::Vec<i32>, der_parser::ber::multi::parse_ber_sequence_of_v<i32, kerberos_parser::krb5_parser::parse_der_int32, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 47.5k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 47.5k | where | 519 | 47.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 47.5k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 47.5k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReqBody, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KdcReqBody, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 70.9k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 70.9k | where | 519 | 70.9k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 70.9k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 70.9k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::HostAddress, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::HostAddress, kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 5.06k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 5.06k | where | 519 | 5.06k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 5.06k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 5.06k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 6.89k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 6.89k | where | 519 | 6.89k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 6.89k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 6.89k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 20.0k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 20.0k | where | 519 | 20.0k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 20.0k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 20.0k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApRep, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::ApRep, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApReq, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::ApReq, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 17.5k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 17.5k | where | 519 | 17.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 17.5k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 17.5k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcRep, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 41.8k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 41.8k | where | 519 | 41.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 41.8k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 41.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReq, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 135k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 135k | where | 519 | 135k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 135k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 135k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PAData, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::PAData, kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 31.1k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 31.1k | where | 519 | 31.1k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 31.1k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 31.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 5.92k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 5.92k | where | 519 | 5.92k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 5.92k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 5.92k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KrbError, der_parser::ber::multi::parse_ber_sequence_defined_g<kerberos_parser::krb5::KrbError, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 38.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 38.3k | where | 519 | 38.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 38.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 38.3k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<alloc::string::String>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<alloc::string::String>, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 14.7k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 14.7k | where | 519 | 14.7k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 14.7k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 14.7k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5_constants::EncryptionType>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5_constants::EncryptionType>, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#8}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 49.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 49.3k | where | 519 | 49.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 49.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 49.3k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::HostAddress>, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#9}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 45.6k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 45.6k | where | 519 | 45.6k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 45.6k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 45.6k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::PAData>, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 20.8k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 20.8k | where | 519 | 20.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 20.8k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 20.8k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::PAData>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::PAData>, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 99.0k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 99.0k | where | 519 | 99.0k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 99.0k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 99.0k | } |
der_parser::ber::multi::parse_ber_container::<alloc::vec::Vec<kerberos_parser::krb5::Ticket>, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::vec::Vec<kerberos_parser::krb5::Ticket>, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#11}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 43.0k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 43.0k | where | 519 | 43.0k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 43.0k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 43.0k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 6.72k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 6.72k | where | 519 | 6.72k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 6.72k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 6.72k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 19.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 19.3k | where | 519 | 19.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 19.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 19.3k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 19.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 19.3k | where | 519 | 19.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 19.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 19.3k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#12}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.83k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.83k | where | 519 | 3.83k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.83k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.83k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 67.8k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 67.8k | where | 519 | 67.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 67.8k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 67.8k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 57.2k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 57.2k | where | 519 | 57.2k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 57.2k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 57.2k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#5}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 57.2k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 57.2k | where | 519 | 57.2k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 57.2k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 57.2k | } |
der_parser::ber::multi::parse_ber_container::<der_parser::ber::ber::BerObject, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, der_parser::ber::ber::BerObject, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#6}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 52.5k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 52.5k | where | 519 | 52.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 52.5k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 52.5k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_errors::ErrorCode, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_errors::ErrorCode, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#6}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 11.1k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 11.1k | where | 519 | 11.1k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 11.1k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 11.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::AddressType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::AddressType, kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.73k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.73k | where | 519 | 3.73k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.73k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.73k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 10.1k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 10.1k | where | 519 | 10.1k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 10.1k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 10.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 25.8k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 25.8k | where | 519 | 25.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 25.8k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 25.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 26.2k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 26.2k | where | 519 | 26.2k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 26.2k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 26.2k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::MessageType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::MessageType, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 110k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 110k | where | 519 | 110k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 110k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 110k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::EncryptionType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::EncryptionType, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 5.64k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 5.64k | where | 519 | 5.64k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 5.64k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 5.64k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::PAType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::PAType, kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 24.7k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 24.7k | where | 519 | 24.7k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 24.7k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 24.7k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5_constants::NameType, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5_constants::NameType, kerberos_parser::krb5_parser::parse_krb5_principalname::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 18.1k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 18.1k | where | 519 | 18.1k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 18.1k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 18.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReqBody, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::KdcReqBody, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 99.0k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 99.0k | where | 519 | 99.0k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 99.0k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 99.0k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 308 | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 308 | where | 519 | 308 | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 308 | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 308 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 358 | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 358 | where | 519 | 358 | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 358 | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 358 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#7}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 38 | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 38 | where | 519 | 38 | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 38 | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 38 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::EncryptedData, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::EncryptedData, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#10}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 43.0k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 43.0k | where | 519 | 43.0k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 43.0k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 43.0k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#8}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 9.02k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 9.02k | where | 519 | 9.02k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 9.02k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 9.02k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#10}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 5.80k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 5.80k | where | 519 | 5.80k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 5.80k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 5.80k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 364 | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 364 | where | 519 | 364 | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 364 | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 364 | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#5}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 14.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 14.3k | where | 519 | 14.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 14.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 14.3k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 57.4k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 57.4k | where | 519 | 57.4k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 57.4k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 57.4k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::PrincipalName, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::PrincipalName, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 60.8k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 60.8k | where | 519 | 60.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 60.8k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 60.8k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApRep, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::ApRep, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::ApReq, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::ApReq, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 20.7k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 20.7k | where | 519 | 20.7k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 20.7k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 20.7k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#7}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 9.02k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 9.02k | where | 519 | 9.02k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 9.02k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 9.02k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#9}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 9.02k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 9.02k | where | 519 | 9.02k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 9.02k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 9.02k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 1.95k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 1.95k | where | 519 | 1.95k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 1.95k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 1.95k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#4}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 20.8k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 20.8k | where | 519 | 20.8k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 20.8k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 20.8k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Realm, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Realm, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 60.6k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 60.6k | where | 519 | 60.6k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 60.6k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 60.6k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcRep, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_as_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 20.9k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 20.9k | where | 519 | 20.9k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 20.9k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 20.9k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcRep, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcRep, kerberos_parser::krb5_parser::parse_tgs_rep::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 30.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 30.3k | where | 519 | 30.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 30.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 30.3k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReq, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_as_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 79.6k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 79.6k | where | 519 | 79.6k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 79.6k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 79.6k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KdcReq, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KdcReq, kerberos_parser::krb5_parser::parse_tgs_req::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 76.1k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 76.1k | where | 519 | 76.1k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 76.1k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 76.1k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 8.65k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 8.65k | where | 519 | 8.65k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 8.65k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 8.65k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.98k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.98k | where | 519 | 3.98k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.98k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.98k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::Ticket, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, kerberos_parser::krb5::Ticket, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#6}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.22k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.22k | where | 519 | 3.22k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.22k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.22k | } |
der_parser::ber::multi::parse_ber_container::<kerberos_parser::krb5::KrbError, der_parser::ber::tagged::parse_ber_tagged_explicit_g<der_parser::ber::ber::BerTag, kerberos_parser::krb5::KrbError, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 47.2k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 47.2k | where | 519 | 47.2k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 47.2k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 47.2k | } |
der_parser::ber::multi::parse_ber_container::<alloc::string::String, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, alloc::string::String, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#11}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.83k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.83k | where | 519 | 3.83k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.83k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.83k | } |
der_parser::ber::multi::parse_ber_container::<&[u8], der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, &[u8], kerberos_parser::krb5_parser::parse_encrypted::{closure#0}::{closure#2}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.64k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.64k | where | 519 | 3.64k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.64k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.64k | } |
der_parser::ber::multi::parse_ber_container::<&[u8], der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, &[u8], kerberos_parser::krb5_parser::parse_krb5_padata::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 22.4k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 22.4k | where | 519 | 22.4k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 22.4k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 22.4k | } |
der_parser::ber::multi::parse_ber_container::<&[u8], der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, &[u8], kerberos_parser::krb5_parser::parse_krb5_hostaddress::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 1.60k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 1.60k | where | 519 | 1.60k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 1.60k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 1.60k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_ap_rep::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_ap_req::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 15.6k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 15.6k | where | 519 | 15.6k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 15.6k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 15.6k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 33.5k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 33.5k | where | 519 | 33.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 33.5k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 33.5k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#3}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 19.3k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 19.3k | where | 519 | 19.3k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 19.3k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 19.3k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb_error::{closure#0}::{closure#0}::{closure#5}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 13.7k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 13.7k | where | 519 | 13.7k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 13.7k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 13.7k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_krb5_ticket::{closure#0}::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 4.13k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 4.13k | where | 519 | 4.13k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 4.13k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 4.13k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_kdc_rep::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 31.9k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 31.9k | where | 519 | 31.9k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 31.9k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 31.9k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_kdc_req::{closure#0}::{closure#0}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 125k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 125k | where | 519 | 125k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 125k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 125k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_encrypted::{closure#0}::{closure#1}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 3.64k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 3.64k | where | 519 | 3.64k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 3.64k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 3.64k | } |
der_parser::ber::multi::parse_ber_container::<u32, der_parser::ber::tagged::parse_ber_tagged_explicit_g<u32, u32, kerberos_parser::krb5_parser::parse_kdc_req_body::{closure#0}::{closure#7}, der_parser::error::BerError>::{closure#0}, der_parser::error::BerError>Line | Count | Source | 517 | 52.5k | pub fn parse_ber_container<'a, O, F, E>(mut f: F) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], O, E> | 518 | 52.5k | where | 519 | 52.5k | F: FnMut(&'a [u8], BerObjectHeader<'a>) -> IResult<&'a [u8], O, E>, | 520 | 52.5k | E: ParseError<&'a [u8]> + From<BerError>, | 521 | | { | 522 | | move |i: &[u8]| { | 523 | | let (i, hdr) = ber_read_element_header(i).map_err(nom::Err::convert)?; | 524 | | let (i, data) = match hdr.len { | 525 | | BerSize::Definite(len) => take(len)(i)?, | 526 | | BerSize::Indefinite => { | 527 | | ber_get_object_content(i, &hdr, MAX_RECURSION).map_err(nom::Err::convert)? | 528 | | } | 529 | | }; | 530 | | let (_rest, v) = f(data, hdr)?; | 531 | | Ok((i, v)) | 532 | | } | 533 | 52.5k | } |
Unexecuted instantiation: der_parser::ber::multi::parse_ber_container::<_, _, _> |