---
title: ASN1编解码接口
description: "**表1 BER编码接口定义**"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/kslans1/kunpengaccel_ksl_16_0163.html
sourcePath: /source/zh/kunpengaccel/system-lib/kslans1/kunpengaccel_ksl_16_0163.html
indexId: 6c62f7be9848e57c87c5e576ffc8c9844a3ee12823ab939c58ac364b574f7d0b72
---
# ASN1编解码接口

#### BER编码接口


**表1 BER编码接口定义**

| 名称 | 定义 | 描述 |
| --- | --- | --- |
| AsnBerEncodeBool | void AsnBerEncodeBool(const AsnDesc \* desc, void\* stru, AsnCtx\* ctx); | 编码BOOL类型数据。 |
| AsnBerEncodeInt32 | void AsnBerEncodeInt32(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码int32范围内的INTEGER类型数据。 |
| AsnBerEncodeUint32 | void AsnBerEncodeUint32(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码uint32范围内的INTEGER类型数据。 |
| AsnBerEncodeInt64 | void AsnBerEncodeInt64(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码int64范围内的INTEGER类型数据。 |
| AsnBerEncodeUint64 | void AsnBerEncodeUint64(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码uint64范围内的INTEGER类型数据。 |
| AsnBerEncodeEnum | void AsnBerEncodeEnum(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码ENUMERATED类型数据。 |
| AsnBerEncodeNull | void AsnBerEncodeNull(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码NULL类型数据。 |
| AsnBerEncodeReal | void AsnBerEncodeReal(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码REAL类型数据。 |
| AsnBerEncodeBitString | void AsnBerEncodeBitString(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码BIT STRING类型数据。 |
| AsnBerEncodeOctString | void AsnBerEncodeOctString(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码OCTET STRING类型数据。 |
| AsnBerEncodeCharString | void AsnBerEncodeCharString(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码字符串类型数据，支持PrintableString/IA5String/VisibleString/GeneralString/UTF8String。 |
| AsnBerEncodeSequence | void AsnBerEncodeSequence(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码SEQUENCE类型数据。 |
| AsnBerEncodeList | void AsnBerEncodeList(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码SEQUENCE OF类型数据。 |
| AsnBerEncodeChoice | void AsnBerEncodeChoice(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 编码CHOICE类型数据。 |
| AsnBerEncodeObjectIdentifier | void AsnBerEncodeObjectIdentifier(const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码OBJECT IDENTIFIER数据。 |


#### BER解码接口


**表2 BER解码接口定义**

| 名称 | 定义 | 描述 |
| --- | --- | --- |
| AsnBerDecodeBool | void AsnBerDecodeBool(const AsnDesc \* desc, void\* stru, AsnCtx\* ctx); | 解码BOOL类型数据。 |
| AsnBerDecodeInt32 | void AsnBerDecodeInt32(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码int32范围内的INTEGER类型数据。 |
| AsnBerDecodeUint32 | void AsnBerDecodeUint32(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码uint32范围内的INTEGER类型数据。 |
| AsnBerDecodeInt64 | void AsnBerDecodeInt64(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码int64范围内的INTEGER类型数据。 |
| AsnBerDecodeUint64 | void AsnBerDecodeUint64(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码uint64范围内的INTEGER类型数据。 |
| AsnBerDecodeEnum | void AsnBerDecodeEnum(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码ENUMERATED类型数据。 |
| AsnBerDecodeNull | void AsnBerDecodeNull(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码NULL类型数据。 |
| AsnBerDecodeReal | void AsnBerDecodeReal(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码REAL类型数据。 |
| AsnBerDecodeBitString | void AsnBerDecodeBitString(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码BIT STRING类型数据。 |
| AsnBerDecodeOctString | void AsnBerDecodeOctString(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码OCTET STRING类型数据。 |
| AsnBerDecodeCharString | void AsnBerDecodeCharString(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码字符串类型数据，支持PrintableString/IA5String/VisibleString/GeneralString/UTF8String。 |
| AsnBerDecodeSequence | void AsnBerDecodeSequence(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码SEQUENCE类型数据。 |
| AsnBerDecodeList | void AsnBerDecodeList(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码SEQUENCE OF类型数据。 |
| AsnBerDecodeChoice | void AsnBerDecodeChoice(const AsnDesc\* desc, void\* stru, AsnCtx\* ctx); | 解码CHOICE类型数据。 |
| AsnBerDecodeObjectIdentifier | void AsnBerDecodeObjectIdentifier(const AsnDesc \*desc, void \*stru, AsnCtx \*ctx); | 解码OBJECT IDENTIFIER数据。 |


#### PER编码接口


**表3 PER编码接口定义**

| 名称 | 定义 | 描述 |
| --- | --- | --- |
| AsnPerEncodeInt | void AsnPerEncodeInt(const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有符号的约束整数。 |
| AsnPerEncodeUint | void AsnPerEncodeUint (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码无符号的约束整数。 |
| AsnPerEncodeIntUc | void AsnPerEncodeIntUc (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码无约束整数。 |
| AsnPerEncodeIntSc | void AsnPerEncodeIntSc (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码半约束整数。 |
| AsnPerEncodeIntExt | void AsnPerEncodeIntExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有扩展标记的约束整数。 |
| AsnPerEncodeBool | void AsnPerEncodeBool (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码BOOL类型数据。 |
| AsnPerEncodeEnum | void AsnPerEncodeEnum (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码无扩展标记的ENUMERATED类型数据。 |
| AsnPerEncodeEnumExt | void AsnPerEncodeEnumExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有扩展标记的ENUMERATED类型数据。 |
| AsnPerEncodeReal | void AsnPerEncodeReal (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码REAL类型数据。 |
| AsnPerEncodeNull | void AsnPerEncodeNull (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码NULL类型数据。 |
| AsnPerEncodeBitString | void AsnPerEncodeBitString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有约束的BIT STRING数据。 |
| AsnPerEncodeBitStringEq | void AsnPerEncodeBitStringEq (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码BIT STRING数据，上下限存在且相等场景。 |
| AsnPerEncodeOctString | void AsnPerEncodeOctString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有约束的OCTET STRING数据。 |
| AsnPerEncodeOctStringEq | void AsnPerEncodeOctStringEq (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码OCTET STRING数据，上下限存在且相等场景。 |
| AsnPerEncodeCharStrKnownMulti | void AsnPerEncodeCharStrKnownMulti (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码已知乘数字符串类型数据，支持NumericString/PrintableString/VisibleString (ISO646String)/IA5String/UTCTime/GeneralizedTime。 |
| AsnPerEncodeCharStrOthers | void AsnPerEncodeCharStrOthers (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码其他字符串类型数据，支持GeneralString/GraphicString/TeletexString(T61String)/UTF8String/VideotexString/CHARACTER STRING。 |
| AsnPerEncodeSequence | void AsnPerEncodeSequence (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码无扩展标记的SEQUENCE类型数据。 |
| AsnPerEncodeSequenceExt | void AsnPerEncodeSequenceExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有扩展标记的SEQUENCE类型数据。 |
| AsnPerEncodeList | void AsnPerEncodeList (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码SEQUENCE OF类型数据。 |
| AsnPerEncodeOpenTypeChoice | void AsnPerEncodeOpenTypeChoice(const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码OpenType CHOICE类型数据。 |
| AsnPerEncodeChoice | void AsnPerEncodeChoice (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码无扩展标记的CHOICE类型数据。 |
| AsnPerEncodeChoiceExt | void AsnPerEncodeChoiceExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码有扩展标记的CHOICE类型数据。 |
| AsnPerEncodeObjectIdentifier | void AsnPerEncodeObjectIdentifier (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码OBJECT IDENTIFIER数据。 |


#### PER解码接口


**表4 PER解码接口定义**

| 名称 | 定义 | 描述 |
| --- | --- | --- |
| AsnPerDecodeInt | void AsnPerDecodeInt(const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有符号的约束整数。 |
| AsnPerDecodeUint | void AsnPerDecodeUint (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码无符号的约束整数。 |
| AsnPerDecodeIntUc | void AsnPerDecodeIntUc (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码无约束整数。 |
| AsnPerDecodeIntSc | void AsnPerDecodeIntSc (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码半约束整数。 |
| AsnPerDecodeIntExt | void AsnPerDecodeIntExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有扩展标记的约束整数。 |
| AsnPerDecodeBool | void AsnPerDecodeBool (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码BOOL类型数据。 |
| AsnPerDecodeEnum | void AsnPerDecodeEnum (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码无扩展标记的ENUMERATED类型数据。 |
| AsnPerDecodeEnumExt | void AsnPerDecodeEnumExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有扩展标记的ENUMERATED类型数据。 |
| AsnPerDecodeReal | void AsnPerDecodeReal (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码REAL类型数据。 |
| AsnPerDecodeNull | void AsnPerDecodeNull (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码NULL类型数据。 |
| AsnPerDecodeBitString | void AsnPerDecodeBitString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有约束的BIT STRING数据。 |
| AsnPerDecodeBitStringEq | void AsnPerDecodeBitStringEq (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码BIT STRING数据，上下限存在且相等场景。 |
| AsnPerDecodeOctString | void AsnPerDecodeOctString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有约束的OCTET STRING数据。 |
| AsnPerDecodeOctStringEq | void AsnPerDecodeOctStringEq (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码OCTET STRING数据，上下限存在且相等场景。 |
| AsnPerDecodeCharStrKnownMulti | void AsnPerDecodeCharStrKnownMulti (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码已知乘数字符串类型数据，支持NumericString/PrintableString/VisibleString (ISO646String)/IA5String/UTCTime/GeneralizedTime。 |
| AsnPerDecodeCharStrOthers | void AsnPerDecodeCharStrOthers (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码其他字符串类型数据，支持GeneralString/GraphicString/TeletexString(T61String)/UTF8String/VideotexString/CHARACTER STRING。 |
| AsnPerDecodeSequence | void AsnPerDecodeSequence (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码无扩展标记的SEQUENCE类型数据。 |
| AsnPerDecodeSequenceExt | void AsnPerDecodeSequenceExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有扩展标记的SEQUENCE类型数据。 |
| AsnPerDecodeList | void AsnPerDecodeList (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码SEQUENCE OF类型数据。 |
| AsnPerDecodeOpenTypeChoice | void AsnPerDecodeOpenTypeChoice(const AsnDesc \*desc, void \*stru, AsnCtx \*ctx); | 解码OpenType CHOICE类型数据。 |
| AsnPerDecodeChoice | void AsnPerDecodeChoice (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码无扩展标记的CHOICE类型数据。 |
| AsnPerDecodeChoiceExt | void AsnPerDecodeChoiceExt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码有扩展标记的CHOICE类型数据。 |
| AsnPerDecodeObjectIdentifier | void AsnPerDecodeObjectIdentifier (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码OBJECT IDENTIFIER数据。 |


#### XER编码接口


**表5 XER编码接口定义**

| 名称 | 定义 | 描述 |
| --- | --- | --- |
| AsnXerEncodeBool | void AsnXerEncodeBool (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码BOOLEAN类型数据。 |
| AsnXerEncodeUint | void AsnXerEncodeUint (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码INTEGER类型（无符号）数据。 |
| AsnXerEncodeInt | void AsnXerEncodeInt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码INTEGER类型（有符号）数据。 |
| AsnXerEncodeEnum | void AsnXerEncodeEnum (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码ENUMERATED类型数据。 |
| AsnXerEncodeReal | void AsnXerEncodeReal (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码REAL类型数据。 |
| AsnXerEncodeBitString | void AsnXerEncodeBitString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码BIT STRING类型数据。 |
| AsnXerEncodeOctString | void AsnXerEncodeOctString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码OCTET STRING类型数据。 |
| AsnXerEncodeCharString | void AsnXerEncodeCharString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码CHARACTER STRING类型数据。 |
| AsnXerEncodeNull | void AsnXerEncodeNull (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码NULL类型数据。 |
| AsnXerEncodeSequence | void AsnXerEncodeSequence (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码SEQUENCE类型数据。 |
| AsnXerEncodeChoice | void AsnXerEncodeChoice (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码CHOICE类型数据。 |
| AsnXerEncodeList | void AsnXerEncodeList (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码SEQUENCE OF类型数据。 |
| AsnXerEncodeObjectIdentifier | void AsnXerEncodeObjectIdentifier (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 编码OBJECT IDENTIFIER类型数据。 |


#### XER解码接口


**表6 XER解码接口定义**

| 名称 | 定义 | 描述 |
| --- | --- | --- |
| AsnXerDecodeBool | void AsnXerDecodeBool (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码BOOLEAN类型数据。 |
| AsnXerDecodeUint | void AsnXerDecodeUint (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码INTEGER类型（无符号）数据。 |
| AsnXerDecodeInt | void AsnXerDecodeInt (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码INTEGER类型（有符号）数据。 |
| AsnXerDecodeEnum | void AsnXerDecodeEnum (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码ENUMERATED类型数据。 |
| AsnXerDecodeReal | void AsnXerDecodeReal (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码REAL类型数据。 |
| AsnXerDecodeBitString | void AsnXerDecodeBitString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码BIT STRING类型数据。 |
| AsnXerDecodeOctString | void AsnXerDecodeOctString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码OCTET STRING类型数据。 |
| AsnXerDecodeCharString | void AsnXerDecodeCharString (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码CHARACTER STRING类型数据。 |
| AsnXerDecodeNull | void AsnXerDecodeNull (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码NULL类型数据。 |
| AsnXerDecodeSequence | void AsnXerDecodeSequence (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码SEQUENCE类型数据。 |
| AsnXerDecodeChoice | void AsnXerDecodeChoice (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码CHOICE类型数据。 |
| AsnXerDecodeList | void AsnXerDecodeList (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码SEQUENCE OF类型数据。 |
| AsnXerDecodeObjectIdentifier | void AsnXerDecodeObjectIdentifier (const AsnDesc \*desc, const void \*stru, AsnCtx \*ctx); | 解码OBJECT IDENTIFIER类型数据。 |
