Module der_parser::der [−][src]
Expand description
Distinguished Encoding Rules (DER) objects and parser
All functions in this crate use BER parsing functions (see the ber
module)
internally, adding constraints verification where needed.
The objects BerObject
and DerObject
are the same (type alias): all BER functions,
combinators and macros can be used, and provide additional tools for DER parsing.
However, DER parsing functions enforce DER constraints in addition of their BER counterparts.
DER Objects
The main object of this crate is DerObject
. It contains a header (ber tag, class, and size)
and content.
To parse primitive objects (for ex. integers or strings), use the parse_der_
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 DER integers:
use der_parser::der::parse_der_integer; let bytes = [ 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x00, ]; let (rem, obj1) = parse_der_integer(&bytes).expect("parsing failed"); let (rem, obj2) = parse_der_integer(&bytes).expect("parsing failed");
Parse a BER sequence containing one integer and an octetstring:
use der_parser::der::*; let bytes = [ 0x30, 0x0a, 0x02, 0x03, 0x01, 0x00, 0x01, 0x04, 0x03, 0x62, 0x61, 0x64, ]; let (rem, seq) = parse_der_sequence_defined(|content| { let (rem, obj1) = parse_der_integer(content)?; let (rem, obj2) = parse_der_octetstring(rem)?; Ok((rem, vec![obj1, obj2])) })(&bytes) .expect("parsing failed");
Functions
Parse DER object content recursively
Parse the next bytes as the content of a DER object.
Read an object header (DER)
Parse DER object recursively
Read an bitstring value
Read a BmpString value
Read a boolean value
Parse a DER object and apply provided function to content
Parse the next bytes as the content of a DER object (combinator, header reference)
Parse the next bytes as the content of a DER object (combinator, owned header)
Read end of content marker
Read an enumerated value
Parse an optional tagged object, applying function to get content
Parse an optional tagged object, applying function to get content
Read a Generalized time value
Read a GeneralString value
Read a GraphicString value
Parse DER object and try to decode it as a 32-bits signed integer
Parse DER object and try to decode it as a 64-bits signed integer
Read an IA5 string value. The content is verified to be ASCII.
Parse an implicit tagged object, applying function to read content
Read an integer value
Read a null value
Read a numeric string value. The content is verified to contain only digits and spaces.
Read a ObjectDescriptor value
Read an octetstring value
Read an object identifier value
Read a printable string value. The content is verified to contain only the allowed characters.
Parse DER object recursively, specifying the maximum recursion depth
Read a relative object identifier value
Parse a sequence of DER elements
Parse a defined sequence of DER elements (function version)
Parse a defined SEQUENCE object (generic function)
Parse a SEQUENCE OF object
Parse a SEQUENCE OF object (returning a vec)
Parse a set of DER elements
Parse a defined set of DER elements (function version)
Parse a defined SET object (generic version)
Parse a SET OF object
Parse a SET OF object (returning a vec)
Parse DER object and get content as slice
Read a T61 string value
Read a TAGGED EXPLICIT value (combinator)
Read a TAGGED EXPLICIT value (generic version)
Read a TAGGED IMPLICIT value (combinator)
Read a TAGGED IMPLICIT value (generic version)
Parse DER object and try to decode it as a 32-bits unsigned integer
Parse DER object and try to decode it as a 64-bits unsigned integer
Read a UniversalString value
Read an UTC time value
Read a UTF-8 string value. The encoding is checked.
Read a Videotex string value
Parse a DER object, expecting a value with specified tag
Read a printable string value. The content is verified to contain only the allowed characters.
Type Definitions
DER Object class of tag (same as BerClass
)
Representation of a DER-encoded (X.690) object
BER object content
DER object header (identifier and length)
DER tag (same as BER tag)