⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asn1.h

📁 ASN.1 的一个子集的编码、解码实现。 实现了ASN.1的部分功能。
💻 H
字号:
#ifndef STASN1_H#define STASN1_H/********************************************************************* *  * An implementation of a subset of ASN.1 BER/DER encoding. * * Author: Logan Bruns * ********************************************************************/#include <stdlib.h>#include "utils.h"/* ASN.1 Modes */#define ST_ASN1_DECODE 0#define ST_ASN1_ENCODE 1/* ASN.1 Setup Routines */typedef void* st_asn1_context;int st_asn1_allocate_context(st_asn1_context* pContext);size_t st_asn1_allocate_context_ext(st_asn1_context* pContext,                                    void* buffer,                                    size_t bufferSize);void st_asn1_free_context(st_asn1_context* pContext);size_t st_asn1_get_context_size();void st_asn1_init(st_asn1_context context,                  int mode,                  unsigned char* data,                  size_t dataLength);int st_asn1_finalize(st_asn1_context context);/* ASN.1 Common Routines */int st_asn1_start_sequence(st_asn1_context context);int st_asn1_finish_sequence(st_asn1_context context);int st_asn1_start_context_specific(st_asn1_context context, uint64 tag);int st_asn1_finish_context_specific(st_asn1_context context, uint64 tag);/* ASN.1 Encode Routines */int st_asn1_write_integer(st_asn1_context context, int64 w);int st_asn1_write_octet_string(st_asn1_context context,                               unsigned char* p,                               size_t length);int st_asn1_write_boolean(st_asn1_context context, int boolean);int st_asn1_write_enumerated(st_asn1_context context, int64 w);int st_asn1_write_object_identifier(st_asn1_context context,                                    uint32* id, size_t length);/* ASN.1 Decode Routines */int st_asn1_read_integer(st_asn1_context context, int64* w);int st_asn1_read_octet_string(st_asn1_context context,                              unsigned char* p,                              size_t* length);int st_asn1_read_boolean(st_asn1_context context, int* boolean);int st_asn1_peek(st_asn1_context context);int st_asn1_read_enumerated(st_asn1_context context, int64* w);int st_asn1_read_object_identifier(st_asn1_context context,                                   uint32* id, size_t* length);/* ASN.1 Tag Types */#define ST_SEQUENCE           16#define ST_ENUMERATED         10#define ST_OBJECT_IDENTIFIER  6#define ST_OCTET_STRING       4#define ST_INTEGER            2#define ST_BOOLEAN            1/* ASN.1 BER-TLV Routines */unsigned shortst_asn1_tlv_parse(unsigned char** data, unsigned short* data_length,                  unsigned char** value, unsigned short* value_length);intst_asn1_tlv_find_tag(unsigned short tag,                     unsigned char* data, unsigned short data_length,                     unsigned char** value, unsigned short* value_length);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -