![]() |
Mbed OS Reference
|
Generic ASN.1 parsing. More...
Go to the source code of this file.
Data Structures | |
| struct | mbedtls_asn1_buf |
| Type-length-value structure that allows for ASN1 using DER. More... | |
| struct | mbedtls_asn1_bitstring |
| Container for ASN1 bit strings. More... | |
| struct | mbedtls_asn1_sequence |
| Container for a sequence of ASN.1 items. More... | |
| struct | mbedtls_asn1_named_data |
| Container for a sequence or list of 'named' ASN.1 data items. More... | |
Macros | |
| #define | MBEDTLS_OID_SIZE(x) (sizeof(x) - 1) |
| Returns the size of the binary string, without the trailing \0. | |
| #define | MBEDTLS_OID_CMP(oid_str, oid_buf) |
| Compares an mbedtls_asn1_buf structure to a reference OID. | |
ASN1 Error codes | |
These error codes are OR'ed to X509 error codes for higher error granularity. ASN1 is a standard to specify data structures. | |
| #define | MBEDTLS_ERR_ASN1_OUT_OF_DATA -0x0060 |
| Out of data when parsing an ASN1 data structure. | |
| #define | MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 |
| ASN1 tag was of an unexpected value. | |
| #define | MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 |
| Error when trying to determine the length or invalid length. | |
| #define | MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 |
| Actual length differs from expected length. | |
| #define | MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 |
| Data is invalid. | |
| #define | MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A |
| Memory allocation failed. | |
| #define | MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C |
| Buffer too small when writing ASN.1 data structure. | |
DER constants | |
These constants comply with the DER encoded ASN.1 type tags. DER encoding uses hexadecimal representation. An example DER sequence is:
| |
| #define | MBEDTLS_ASN1_BOOLEAN 0x01 |
| Boolean. | |
| #define | MBEDTLS_ASN1_INTEGER 0x02 |
| Integer. | |
| #define | MBEDTLS_ASN1_BIT_STRING 0x03 |
| Bit String. | |
| #define | MBEDTLS_ASN1_OCTET_STRING 0x04 |
| Octet String. | |
| #define | MBEDTLS_ASN1_NULL 0x05 |
| Null. | |
| #define | MBEDTLS_ASN1_OID 0x06 |
| OID. | |
| #define | MBEDTLS_ASN1_ENUMERATED 0x0A |
| Enumerated. | |
| #define | MBEDTLS_ASN1_UTF8_STRING 0x0C |
| UTF-8 String. | |
| #define | MBEDTLS_ASN1_SEQUENCE 0x10 |
| Sequence. | |
| #define | MBEDTLS_ASN1_SET 0x11 |
| Set. | |
| #define | MBEDTLS_ASN1_PRINTABLE_STRING 0x13 |
| Printable String. | |
| #define | MBEDTLS_ASN1_T61_STRING 0x14 |
| T61 String. | |
| #define | MBEDTLS_ASN1_IA5_STRING 0x16 |
| IA5 String. | |
| #define | MBEDTLS_ASN1_UTC_TIME 0x17 |
| UTC Time. | |
| #define | MBEDTLS_ASN1_GENERALIZED_TIME 0x18 |
| Generalized Time. | |
| #define | MBEDTLS_ASN1_UNIVERSAL_STRING 0x1C |
| Universal String. | |
| #define | MBEDTLS_ASN1_BMP_STRING 0x1E |
| BMP String. | |
| #define | MBEDTLS_ASN1_PRIMITIVE 0x00 |
| Primitive. | |
| #define | MBEDTLS_ASN1_CONSTRUCTED 0x20 |
| Constructed. | |
| #define | MBEDTLS_ASN1_CONTEXT_SPECIFIC 0x80 |
| Context Specific. | |
Typedefs | |
| typedef struct mbedtls_asn1_buf | mbedtls_asn1_buf |
| Type-length-value structure that allows for ASN1 using DER. | |
| typedef struct mbedtls_asn1_bitstring | mbedtls_asn1_bitstring |
| Container for ASN1 bit strings. | |
| typedef struct mbedtls_asn1_sequence | mbedtls_asn1_sequence |
| Container for a sequence of ASN.1 items. | |
| typedef struct mbedtls_asn1_named_data | mbedtls_asn1_named_data |
| Container for a sequence or list of 'named' ASN.1 data items. | |
Functions | |
| int | mbedtls_asn1_get_len (unsigned char **p, const unsigned char *end, size_t *len) |
| Get the length of an ASN.1 element. | |
| int | mbedtls_asn1_get_tag (unsigned char **p, const unsigned char *end, size_t *len, int tag) |
| Get the tag and length of the element. | |
| int | mbedtls_asn1_get_bool (unsigned char **p, const unsigned char *end, int *val) |
| Retrieve a boolean ASN.1 tag and its value. | |
| int | mbedtls_asn1_get_int (unsigned char **p, const unsigned char *end, int *val) |
| Retrieve an integer ASN.1 tag and its value. | |
| int | mbedtls_asn1_get_enum (unsigned char **p, const unsigned char *end, int *val) |
| Retrieve an enumerated ASN.1 tag and its value. | |
| int | mbedtls_asn1_get_bitstring (unsigned char **p, const unsigned char *end, mbedtls_asn1_bitstring *bs) |
| Retrieve a bitstring ASN.1 tag and its value. | |
| int | mbedtls_asn1_get_bitstring_null (unsigned char **p, const unsigned char *end, size_t *len) |
| Retrieve a bitstring ASN.1 tag without unused bits and its value. | |
| int | mbedtls_asn1_get_sequence_of (unsigned char **p, const unsigned char *end, mbedtls_asn1_sequence *cur, int tag) |
| Parses and splits an ASN.1 "SEQUENCE OF <tag>". | |
| void | mbedtls_asn1_sequence_free (mbedtls_asn1_sequence *seq) |
| Free a heap-allocated linked list presentation of an ASN.1 sequence, including the first element. | |
| int | mbedtls_asn1_traverse_sequence_of (unsigned char **p, const unsigned char *end, unsigned char tag_must_mask, unsigned char tag_must_val, unsigned char tag_may_mask, unsigned char tag_may_val, int(*cb)(void *ctx, int tag, unsigned char *start, size_t len), void *ctx) |
| Traverse an ASN.1 SEQUENCE container and call a callback for each entry. | |
| int | mbedtls_asn1_get_alg (unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params) |
| Retrieve an AlgorithmIdentifier ASN.1 sequence. | |
| int | mbedtls_asn1_get_alg_null (unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg) |
| Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params. | |
| mbedtls_asn1_named_data * | mbedtls_asn1_find_named_data (mbedtls_asn1_named_data *list, const char *oid, size_t len) |
| Find a specific named_data entry in a sequence or list based on the OID. | |
| void | mbedtls_asn1_free_named_data (mbedtls_asn1_named_data *entry) |
| Free a mbedtls_asn1_named_data entry. | |
| void | mbedtls_asn1_free_named_data_list (mbedtls_asn1_named_data **head) |
| Free all entries in a mbedtls_asn1_named_data list. | |
Generic ASN.1 parsing.
Definition in file asn1.h.