[−][src]Function der_parser::ber::parse_ber_set_defined_g
pub fn parse_ber_set_defined_g<'a, O, F, E>(
f: F
) -> impl Fn(&'a [u8]) -> IResult<&'a [u8], O, E> where
F: Fn(&'a [u8]) -> IResult<&'a [u8], O, E>,
E: ParseError<&'a [u8]> + From<BerError>,
Parse a defined SET object (returning a generic object)
Given a parser for set content, apply it to build a DER set and return the remaining bytes and the built object.
The remaining bytes point after the set: any bytes that are part of the sequence but not parsed are ignored.
Examples
Parsing a defined set with different types:
pub struct MyObject<'a> { a: u32, b: &'a [u8], } /// Read a DER-encoded object: /// SET { /// a INTEGER (0..4294967295), /// b OCTETSTRING /// } fn parse_myobject(i: &[u8]) -> BerResult<MyObject> { parse_ber_set_defined_g( |i:&[u8]| { let (i, a) = parse_ber_u32(i)?; let (i, obj) = parse_ber_octetstring(i)?; let b = obj.as_slice().unwrap(); Ok((i, MyObject{ a, b })) } )(i) } let (rem, v) = parse_myobject(&bytes).expect("parsing failed");