XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
Asn1_module

Classes

struct  mbedtls_asn1_buf
 
struct  mbedtls_asn1_bitstring
 
struct  mbedtls_asn1_sequence
 
struct  mbedtls_asn1_named_data
 

Macros

#define MBEDTLS_OID_SIZE(x)   (sizeof(x) - 1)
 
#define MBEDTLS_OID_CMP(oid_str, oid_buf)
 
#define MBEDTLS_OID_CMP_RAW(oid_str, oid_buf, oid_buf_len)
 

Functions

unsigned char mbedtls_asn1_named_data::MBEDTLS_PRIVATE (next_merged)
 

Variables

int mbedtls_asn1_buf::tag
 
size_t mbedtls_asn1_buf::len
 
unsigned char * mbedtls_asn1_buf::p
 
size_t mbedtls_asn1_bitstring::len
 
unsigned char mbedtls_asn1_bitstring::unused_bits
 
unsigned char * mbedtls_asn1_bitstring::p
 
mbedtls_asn1_buf mbedtls_asn1_sequence::buf
 
struct mbedtls_asn1_sequence * mbedtls_asn1_sequence::next
 
mbedtls_asn1_buf mbedtls_asn1_named_data::oid
 
mbedtls_asn1_buf mbedtls_asn1_named_data::val
 
struct mbedtls_asn1_named_data * mbedtls_asn1_named_data::next
 

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
 

ASN1 Error codes

These error codes are combined with other error codes for higher error granularity. e.g. X.509 and PKCS #7 error codes 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:

  • 0x02 – tag indicating INTEGER
  • 0x01 – length in octets
  • 0x05 – value Such sequences are typically read into mbedtls_x509_buf.
#define MBEDTLS_ASN1_BOOLEAN   0x01
 
#define MBEDTLS_ASN1_INTEGER   0x02
 
#define MBEDTLS_ASN1_BIT_STRING   0x03
 
#define MBEDTLS_ASN1_OCTET_STRING   0x04
 
#define MBEDTLS_ASN1_NULL   0x05
 
#define MBEDTLS_ASN1_OID   0x06
 
#define MBEDTLS_ASN1_ENUMERATED   0x0A
 
#define MBEDTLS_ASN1_UTF8_STRING   0x0C
 
#define MBEDTLS_ASN1_SEQUENCE   0x10
 
#define MBEDTLS_ASN1_SET   0x11
 
#define MBEDTLS_ASN1_PRINTABLE_STRING   0x13
 
#define MBEDTLS_ASN1_T61_STRING   0x14
 
#define MBEDTLS_ASN1_IA5_STRING   0x16
 
#define MBEDTLS_ASN1_UTC_TIME   0x17
 
#define MBEDTLS_ASN1_GENERALIZED_TIME   0x18
 
#define MBEDTLS_ASN1_UNIVERSAL_STRING   0x1C
 
#define MBEDTLS_ASN1_BMP_STRING   0x1E
 
#define MBEDTLS_ASN1_PRIMITIVE   0x00
 
#define MBEDTLS_ASN1_CONSTRUCTED   0x20
 
#define MBEDTLS_ASN1_CONTEXT_SPECIFIC   0x80
 
#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
 

Detailed Description

Macro Definition Documentation

◆ MBEDTLS_ASN1_BIT_STRING

#define MBEDTLS_ASN1_BIT_STRING   0x03

◆ MBEDTLS_ASN1_BMP_STRING

#define MBEDTLS_ASN1_BMP_STRING   0x1E

◆ MBEDTLS_ASN1_BOOLEAN

#define MBEDTLS_ASN1_BOOLEAN   0x01

◆ MBEDTLS_ASN1_CONSTRUCTED

#define MBEDTLS_ASN1_CONSTRUCTED   0x20

◆ MBEDTLS_ASN1_CONTEXT_SPECIFIC

#define MBEDTLS_ASN1_CONTEXT_SPECIFIC   0x80

◆ MBEDTLS_ASN1_ENUMERATED

#define MBEDTLS_ASN1_ENUMERATED   0x0A

◆ MBEDTLS_ASN1_GENERALIZED_TIME

#define MBEDTLS_ASN1_GENERALIZED_TIME   0x18

◆ MBEDTLS_ASN1_IA5_STRING

#define MBEDTLS_ASN1_IA5_STRING   0x16

◆ MBEDTLS_ASN1_INTEGER

#define MBEDTLS_ASN1_INTEGER   0x02

◆ MBEDTLS_ASN1_IS_STRING_TAG

#define MBEDTLS_ASN1_IS_STRING_TAG (   tag)
Value:
((unsigned int) (tag) < 32u && ( \
((1u << (tag)) & ((1u << MBEDTLS_ASN1_BMP_STRING) | \
#define MBEDTLS_ASN1_IA5_STRING
Definition asn1.h:76
#define MBEDTLS_ASN1_BMP_STRING
Definition asn1.h:80
#define MBEDTLS_ASN1_PRINTABLE_STRING
Definition asn1.h:74
#define MBEDTLS_ASN1_T61_STRING
Definition asn1.h:75
#define MBEDTLS_ASN1_UNIVERSAL_STRING
Definition asn1.h:79
#define MBEDTLS_ASN1_UTF8_STRING
Definition asn1.h:71

◆ MBEDTLS_ASN1_NULL

#define MBEDTLS_ASN1_NULL   0x05

◆ MBEDTLS_ASN1_OCTET_STRING

#define MBEDTLS_ASN1_OCTET_STRING   0x04

◆ MBEDTLS_ASN1_OID

#define MBEDTLS_ASN1_OID   0x06

◆ MBEDTLS_ASN1_PRIMITIVE

#define MBEDTLS_ASN1_PRIMITIVE   0x00

◆ MBEDTLS_ASN1_PRINTABLE_STRING

#define MBEDTLS_ASN1_PRINTABLE_STRING   0x13

◆ MBEDTLS_ASN1_SEQUENCE

#define MBEDTLS_ASN1_SEQUENCE   0x10

◆ MBEDTLS_ASN1_SET

#define MBEDTLS_ASN1_SET   0x11

◆ MBEDTLS_ASN1_T61_STRING

#define MBEDTLS_ASN1_T61_STRING   0x14

◆ MBEDTLS_ASN1_TAG_CLASS_MASK

#define MBEDTLS_ASN1_TAG_CLASS_MASK   0xC0

◆ MBEDTLS_ASN1_TAG_PC_MASK

#define MBEDTLS_ASN1_TAG_PC_MASK   0x20

◆ MBEDTLS_ASN1_TAG_VALUE_MASK

#define MBEDTLS_ASN1_TAG_VALUE_MASK   0x1F

◆ MBEDTLS_ASN1_UNIVERSAL_STRING

#define MBEDTLS_ASN1_UNIVERSAL_STRING   0x1C

◆ MBEDTLS_ASN1_UTC_TIME

#define MBEDTLS_ASN1_UTC_TIME   0x17

◆ MBEDTLS_ASN1_UTF8_STRING

#define MBEDTLS_ASN1_UTF8_STRING   0x0C

◆ MBEDTLS_ERR_ASN1_ALLOC_FAILED

#define MBEDTLS_ERR_ASN1_ALLOC_FAILED   -0x006A

Memory allocation failed

◆ MBEDTLS_ERR_ASN1_BUF_TOO_SMALL

#define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL   -0x006C

Buffer too small when writing ASN.1 data structure.

◆ MBEDTLS_ERR_ASN1_INVALID_DATA

#define MBEDTLS_ERR_ASN1_INVALID_DATA   -0x0068

Data is invalid.

◆ MBEDTLS_ERR_ASN1_INVALID_LENGTH

#define MBEDTLS_ERR_ASN1_INVALID_LENGTH   -0x0064

Error when trying to determine the length or invalid length.

◆ MBEDTLS_ERR_ASN1_LENGTH_MISMATCH

#define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH   -0x0066

Actual length differs from expected length.

◆ MBEDTLS_ERR_ASN1_OUT_OF_DATA

#define MBEDTLS_ERR_ASN1_OUT_OF_DATA   -0x0060

Out of data when parsing an ASN1 data structure.

◆ MBEDTLS_ERR_ASN1_UNEXPECTED_TAG

#define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG   -0x0062

ASN1 tag was of an unexpected value.

◆ MBEDTLS_OID_CMP

#define MBEDTLS_OID_CMP (   oid_str,
  oid_buf 
)
Value:
((MBEDTLS_OID_SIZE(oid_str) != (oid_buf)->len) || \
memcmp((oid_str), (oid_buf)->p, (oid_buf)->len) != 0)
#define MBEDTLS_OID_SIZE(x)
Definition asn1.h:113
size_t len
Definition initial.c:23

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!

◆ MBEDTLS_OID_CMP_RAW

#define MBEDTLS_OID_CMP_RAW (   oid_str,
  oid_buf,
  oid_buf_len 
)
Value:
((MBEDTLS_OID_SIZE(oid_str) != (oid_buf_len)) || \
memcmp((oid_str), (oid_buf), (oid_buf_len)) != 0)

◆ MBEDTLS_OID_SIZE

#define MBEDTLS_OID_SIZE (   x)    (sizeof(x) - 1)

Returns the size of the binary string, without the trailing \0

Typedef Documentation

◆ mbedtls_asn1_bitstring

Container for ASN1 bit strings.

◆ mbedtls_asn1_buf

Type-length-value structure that allows for ASN1 using DER.

◆ mbedtls_asn1_named_data

Container for a sequence or list of 'named' ASN.1 data items

◆ mbedtls_asn1_sequence

Container for a sequence of ASN.1 items

Function Documentation

◆ MBEDTLS_PRIVATE()

unsigned char mbedtls_asn1_named_data::MBEDTLS_PRIVATE ( next_merged  )

Merge next item into the current one?

This field exists for the sake of Mbed TLS's X.509 certificate parsing code and may change in future versions of the library.

Variable Documentation

◆ buf

mbedtls_asn1_buf mbedtls_asn1_sequence::buf

Buffer containing the given ASN.1 item.

◆ len [1/2]

size_t mbedtls_asn1_buf::len

ASN1 length, in octets.

◆ len [2/2]

size_t mbedtls_asn1_bitstring::len

ASN1 length, in octets.

◆ next [1/2]

struct mbedtls_asn1_sequence* mbedtls_asn1_sequence::next

The next entry in the sequence.

The details of memory management for sequences are not documented and may change in future versions. Set this field to NULL when initializing a structure, and do not modify it except via Mbed TLS library functions.

◆ next [2/2]

struct mbedtls_asn1_named_data* mbedtls_asn1_named_data::next

The next entry in the sequence.

The details of memory management for named data sequences are not documented and may change in future versions. Set this field to NULL when initializing a structure, and do not modify it except via Mbed TLS library functions.

◆ oid

mbedtls_asn1_buf mbedtls_asn1_named_data::oid

The object identifier.

◆ p [1/2]

unsigned char* mbedtls_asn1_buf::p

ASN1 data, e.g. in ASCII.

◆ p [2/2]

unsigned char* mbedtls_asn1_bitstring::p

Raw ASN1 data for the bit string

◆ tag

int mbedtls_asn1_buf::tag

ASN1 type, e.g. MBEDTLS_ASN1_UTF8_STRING.

◆ unused_bits

unsigned char mbedtls_asn1_bitstring::unused_bits

Number of unused bits at the end of the string

◆ val

mbedtls_asn1_buf mbedtls_asn1_named_data::val

The named value.