mtls
only.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");
Structs§
- BER/DER object header (identifier and length)
- BER/DER Tag as defined in X.680 section 8.4
Enums§
- BER Object class of tag
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
- 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 Aliases§
- DerClass
Deprecated DER Object class of tag (same asBerClass
) - Representation of a DER-encoded (X.690) object
- BER object content
- DerObject
Header Deprecated DER object header (identifier and length) - DerTag
Deprecated DER tag (same as BER tag)