BearSSL
|
Type for receiving a name element. More...
Data Fields | |
const unsigned char * | oid |
Element OID. More... | |
char * | buf |
Destination buffer. More... | |
size_t | len |
Length (in bytes) of the destination buffer. More... | |
int | status |
Decoding status. More... | |
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.
char* br_name_element::buf |
Destination buffer.
size_t br_name_element::len |
Length (in bytes) of the destination buffer.
The buffer MUST NOT be smaller than 1 byte.
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:
rfc822Name
dNSName
uniformResourceIdentifier
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.
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.