Mbed OS Reference
Loading...
Searching...
No Matches
asn1.h File Reference

Generic ASN.1 parsing. More...

#include "mbedtls/config.h"
#include <stddef.h>

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. More...
 
#define MBEDTLS_OID_CMP(oid_str, oid_buf)
 Compares an mbedtls_asn1_buf structure to a reference OID. More...
 
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. More...
 
#define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG   -0x0062
 ASN1 tag was of an unexpected value. More...
 
#define MBEDTLS_ERR_ASN1_INVALID_LENGTH   -0x0064
 Error when trying to determine the length or invalid length. More...
 
#define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH   -0x0066
 Actual length differs from expected length. More...
 
#define MBEDTLS_ERR_ASN1_INVALID_DATA   -0x0068
 Data is invalid. More...
 
#define MBEDTLS_ERR_ASN1_ALLOC_FAILED   -0x006A
 Memory allocation failed. More...
 
#define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL   -0x006C
 Buffer too small when writing ASN.1 data structure. More...
 
DER constants

These constants comply with the DER encoded ASN.1 type tags.

DER encoding uses hexadecimal representation. An example DER sequence is:

  • 0x02 – tag indicating INTEGER
  • 0x01 – length in octets
  • 0x05 – value Such sequences are typically read into mbedtls_x509_buf.
#define MBEDTLS_ASN1_BOOLEAN   0x01
 Boolean. More...
 
#define MBEDTLS_ASN1_INTEGER   0x02
 Integer. More...
 
#define MBEDTLS_ASN1_BIT_STRING   0x03
 Bit String. More...
 
#define MBEDTLS_ASN1_OCTET_STRING   0x04
 Octet String. More...
 
#define MBEDTLS_ASN1_NULL   0x05
 Null. More...
 
#define MBEDTLS_ASN1_OID   0x06
 OID. More...
 
#define MBEDTLS_ASN1_ENUMERATED   0x0A
 Enumerated. More...
 
#define MBEDTLS_ASN1_UTF8_STRING   0x0C
 UTF-8 String. More...
 
#define MBEDTLS_ASN1_SEQUENCE   0x10
 Sequence. More...
 
#define MBEDTLS_ASN1_SET   0x11
 Set. More...
 
#define MBEDTLS_ASN1_PRINTABLE_STRING   0x13
 Printable String. More...
 
#define MBEDTLS_ASN1_T61_STRING   0x14
 T61 String. More...
 
#define MBEDTLS_ASN1_IA5_STRING   0x16
 IA5 String. More...
 
#define MBEDTLS_ASN1_UTC_TIME   0x17
 UTC Time. More...
 
#define MBEDTLS_ASN1_GENERALIZED_TIME   0x18
 Generalized Time. More...
 
#define MBEDTLS_ASN1_UNIVERSAL_STRING   0x1C
 Universal String. More...
 
#define MBEDTLS_ASN1_BMP_STRING   0x1E
 BMP String. More...
 
#define MBEDTLS_ASN1_PRIMITIVE   0x00
 Primitive. More...
 
#define MBEDTLS_ASN1_CONSTRUCTED   0x20
 Constructed. More...
 
#define MBEDTLS_ASN1_CONTEXT_SPECIFIC   0x80
 Context Specific. More...
 
#define MBEDTLS_ASN1_IS_STRING_TAG(tag)
 
#define MBEDTLS_ASN1_TAG_CLASS_MASK   0xC0
 
#define MBEDTLS_ASN1_TAG_PC_MASK   0x20
 
#define MBEDTLS_ASN1_TAG_VALUE_MASK   0x1F
 

Typedefs

typedef struct mbedtls_asn1_buf mbedtls_asn1_buf
 Type-length-value structure that allows for ASN1 using DER. More...
 
typedef struct mbedtls_asn1_bitstring mbedtls_asn1_bitstring
 Container for ASN1 bit strings. More...
 
typedef struct mbedtls_asn1_sequence mbedtls_asn1_sequence
 Container for a sequence of ASN.1 items. More...
 
typedef struct mbedtls_asn1_named_data mbedtls_asn1_named_data
 Container for a sequence or list of 'named' ASN.1 data items. More...
 

Functions

int mbedtls_asn1_get_len (unsigned char **p, const unsigned char *end, size_t *len)
 Get the length of an ASN.1 element. More...
 
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. More...
 
int mbedtls_asn1_get_bool (unsigned char **p, const unsigned char *end, int *val)
 Retrieve a boolean ASN.1 tag and its value. More...
 
int mbedtls_asn1_get_int (unsigned char **p, const unsigned char *end, int *val)
 Retrieve an integer ASN.1 tag and its value. More...
 
int mbedtls_asn1_get_enum (unsigned char **p, const unsigned char *end, int *val)
 Retrieve an enumerated ASN.1 tag and its value. More...
 
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. More...
 
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. More...
 
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>". More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
mbedtls_asn1_named_datambedtls_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. More...
 
void mbedtls_asn1_free_named_data (mbedtls_asn1_named_data *entry)
 Free a mbedtls_asn1_named_data entry. More...
 
void mbedtls_asn1_free_named_data_list (mbedtls_asn1_named_data **head)
 Free all entries in a mbedtls_asn1_named_data list. More...
 

Detailed Description

Generic ASN.1 parsing.

Definition in file asn1.h.