接口参数说明

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

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

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

/**
 * @brief 编码接口
 * @attention 先将ctx参数变量清零,再对其buf和method字段赋值
 * @param desc [IN] 描述符结构体
 * @param stru [IN] 用户结构体
 * @param ctx  [IN/OUT] 上下文结构体
 * @return ≥ 0 编码成功,返回已编码数据长度(单位:PER为比特,其他为字节)
 * @return < 0 编码失败,错误码为返回值的绝对值,可在 asn_codec_errors.h 中找到对应的错误信息
 */
ssize_t AsnEncode(const AsnDesc *desc, const void *stru, AsnCtx *ctx);

/**
 * @brief 解码接口
 * @attention 先将ctx参数变量清零,再对其buf和method字段赋值
 * @param desc [IN] 描述符结构体
 * @param stru [OUT] 用户结构体
 * @param ctx  [IN/OUT] 上下文结构体
 * @return ≥ 0 解码成功,返回已解码数据长度(单位:PER为比特,其他为字节)
 * @return < 0 解码失败,错误码为返回值的绝对值,可在 asn_codec_errors.h 中找到对应的错误信息
 */
ssize_t AsnDecode(const AsnDesc *desc, void *stru, AsnCtx *ctx);