---
title: 接口参数说明
description: "KSL_ASN1库函数接口定义中，为不同的格式提供了针对特定数据类型的编解码接口，其中DER类型编解码与BER类型编解码使用同一接口，通过AsnCtx中的method字段区分。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/kslans1/kunpengaccel_ksl_16_0162.html
sourcePath: /source/zh/kunpengaccel/system-lib/kslans1/kunpengaccel_ksl_16_0162.html
indexId: f2716ab32e595c523dbc09de9ffaad8d41406a8605e7ec679054ea30c90510b672
---
# 接口参数说明

KSL_ASN1库函数接口定义中，为不同的格式提供了针对特定数据类型的编解码接口，其中DER类型编解码与BER类型编解码使用同一接口，通过AsnCtx中的method字段区分。

API命名遵照AsnBerEncodexx或AsnBerDecodexx（xx表示数据类型），返回值均为void，接口参数描述如下，下文不再赘述。

- desc：描述符结构体（输入）。
- stru：用户结构体（在编码接口中为输入，在解码接口中为输出）。
- ctx：上下文结构体（输入/输出）。

同时，KSL_ASN1提供了统一的编解码接口AsnEncode与AsnDecode，接口内部通过ctx.method判断编码模式，具体接口定义如下：

```
/**
* @ingroup hiasn1
* @brief Hiasn1编码接口
* @attention 用户结构体stru的内存结构合法性（包括结构体内指针所指向的内存空间）由用户保证
* @attention 描述符desc为只读数据结构，用户须保证不通过任何方式修改其内部成员的值，否则将导致不可预测的运行时错误
* @attention 编解码之前必须调用初始化函数AsnInit
* @param desc [IN] 描述符结构体
* @param stru [IN] 用户结构体
* @param ctx  [IN/OUT] 上下文结构体
* @retval ≥0 编码成功，返回已编码数据长度（单位：PER为比特，其他为字节）
* @retval <0 编码失败，错误码为返回值的绝对值
*/
ssize_t
AsnEncode
(const AsnDesc *desc, const void *stru, AsnCtx *ctx);
/**
* @ingroup hiasn1
* @brief Hiasn1解码接口
* @attention 用户结构体stru的内存结构合法性（包括结构体内指针所指向的内存空间）由用户保证
* @attention 描述符desc为只读数据结构，用户须保证不通过任何方式修改其内部成员的值，否则将导致不可预测的运行时错误
* @attention 编解码之前必须调用初始化函数AsnInit
* @param desc [IN] 描述符结构体
* @param stru [OUT] 用户结构体
* @param ctx  [IN/OUT] 上下文结构体
* @retval ≥0 解码成功，返回已解码数据长度（单位：PER为比特，其他为字节）
* @retval <0 解码失败，错误码为返回值的绝对值
*/
ssize_t
AsnDecode
(const AsnDesc *desc, void *stru, AsnCtx *ctx);
```
