c语言编译器der,ASN.1 C编译器概述

ASN.1 C编译器概述

ASN.1的C编译器可以自动地将ASN.1规范转换成C数据结构,加上用于编码和解码消息的元数据(使用的编码规则BER,CER,DER,PER)。开发人员可以很容易地将这些代码整合到他们的应用程序中。

此外,C运行时库的ASN.1也是ASN.1编译器软件包的一部分。ASN.1 C运行库提供一套底层的编解码基本的ASN.1类型(布尔,整数等)和丰富的实用功能以操纵应用程序消息的函数集合。 ASN.1 C运行库是ANSI C兼容的,因此可以移植到广泛的平台和嵌入式系统的大型机处理器上运行。

ASN.1 C编译器功能特点

ASN.1类型和C的结构之间的映射是相当简单,直观,易于使用。

ASN.1 C编译器总是生成尽可能的原始类型,如减少您的时间和努力去熟悉所生成的代码。

最小的生成代码的规模,更高的代码重用率。

ASN.1 C编译器生成ASN.1类型,如尽量减少生成的代码只有C的数据结构和元数据,从而导致更高的代码重用率。

内存消耗低,更适合嵌入式系统。

由于生成较少的代码,和独特的元数据设计,使得最终占用内存最少。

高速编码/解码与多线程的支持。

作为一个轻量级库,ASN.1 C运行时库的ASN.1已作出了一些假设,从而大大提高了编码/解码的速度。当然,这些假设也构成一定的局限性。

完全支持相关BER,CER,DER,PER编码规则,包含了丰富的操作消息的实用功能。

已知限制

ASN.1开发工具限制

由于ASN.1 C编译扩展了ASN.1开发工具,它具有ASN.1开发工具的所有限制。

Tag

为了编解码优化目的,长整型被用来保存标签tag,因此能支持表示的最大tag值是2097151(221)-1,但这几乎对所有的ASN.1规范都不是问题。

Length

ENUMERATED类型的枚举个数,BIT STRING类型的比特长度,OCTET STRING类型的字节长度,SEQUENCE(OF)/SET(OF)类型或CHOICE类型的成员类型个数都不能超过整型unsigned int的最大值(通常是65536),这通常对所有的ASN.1规范也不是问题。

INTEGER

INTEGER类型的值必须在C语言的长整型long long(或__ int64_t于Windows)的范围之内,该范围取决于平台和编译器。该限制也就是说,任意大的整数不支持。 现在支持长达128比特的长整数,然而,可以通过配置支持更大的整数。

REAL

REAL类型的值总是作为二进制形式编码和解码,十进制的编码不能正确被解码。REAL类型的值精度不能超过C语言的double。该限制也就是说,任意精度的浮点数不支持。

SET OF

SET OF类型的值的规范编码中,动态排序不支持,因为它十分耗费内存和CPU。因此,推荐在使用SET OF类型的地方一律改用SEQUENCE OF类型。

下一步...

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值