ASN.1 Tools for C
OSS®ASN.1 Tools for C是一个完整的开发工具包,用于使用ASN.1快速构建应用程序。 该产品具有功能强大的ASN.1:2015功能编译器,具有ASN.1 BER,CER,DER,PER,OER,XER,CXER和E-XER编码器/解码器引擎的运行时库, 并加快你的发展。 OSS ASN.1 Tools for C完全支持4G(LTE:RRC,S1和X2协议)。
编译器采用ASN.1规范作为输入,并生成C语言数据结构加上用于编码和解码的控制表。 OSS编译器提供广泛的诊断功能,以最大限度地减少开发时间和工作量。
一组运行库提供ASN.1编码和解码功能以及对应用消息操作的有价值的辅助功能。 OSS运行时库已移植到500+个平台,包括许多嵌入式平台。
支持JSON ER允许将ASN.1数据序列化为流行的JSON格式,并在JSON消息和ASN.1二进制消息之间进行转换。
支持OER允许使用ASN.1二进制消息,其可以比BER和PER消息明显更快地编码/解码,同时比PER消息略微紧凑。
支持E-XER允许生成XML与XML模式工具的输出兼容。
如果你需要高速编码/解码和尽可能小的内存占用,不要再看了。 简单地说,OSS ASN.1 Tools for C是您将找到的最优化的ASN.1工具。
ASN.1 Tools for C 的功能
•编码器和解码器的无与伦比的速度
•保证向后兼容性
•ASN.1 Studio,一个用于ASN.1规范编辑和消息分析的直观IDE
•大(1024位)INTEGER(用于加密应用程序)
•无限值大小
•反映ASN.1语义的类型表示(4字节UniversalStrings,时间类)
•可扩展类型的编码(未知扩展)
•通过自动解码的可选自定义提高性能
•自动解码任何种类的约束
•没有实施限制; 从不重写您的ASN.1以适应编码限制
•延迟任何单个字段或类型的解码
•文件和套接字支持
•级联PDU支持
•内容约束(完全支持)
•为每个PDU生成XML样式表或DTD
ASN.1 / C编译器
ASN.1编译器是一个独立的程序,它接受一个或多个输入文件,其中每个输入文件包含一个或多个ASN.1模块。 编译器验证规范是否有效,并生成:
•诊断消息和可选的输出ASN.1列表
•易于使用的C语言数据结构包含在应用程序中
•由空间优化或精益编码器/解码器使用的控制表
•时间优化的编码器/解码器。
(精益编码器解码器在单独的包中提供)
交叉编译由用于C的ASN.1工具支持。交叉编译使开发人员能够生成可在与编译器运行的操作系统不同的操作系统上使用的文件。 通过交叉编译能力最大化您的投资。 了解有关交叉编译的详细信息。
编码器/解码器
OSS编码器/解码器提供了许多其他功能,ossEncode()和ossDecode()函数。 ossEncode()函数将编译器生成的C数据结构中的应用程序放置的数据转换为根据BER,CER,PER,OER,DER,XER,CXER或E-XER编码的字节串。
另一个函数ossDecode()采用根据BER,CER,PER,OER,DER,XER,CXER或E-XER编码的字节串,并执行编码器的反向操作,结构,你可以轻松地操纵。
TLV打印实用程序
此实用程序(包括在C中的ASN.1工具)从输入文件以ASCII或二进制格式进行BER或DER编码,并将其以三种不同类型长度值(TLV)格式之一写入输出文件。
空间优化的编码器/解码器(SOED)是这样命名的,因为它的重点是最小化使用存储器,特别是当抽象语法大或复杂时。编码器和解码器都具有简单而灵活的存储器管理接口以及丰富的跟踪,误差捕获,诊断和恢复能力。
时间优化的编码器/解码器(TOED)具有与空间优化的编码器/解码器相同的程序调用接口,并且执行相同的功能(除了它不具有任何跟踪能力),但是其重点在于最小化CPU利用率。
OSS运行时库已移植到500多个平台,包括许多嵌入式平台。
更多功能
运行时功能,支持PDU复制,比较,打印等,使您的应用程序开发过程更容易。
解释ASN.1 API
在ASN.1 C工具中免费提供的解释性ASN.1 API(IAAPI)可以与常规ASN.1 / C编译器结合使用(当ASN.1模式在当时被编译时当开发应用程序时),或者使用OSS的编译和运行库(CAGL)(当模式在运行时动态编译时)。
IAAPI提供了获得关于编译的ASN.1模式的细节的信息的手段,包括它定义的类型(例如,具有多个组件的记录),类型的字段(例如,整数和字符串)以及与之相关联的约束(例如,小于10的整数)。这个信息允许开发人员编写解析消息内容的代码,当其结构在应用程序开发时是未知的时,这是特别有用的。同样,开发人员可以编写代码来创建字段,一个新的消息,只要它的格式遵守编译的模式。
IAAPI支持ASN.1 BER,CER,DER,PER,OER,XER,CXER和E-XER
标准符合性
这个强大的软件完全符合下面列出的ASN.1标准:
•ITU-T X.696(ISO / IEC 8825-7) - 八位字节编码规则(OER)基本协议
________________________________________
•ITU-T X.680(ISO / IEC 8824-1) - 抽象语法记法一(ASN.1):基本符号规范
________________________________________
•ITU-T X.681(ISO / IEC 8824-2) - 抽象语法记法一(ASN.1):信息对象规范
________________________________________
•ITU-T X.682(ISO / IEC 8824-3) - 抽象语法记法一(ASN.1):约束规范
________________________________________
•ITU-T X.683(ISO / IEC 8824-4) - 抽象语法符号一(ASN.1):ASN.1规范的参数化
________________________________________
•ITU-T X.690(ISO / IEC 8825-1) - ASN.1编码规则:基本编码规则(BER),规范编码规则(CER)和区分编码规则(DER)
________________________________________
•ITU-T X.691(ISO / IEC 8825-2) - ASN.1编码规则:压缩编码规则(PER)
________________________________________
•ITU-T X.692(ISO / IEC 8825-3) - ASN.1编码规则:编码控制符号(ECN)
________________________________________
•ITU-T X.693(ISO / IEC 8825-4) - ASN.1编码规则:XML编码规则(XER)规范。这包括规范XML编码规则(CXER)规范和扩展XML编码规则(E-XER)。
ASN.1 C - 运行时选项的工具
多年来,OSS Nokalva的客户对各种主流和嵌入式平台的代码大小,编码/解码速度和诊断能力有许多不同的要求。为了满足客户的各种需求,OSS Nokalva提供了用于C运行时库的ASN.1工具三种版本。
运行时库的所有三种风格执行相同的功能并具有相同的API,包括用于编码/解码ASN.1消息的功能,用于复制,比较,打印和释放未编码/解码消息的功能,简单但灵活的存储器管理接口,以及许多其他有用的功能。
您可以从使用ASN.1 / C运行时的一种风格更改为使用另一种风格,而不会影响您的应用程序代码。有关如何在各种运行时风格之间切换的详细说明,请参见“ASN.1 / C运行时API”手册。
SOED
空间优化编码器/解码器(SOED)是这样命名的,因为它强调最小化存储器使用(即,小代码大小),特别是当ASN.1规范大或复杂时。 SOED是开发过程中使用的常用选择。它提供了丰富的跟踪,错误捕获,诊断和恢复功能,我们最灵活的内存管理器,以及与ASN.1规范交互工作的能力(例如,当您需要阅读有关约束的信息时在运行时特定的ASN.1类型)。
TOED
时间优化的编码器/解码器(TOED)是部署的流行选择,因为它强调最小化CPU利用率。 我们有意地最小化跟踪能力,并使用代码驱动而不是表驱动设计来实现闪电速度。
LED(单独包装)
精简编码器/解码器(LED)经过优化,可提供比SOED更小的代码尺寸,而且具有更快的编码/解码性能。 它故意没有丰富的跟踪和诊断能力。 它通常是使用大型ASN.1规范的最佳选择,特别是当您的软件在具有显着内存限制的系统上运行时。
哪个ASN.1 / C运行时适合我?
根据其性能(表示为代码大小和编码速度)和诊断功能,使用下表选择最适合您需要的ASN.1 / C运行时。
SOED |
TOED |
LED |
|
编码/解码速度 |
快 |
最快 |
更快 |
代码大小(1) |
小 |
中档(2) |
Small(2) |
诊断能力 |
丰富 |
受限 |
受限 |
理想的使用期间 |
开发和配置 |
配置 |
配置 |
最适合 |
|
|
|
运行时性能比较
下面的图表描述了基于几个标准ASN.1规范的运行时性能结果,以帮助您了解每个ASN.1 / C运行时风格的比较性能(编码/解码时所花费的代码大小和时间)。
如果下面找不到您的ASN.1规格,您可以根据规格的大小和/或使用的编码规则来近似SOED / TOED / LED的相对性能。
性能比较方法
所有ASN.1规范的编码/解码时间和可执行大小相对于最小值(1x)给出。 针对若干不同消息对编码/解码时间进行平均,并且基于消息的大小进行归一化。 对于这两个图,使用指数标度。 较小的条形反映更好的性能。
相同的通用编码/解码应用程序用于所有测量。 比较应用对象代码的大小,其是从C编译和链接由ASN.1编译器生成的源和控制表(如果适用)以及应用代码和对应的运行时库获得的。
Feature | ASN.1/ C |
ASN.1/ C++ |
ASN.1/ C# |
ASN.1/ Java |
支持OER |
||||
速度。 不要沉迷于蜗牛节奏的ASN.1工具。 |
Fastest | Faster | Fast | Fast |
支持带调试和跟踪功能的编码器/解码器(SOED)。 |
||||
支持针对小内存占用(LED)设计的解释性编码器/解码器。 |
||||
OSS的工具可以满足您的代码大小要求,无论使用ASN.1指定的协议。 |
||||
在几行代码中对文件或套接字进行编码 |
||||
质量跟踪和精确错误消息 |
||||
可扩展性 |
||||
继电器安全模式 |
||||
参数化 |
||||
比较和复制值 |
||||
约束检查 |
||||
所有编码规则的大值 |
||||
轻松动态更改运行时选项 |
||||
访问ASN.1而无需预先知道数据 |
||||
值记法格式I / O |
||||
嵌套限制 |
||||
支持J2ME CLDC 1.1(连接受限设备配置) |