File syn_asn1.h¶
FileList > crypto > syn_asn1.h
Go to the source code of this file
Zero-Heap ASN.1 DER (Distinguished Encoding Rules) TLV Parser.
#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_ASN1_Element Parsed ASN.1 TLV element header. |
Public Functions¶
| Type | Name |
|---|---|
| bool | syn_asn1_enter_container (const SYN_ASN1_Element * container, const uint8_t ** child_buf, size_t * child_len) Unwraps a constructed container (SEQUENCE, SET, or context-specific tag) for child iteration. |
| bool | syn_asn1_get_bit_string (const SYN_ASN1_Element * elem, const uint8_t ** bits_out, size_t * bit_len_out) Extract Bit String payload (stripping unused bits count prefix byte). |
| bool | syn_asn1_get_integer (const SYN_ASN1_Element * elem, const uint8_t ** int_out, size_t * int_len_out) Extract raw integer bytes (stripping leading sign zero padding if present). |
| bool | syn_asn1_match_oid (const SYN_ASN1_Element * elem, const uint8_t * expected_oid, size_t oid_len) Compare ASN.1 Object Identifier (OID) against expected byte array. |
| bool | syn_asn1_parse_element (const uint8_t * buf, size_t len, SYN_ASN1_Element * elem_out) Parse a single ASN.1 DER TLV element from buffer. |
| bool | syn_asn1_step (const uint8_t ** buf, size_t * len, SYN_ASN1_Element * elem_out) Skip/advance past current TLV element in a DER buffer. |
Macros¶
| Type | Name |
|---|---|
| define | SYN_ASN1_CLASS_APPLICATION 0x40UAPPLICATION tag class (0x40). |
| define | SYN_ASN1_CLASS_CONTEXT_SPECIFIC 0x80UCONTEXT-SPECIFIC tag class (0x80). |
| define | SYN_ASN1_CLASS_MASK 0xC0UASN.1 Tag Class / Form Masking. |
| define | SYN_ASN1_CLASS_PRIVATE 0xC0UPRIVATE tag class (0xC0). |
| define | SYN_ASN1_CLASS_UNIVERSAL 0x00UUNIVERSAL tag class (0x00). |
| define | SYN_ASN1_CONSTRUCTED_MASK 0x20UMask for ASN.1 constructed form (bit 5). |
| define | SYN_ASN1_TAG_BIT_STRING 0x03UASN.1 BIT STRING universal tag. |
| define | SYN_ASN1_TAG_BOOLEAN 0x01UASN.1 Universal Tag Constants. |
| define | SYN_ASN1_TAG_GENERALIZEDTIME 0x18UASN.1 GeneralizedTime universal tag. |
| define | SYN_ASN1_TAG_INTEGER 0x02UASN.1 INTEGER universal tag. |
| define | SYN_ASN1_TAG_NULL 0x05UASN.1 NULL universal tag. |
| define | SYN_ASN1_TAG_NUM_MASK 0x1FUMask for ASN.1 tag number (lower 5 bits). |
| define | SYN_ASN1_TAG_OCTET_STRING 0x04UASN.1 OCTET STRING universal tag. |
| define | SYN_ASN1_TAG_OID 0x06UASN.1 OID universal tag. |
| define | SYN_ASN1_TAG_SEQUENCE 0x30UASN.1 SEQUENCE universal tag. |
| define | SYN_ASN1_TAG_SET 0x31UASN.1 SET universal tag. |
| define | SYN_ASN1_TAG_UTCTIME 0x17UASN.1 UTCTime universal tag. |
Public Functions Documentation¶
function syn_asn1_enter_container¶
Unwraps a constructed container (SEQUENCE, SET, or context-specific tag) for child iteration.
bool syn_asn1_enter_container (
const SYN_ASN1_Element * container,
const uint8_t ** child_buf,
size_t * child_len
)
Parameters:
containerPointer to container TLV element header.child_buf[out] Sub-slice buffer pointer to container payload.child_len[out] Length of container payload.
Returns:
true if element is constructed and valid payload extracted.
function syn_asn1_get_bit_string¶
Extract Bit String payload (stripping unused bits count prefix byte).
bool syn_asn1_get_bit_string (
const SYN_ASN1_Element * elem,
const uint8_t ** bits_out,
size_t * bit_len_out
)
Parameters:
elemParsed ASN.1 BIT STRING element.bits_out[out] Pointer to raw bit string bytes.bit_len_out[out] Number of valid bits in payload.
Returns:
true on success.
function syn_asn1_get_integer¶
Extract raw integer bytes (stripping leading sign zero padding if present).
bool syn_asn1_get_integer (
const SYN_ASN1_Element * elem,
const uint8_t ** int_out,
size_t * int_len_out
)
Parameters:
elemParsed ASN.1 INTEGER element.int_out[out] Pointer to integer payload bytes.int_len_out[out] Length of integer payload bytes.
Returns:
true on success.
function syn_asn1_match_oid¶
Compare ASN.1 Object Identifier (OID) against expected byte array.
bool syn_asn1_match_oid (
const SYN_ASN1_Element * elem,
const uint8_t * expected_oid,
size_t oid_len
)
Parameters:
elemParsed ASN.1 OID element.expected_oidExpected encoded OID payload bytes.oid_lenLength of expected OID payload bytes.
Returns:
true if OIDs match.
function syn_asn1_parse_element¶
Parse a single ASN.1 DER TLV element from buffer.
Parameters:
bufData buffer.lenLength of available bytes in buffer.elem_out[out] Output parsed element.
Returns:
true if valid TLV element parsed, false on truncation or encoding error.
function syn_asn1_step¶
Skip/advance past current TLV element in a DER buffer.
Parameters:
bufPointer to buffer pointer (updated on success).lenPointer to available length (updated on success).elem_out[out] Optional parsed element header.
Returns:
true on success.
Macro Definition Documentation¶
define SYN_ASN1_CLASS_APPLICATION¶
APPLICATION tag class (0x40).
define SYN_ASN1_CLASS_CONTEXT_SPECIFIC¶
CONTEXT-SPECIFIC tag class (0x80).
define SYN_ASN1_CLASS_MASK¶
ASN.1 Tag Class / Form Masking.
Mask for ASN.1 tag class (top 2 bits).
define SYN_ASN1_CLASS_PRIVATE¶
PRIVATE tag class (0xC0).
define SYN_ASN1_CLASS_UNIVERSAL¶
UNIVERSAL tag class (0x00).
define SYN_ASN1_CONSTRUCTED_MASK¶
Mask for ASN.1 constructed form (bit 5).
define SYN_ASN1_TAG_BIT_STRING¶
ASN.1 BIT STRING universal tag.
define SYN_ASN1_TAG_BOOLEAN¶
ASN.1 Universal Tag Constants.
ASN.1 BOOLEAN universal tag.
define SYN_ASN1_TAG_GENERALIZEDTIME¶
ASN.1 GeneralizedTime universal tag.
define SYN_ASN1_TAG_INTEGER¶
ASN.1 INTEGER universal tag.
define SYN_ASN1_TAG_NULL¶
ASN.1 NULL universal tag.
define SYN_ASN1_TAG_NUM_MASK¶
Mask for ASN.1 tag number (lower 5 bits).
define SYN_ASN1_TAG_OCTET_STRING¶
ASN.1 OCTET STRING universal tag.
define SYN_ASN1_TAG_OID¶
ASN.1 OID universal tag.
define SYN_ASN1_TAG_SEQUENCE¶
ASN.1 SEQUENCE universal tag.
define SYN_ASN1_TAG_SET¶
ASN.1 SET universal tag.
define SYN_ASN1_TAG_UTCTIME¶
ASN.1 UTCTime universal tag.
The documentation for this class was generated from the following file src/syntropic/crypto/syn_asn1.h