Data Structures | |
| struct | mbedtls_asn1_bitstring |
| struct | mbedtls_asn1_buf |
| struct | mbedtls_asn1_named_data |
| struct | mbedtls_asn1_sequence |
Variables | |
| mbedtls_asn1_buf | mbedtls_asn1_sequence::buf |
| size_t | mbedtls_asn1_bitstring::len |
| size_t | mbedtls_asn1_buf::len |
| struct mbedtls_asn1_named_data * | mbedtls_asn1_named_data::next |
| struct mbedtls_asn1_sequence * | mbedtls_asn1_sequence::next |
| unsigned char | mbedtls_asn1_named_data::next_merged |
| mbedtls_asn1_buf | mbedtls_asn1_named_data::oid |
| unsigned char * | mbedtls_asn1_bitstring::p |
| unsigned char * | mbedtls_asn1_buf::p |
| int | mbedtls_asn1_buf::tag |
| unsigned char | mbedtls_asn1_bitstring::unused_bits |
| mbedtls_asn1_buf | mbedtls_asn1_named_data::val |
Functions to parse ASN.1 data structures | |
| typedef struct mbedtls_asn1_buf | mbedtls_asn1_buf |
| typedef struct mbedtls_asn1_bitstring | mbedtls_asn1_bitstring |
| typedef struct mbedtls_asn1_sequence | mbedtls_asn1_sequence |
| typedef struct mbedtls_asn1_named_data | mbedtls_asn1_named_data |
| int | mbedtls_asn1_get_len (unsigned char **p, const unsigned char *end, size_t *len) |
| Get the length of an ASN.1 element. Updates the pointer to immediately behind the length. | |
| int | mbedtls_asn1_get_tag (unsigned char **p, const unsigned char *end, size_t *len, int tag) |
| Get the tag and length of the tag. Check for the requested tag. Updates the pointer to immediately behind the tag and length. | |
| int | mbedtls_asn1_get_bool (unsigned char **p, const unsigned char *end, int *val) |
| Retrieve a boolean ASN.1 tag and its value. Updates the pointer to immediately behind the full tag. | |
| int | mbedtls_asn1_get_int (unsigned char **p, const unsigned char *end, int *val) |
| Retrieve an integer ASN.1 tag and its value. Updates the pointer to immediately behind the full tag. | |
| 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. Updates the pointer to immediately behind the full tag. | |
| 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. Updates the pointer to the beginning of the bit/octet string. | |
| 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>" Updated the pointer to immediately behind the full sequence tag. | |
| int | mbedtls_asn1_get_mpi (unsigned char **p, const unsigned char *end, mbedtls_mpi *X) |
| Retrieve a MPI value from an integer ASN.1 tag. Updates the pointer to immediately behind the full tag. | |
| 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. Updates the pointer to immediately behind the full AlgorithmIdentifier. | |
| 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. Updates the pointer to immediately behind the full AlgorithmIdentifier. | |
| 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 Head will be set to NULL. | |
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 |
| #define | MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 |
| #define | MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 |
| #define | MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 |
| #define | MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 |
| #define | MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A |
| #define | MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C |
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_OID_SIZE(x) |
| #define | MBEDTLS_OID_CMP(oid_str, oid_buf) |
| #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.
| #define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 |
Data is invalid. (not used)
| #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_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_OID_CMP | ( | oid_str, | |
| oid_buf ) |
Compares an mbedtls_asn1_buf structure to a reference OID.
Only works for 'defined' oid_str values (MBEDTLS_OID_HMAC_SHA1), you cannot use a 'unsigned char *oid' here!
| #define MBEDTLS_OID_SIZE | ( | x | ) |
Returns the size of the binary string, without the trailing \0
| typedef struct mbedtls_asn1_bitstring mbedtls_asn1_bitstring |
Container for ASN1 bit strings.
| typedef struct mbedtls_asn1_buf mbedtls_asn1_buf |
Type-length-value structure that allows for ASN1 using DER.
| typedef struct mbedtls_asn1_named_data mbedtls_asn1_named_data |
Container for a sequence or list of 'named' ASN.1 data items
| typedef struct mbedtls_asn1_sequence mbedtls_asn1_sequence |
Container for a sequence of ASN.1 items
| mbedtls_asn1_named_data * mbedtls_asn1_find_named_data | ( | mbedtls_asn1_named_data * | list, |
| const char * | oid, | ||
| size_t | len ) |
| void mbedtls_asn1_free_named_data | ( | mbedtls_asn1_named_data * | entry | ) |
Free a mbedtls_asn1_named_data entry.
| entry | The named data entry to free |
| void mbedtls_asn1_free_named_data_list | ( | mbedtls_asn1_named_data ** | head | ) |
Free all entries in a mbedtls_asn1_named_data list Head will be set to NULL.
| head | Pointer to the head of the list of named data entries to free |
| 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. Updates the pointer to immediately behind the full AlgorithmIdentifier.
| p | The position in the ASN.1 data |
| end | End of data |
| alg | The buffer to receive the OID |
| params | The buffer to receive the params (if any) |
| 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. Updates the pointer to immediately behind the full AlgorithmIdentifier.
| p | The position in the ASN.1 data |
| end | End of data |
| alg | The buffer to receive the OID |
| 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. Updates the pointer to immediately behind the full tag.
| p | The position in the ASN.1 data |
| end | End of data |
| bs | The variable that will receive the 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. Updates the pointer to the beginning of the bit/octet string.
| p | The position in the ASN.1 data |
| end | End of data |
| len | Length of the actual bit/octect string in bytes |
| int mbedtls_asn1_get_bool | ( | unsigned char ** | p, |
| const unsigned char * | end, | ||
| int * | val ) |
Retrieve a boolean ASN.1 tag and its value. Updates the pointer to immediately behind the full tag.
| p | The position in the ASN.1 data |
| end | End of data |
| val | The variable that will receive the value |
| int mbedtls_asn1_get_int | ( | unsigned char ** | p, |
| const unsigned char * | end, | ||
| int * | val ) |
Retrieve an integer ASN.1 tag and its value. Updates the pointer to immediately behind the full tag.
| p | The position in the ASN.1 data |
| end | End of data |
| val | The variable that will receive the value |
| int mbedtls_asn1_get_len | ( | unsigned char ** | p, |
| const unsigned char * | end, | ||
| size_t * | len ) |
Get the length of an ASN.1 element. Updates the pointer to immediately behind the length.
| p | The position in the ASN.1 data |
| end | End of data |
| len | The variable that will receive the value |
| int mbedtls_asn1_get_mpi | ( | unsigned char ** | p, |
| const unsigned char * | end, | ||
| mbedtls_mpi * | X ) |
Retrieve a MPI value from an integer ASN.1 tag. Updates the pointer to immediately behind the full tag.
| p | The position in the ASN.1 data |
| end | End of data |
| X | The MPI that will receive the 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>" Updated the pointer to immediately behind the full sequence tag.
| p | The position in the ASN.1 data |
| end | End of data |
| cur | First variable in the chain to fill |
| tag | Type of sequence |
| int mbedtls_asn1_get_tag | ( | unsigned char ** | p, |
| const unsigned char * | end, | ||
| size_t * | len, | ||
| int | tag ) |
Get the tag and length of the tag. Check for the requested tag. Updates the pointer to immediately behind the tag and length.
| p | The position in the ASN.1 data |
| end | End of data |
| len | The variable that will receive the length |
| tag | The expected tag |
| mbedtls_asn1_buf mbedtls_asn1_sequence::buf |
Buffer containing the given ASN.1 item.
| size_t mbedtls_asn1_bitstring::len |
ASN1 length, in octets.
| size_t mbedtls_asn1_buf::len |
ASN1 length, in octets.
| struct mbedtls_asn1_named_data* mbedtls_asn1_named_data::next |
The next entry in the sequence.
| struct mbedtls_asn1_sequence* mbedtls_asn1_sequence::next |
The next entry in the sequence.
| unsigned char mbedtls_asn1_named_data::next_merged |
Merge next item into the current one?
| mbedtls_asn1_buf mbedtls_asn1_named_data::oid |
The object identifier.
| unsigned char* mbedtls_asn1_bitstring::p |
Raw ASN1 data for the bit string
| unsigned char* mbedtls_asn1_buf::p |
ASN1 data, e.g. in ASCII.
| int mbedtls_asn1_buf::tag |
ASN1 type, e.g. MBEDTLS_ASN1_UTF8_STRING.
| unsigned char mbedtls_asn1_bitstring::unused_bits |
Number of unused bits at the end of the string
| mbedtls_asn1_buf mbedtls_asn1_named_data::val |
The named value.