rocket::mtls::x509::der_parser

Module ber

Source
Available on crate feature mtls only.
Expand description

Basic Encoding Rules (BER) objects and parser

§BER Objects

The main object of this crate is BerObject. It contains a header (ber tag, class, and size) and content.

To parse primitive objects (for ex. integers or strings), use the parse_ber_ set of functions.

Constructed objects (like sequences, sets or tagged objects) require to use a combinator. This combinator takes a function or closure as input, and returns a new, specialized parser. See the nom parser combinator library for more details on combinators.

§Examples

Parse two BER integers:

use der_parser::ber::parse_ber_integer;

let bytes = [ 0x02, 0x03, 0x01, 0x00, 0x01,
              0x02, 0x03, 0x01, 0x00, 0x00,
];

let (rem, obj1) = parse_ber_integer(&bytes).expect("parsing failed");
let (rem, obj2) = parse_ber_integer(&bytes).expect("parsing failed");

Parse a BER sequence containing one integer and an octetstring:

use der_parser::ber::*;

let bytes = [ 0x30, 0x0a,
              0x02, 0x03, 0x01, 0x00, 0x01,
              0x04, 0x03, 0x62, 0x61, 0x64,
];

let (rem, seq) = parse_ber_sequence_defined(|content| {
        let (rem, obj1) = parse_ber_integer(content)?;
        let (rem, obj2) = parse_ber_octetstring(rem)?;
        Ok((rem, vec![obj1, obj2]))
    })(&bytes)
    .expect("parsing failed");

Modules§

  • Compatibility module for old (pre-7.0) types

Structs§

Enums§

Constants§

Traits§

  • BER object tree traversal to walk a shared borrow of a BER object
  • BER object tree traversal to walk a shared borrow of a BER object

Functions§