[−][src]Module der_parser::ber
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");
Structs
BerClassFromIntError | |
BerObject | Representation of a BER-encoded (X.690) object |
BerObjectHeader | BER object header (identifier and length) |
BerObjectIntoIterator | |
BerObjectRefIterator | |
BerSizeError | |
BerTag | BER/DER Tag as defined in X.680 section 8.4 |
BitStringObject | BitString wrapper |
PrettyBer |
Enums
BerClass | BER Object class of tag |
BerObjectContent | BER object content |
BerSize | Ber Object Length |
PrettyPrinterFlag |
Constants
MAX_OBJECT_SIZE | Default maximum object size (2^32) |
MAX_RECURSION | Default maximum recursion limit |
Functions
ber_encode_header | serialize Encode header as object |
ber_encode_object | serialize Encode object as BER |
ber_encode_object_raw | serialize Encode header and object content as BER, without any validation |
ber_encode_tagged_explicit | serialize Encode the provided object in an EXPLICIT tagged value, using the provided tag ans class |
ber_encode_tagged_implicit | serialize Encode the provided object in an IMPLICIT tagged value, using the provided tag and class |
ber_read_element_content_as | Parse the next bytes as the content of a BER object. |
ber_read_element_header | Read an object header |
parse_ber | Parse BER object recursively |
parse_ber_bitstring | Read an bitstring value |
parse_ber_bmpstring | Read a BmpString value |
parse_ber_bool | Read a boolean value |
parse_ber_container | Parse a BER object and apply provided function to content |
parse_ber_content | Parse the next bytes as the content of a BER object (combinator, header reference) |
parse_ber_content2 | Parse the next bytes as the content of a BER object (combinator, owned header) |
parse_ber_endofcontent | Read end of content marker |
parse_ber_enum | Read an enumerated value |
parse_ber_explicit | Deprecated Parse an optional tagged object, applying function to get content |
parse_ber_explicit_optional | Parse an optional tagged object, applying function to get content |
parse_ber_generalizedtime | Read a Generalized time value |
parse_ber_generalstring | Read a GeneralString value |
parse_ber_graphicstring | Read a GraphicString value |
parse_ber_ia5string | Read an IA5 string value. The content is verified to be ASCII. |
parse_ber_implicit | Parse an implicit tagged object, applying function to read content |
parse_ber_integer | Read an integer value |
parse_ber_null | Read a null value |
parse_ber_numericstring | Read a numeric string value. The content is verified to contain only digits and spaces. |
parse_ber_objectdescriptor | Read an ObjectDescriptor value |
parse_ber_octetstring | Read an octetstring value |
parse_ber_oid | Read an object identifier value |
parse_ber_optional | Combinator for building optional BER values |
parse_ber_printablestring | Read a printable string value. The content is verified to contain only the allowed characters. |
parse_ber_recursive | Parse BER object recursively, specifying the maximum recursion depth |
parse_ber_relative_oid | Read a relative object identifier value |
parse_ber_sequence | Parse a sequence of BER elements |
parse_ber_sequence_defined | Parse a defined sequence of DER elements (function version) |
parse_ber_sequence_defined_g | Parse a defined SEQUENCE object (generic function) |
parse_ber_sequence_of | Parse a SEQUENCE OF object |
parse_ber_sequence_of_v | Parse a SEQUENCE OF object (returning a vec) |
parse_ber_set | Parse a set of BER elements |
parse_ber_set_defined | Parse a defined set of DER elements (function version) |
parse_ber_set_defined_g | Parse a defined SET object (generic version) |
parse_ber_set_of | Parse a SET OF object |
parse_ber_set_of_v | Parse a SET OF object (returning a vec) |
parse_ber_slice | Parse BER object and get content as slice |
parse_ber_t61string | Read a T61 string value |
parse_ber_tagged_explicit | Read a TAGGED EXPLICIT value (combinator) |
parse_ber_tagged_explicit_g | Read a TAGGED EXPLICIT value (generic version) |
parse_ber_tagged_implicit | Read a TAGGED IMPLICIT value (combinator) |
parse_ber_tagged_implicit_g | Read a TAGGED IMPLICIT value (generic version) |
parse_ber_u32 | Parse BER object and try to decode it as a 32-bits unsigned integer |
parse_ber_u64 | Parse BER object and try to decode it as a 64-bits unsigned integer |
parse_ber_universalstring | Read a UniversalString value |
parse_ber_utctime | Read an UTC time value |
parse_ber_utf8string | Read a UTF-8 string value. The encoding is checked. |
parse_ber_videotexstring | Read a Videotex string value |
parse_ber_visiblestring | Read a visible string value. The content is verified to contain only the allowed characters. |
parse_ber_with_tag | Parse a BER object, expecting a value with specified tag |