BearSSL: br_name_element Struct Reference

BearSSL

Loading...
Searching...
No Matches
Data Fields
br_name_element Struct Reference

Type for receiving a name element. More...

`#include <bearssl_x509.h>`

## Data Fields
const unsigned char * | oid
| Element OID.
char * | buf
| Destination buffer.
size_t | len
| Length (in bytes) of the destination buffer.
int | status
| Decoding status.

## Detailed Description

Type for receiving a name element.

An array of such structures can be provided to the X.509 decoding engines. If the specified elements are found in the certificate subject DN or the SAN extension, then the name contents are copied as zero-terminated strings into the buffer.

The decoder converts TeletexString and BMPString to UTF8String, and ensures that the resulting string is zero-terminated. If the string does not fit in the provided buffer, then the copy is aborted and an error is reported.

## Field Documentation

## ◆ buf

char* br_name_element::buf

Destination buffer.

## ◆ len

size_t br_name_element::len

Length (in bytes) of the destination buffer.

The buffer MUST NOT be smaller than 1 byte.

## ◆ oid

const unsigned char* br_name_element::oid

Element OID.

For X.500 name elements (to be extracted from the subject DN), this is the encoded OID for the requested name element; the first byte shall contain the length of the DER-encoded OID value, followed by the OID value (for instance, OID 2.5.4.3, for id-at-commonName, will be `03 55 04 03`). This is equivalent to full DER encoding with the length but without the tag.

For SAN name elements, the first byte (`oid[0]`) has value 0, followed by another byte that matches the expected GeneralName tag. Allowed second byte values are then:

- 1: `rfc822Name`
- 2: `dNSName`
- 6: `uniformResourceIdentifier`
- 0: `otherName`

If first and second byte are 0, then this is a SAN element of type `otherName`; the `oid[]` array should then contain, right after the two bytes of value 0, an encoded OID (with the same conventions as for X.500 name elements). If a match is found for that OID, then the corresponding name element will be extracted, as long as it is a supported string type.

## ◆ status

int br_name_element::status

Decoding status.

Status is 0 if the name element was not found, 1 if it was found and decoded, or -1 on error. Error conditions include an unrecognised encoding, an invalid encoding, or a string too large for the destination buffer.

The documentation for this struct was generated from the following file:

- bearssl_x509.h