27#define BSL_ASN1_CLASS_UNIVERSAL 0x0
28#define BSL_ASN1_CLASS_APPLICATION 0x40
29#define BSL_ASN1_CLASS_CTX_SPECIFIC 0x80
30#define BSL_ASN1_CLASS_PRIVATE 0xC0
32#define BSL_ASN1_TAG_CONSTRUCTED 0x20
35#define BSL_ASN1_TAG_BOOLEAN 0x01
36#define BSL_ASN1_TAG_INTEGER 0x02
37#define BSL_ASN1_TAG_BITSTRING 0x03
38#define BSL_ASN1_TAG_OCTETSTRING 0x04
39#define BSL_ASN1_TAG_NULL 0x05
40#define BSL_ASN1_TAG_OBJECT_ID 0x06
41#define BSL_ASN1_TAG_OBJECT_DESCP 0x07
42#define BSL_ASN1_TAG_INSTANCE_OF 0x08
43#define BSL_ASN1_TAG_REAL 0x09
44#define BSL_ASN1_TAG_ENUMERATED 0x0A
45#define BSL_ASN1_TAG_EMBEDDED_PDV 0x0B
46#define BSL_ASN1_TAG_UTF8STRING 0x0C
47#define BSL_ASN1_TAG_RALATIVE_ID 0x0D
48#define BSL_ASN1_TAG_TIME 0x0E
49#define BSL_ASN1_TAG_SEQUENCE 0x10
50#define BSL_ASN1_TAG_SET 0x11
51#define BSL_ASN1_TAG_PRINTABLESTRING 0x13
52#define BSL_ASN1_TAG_TELETEXSTRING 0x14
53#define BSL_ASN1_TAG_T61STRING BSL_ASN1_TAG_TELETEXSTRING
54#define BSL_ASN1_TAG_IA5STRING 0x16
56#define BSL_ASN1_TAG_UTCTIME 0x17
57#define BSL_ASN1_TAG_GENERALIZEDTIME 0x18
58#define BSL_ASN1_TAG_UNIVERSALSTRING 0x1C
59#define BSL_ASN1_TAG_BMPSTRING 0x1E
62#define BSL_ASN1_TAG_CHOICE (BSL_ASN1_CLASS_PRIVATE | 1)
63#define BSL_ASN1_TAG_ANY (BSL_ASN1_CLASS_PRIVATE | 2)
64#define BSL_ASN1_TAG_EMPTY 0x00
67#define BSL_ASN1_FLAG_OPTIONAL 1
69#define BSL_ASN1_FLAG_DEFAULT 2
71#define BSL_ASN1_FLAG_HEADERONLY 4
73#define BSL_ASN1_FLAG_SAME 8
75#define BSL_ASN1_List BslList
83} BSL_ASN1_TemplateItem;
86 BSL_ASN1_TemplateItem *templItems;
112typedef int32_t(*BSL_ASN1_DecTemplCallBack)(int32_t type, uint32_t idx,
void *data,
void *expVal);
123typedef int32_t(*BSL_ASN1_ParseListAsnItem)(uint32_t layer, BSL_ASN1_Buffer *asn,
void *cbParam, BSL_ASN1_List *list);
128} BSL_ASN1_DecodeListParam;
144int32_t BSL_ASN1_DecodeTagLen(uint8_t tag, uint8_t **encode, uint32_t *encLen, uint32_t *valLen);
158int32_t BSL_ASN1_DecodeListItem(BSL_ASN1_DecodeListParam *param, BSL_ASN1_Buffer *asn,
159 BSL_ASN1_ParseListAsnItem parseListItemCb,
void *cbParam, BSL_ASN1_List *list);
174int32_t BSL_ASN1_DecodeTemplate(BSL_ASN1_Template *templ, BSL_ASN1_DecTemplCallBack decTemlCb,
175 uint8_t **encode, uint32_t *encLen, BSL_ASN1_Buffer *asnArr, uint32_t arrNum);
196int32_t BSL_ASN1_EncodeTemplate(BSL_ASN1_Template *templ, BSL_ASN1_Buffer *asnArr, uint32_t arrNum,
197 uint8_t **encode, uint32_t *encLen);
217int32_t BSL_ASN1_EncodeListItem(uint8_t tag, uint32_t listSize, BSL_ASN1_Template *templ, BSL_ASN1_Buffer *asnArr,
218 uint32_t arrNum, BSL_ASN1_Buffer *out);