最近在研究MMS的时候接触到了抽象语义记法ASN.1(Abstract Syntax Notation One),于是对它做了一番了解,下面将这几天的学习到的做下记录,以供以后偷懒。
ASN.1是一种 ISO/ITU-T
标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序,也就是说这种记法独立于编程语言,具有平台无关性。关于它的更多的介绍百度文库有很多资源,这里提供一个 ISO/ITU-T
标准关于本部分标准的链接,全英文看起来是吃力了点,但慢慢品读下来往往会有想不到的收获。(),在search栏输入x.680~x.683或x.690可以查看到ASN.1的具体标准及编解码的方法,或者从获得相关文档。
有了ASN.1和相关编码的概念之后,接下来就是如何用编程语言实现ASN.1的编解码了,下面结合开源编译器ASN1C对这部分做详细介绍。
一、下载asn.1 编译器ASN1C
在处下载,此处我选择了“Windows installer: ”,下载后双击安装即可。
本文假设安装于“D:\Program Files\asn1c”。
二、创建asn.1抽象模型并利用ASN1C编译器生成C语言类型文件
1、asn.1文本描述如下
点击(此处)折叠或打开
-
RetangleTest DEFINITIONS ::=BEGIN
-
Rectangle ::= SEQUENCE{
-
height INTEGER, -- Height of the rectangle
-
width INTEGER -- Width of the rectangle
-
}
-
END
保存文件为“D:\Program Files\asn1c\try.asn1"。
2、利用ASN1C工具生成try.asn1的C语言类型文件
假设ASN1C安装在“D:\Program Files\asn1c”路径下,可以按如下步骤生成C语言类型文件:
①打开控制台:"开始-运行-cmd";
②进入到软件目录下:cd “D:\Program Files\asn1c”;
③执行生成指令:输入asn1c -S skeletons -fskeletons-copy -fnative-types try.asn1+回车enter
其中-S -fskeletons-copy -fnative-types参数可以在“D:\Program Files\asn1c\Help\asn1c-usage.pdf”使用手册查到相关说明。
若执行成功,则有如下信息输出到控制台
并可以看到在“D:\Program Files\asn1c”目录下,增加了许多文件,这些文件都是后面要用到的:
三、在VS2010中创建asn.1的编解码demo工程
1、创建win32 console工程asn1_demo
2、将步骤二生成的所有.h和.c文件拷贝到asn1_demo工程文件夹下
3、将.h和.c文件添加到工程中
![](data:image/png;base64,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eGBkd+uSgUvNztbZPS1Ty7sae7eN7N18a8+6X3W+clXb0ssOLRq06r6TVPHsVqg71QaWS0fLVajLJSupY4DESzzjTbvvjgHxeg4+1rO/qWJd94brOlf8pO257x1aNGj3zPOWjzvu51d9Vz1cO8WpOsW6InUpom1DPAFIvMRMahzW3bqks3V2uWV6efeE3m0jy1uGVqxrffKSlrkX7Gj6l6dGHXfFtwaphye4REw/41n2EB+oFk974uU94yWI1T1wd0PXgQXlllnlPff37hhX3nJ794brOlde277s8tbFX2uZe8GemZ/Z/uCZ83/7vku+fL62QqQP6kcyyyWiKqf6Ei81PSc045msg57xJoy9tWPfY+W9k3rfvqe85faeV2/oXHlt+/NXti7+Wsv8i/bMOm/XtLM3j//wzFs+cP65n9BWKClXm1rxLJNbZGPTIfTNT9RLTa110OI1jhrSsWdW787G8tbhPa/e0Ln6Z+3PX9m65Bt/s67pn7dOPO2135846caTP/Gx07QV7OJVpiPtvGcvGLmf4vmJ9jOeah20ePfceWPr1qn7Vvx6+18GvdH8+ddnfmLtlI8un3D64rGnNQ87ZfbQk2be8oFJN548/jennv6hEy11LDpV71T107a0XIXa9xAfqIcvV8YNv+F3Q/7Pjb/44dVXXvrtr37poi98+lNnf+T0D534wRPeoz5Cx5o+YoX2mD7jafdo64fqqJWJV9SDeIQUDopHiAAUjxAB1uPk8Qjxh7h5vP8HoTYxUaccZngAAAAASUVORK5CYII=)
4、创建main.c文件,内容如下
点击(此处)折叠或打开
-
#include <stdio.h>
-
#include <sys/types.h>
-
#include <Rectangle.h>
-
-
char tab[8];
-
/*
-
* This is a custom function which writes the
-
* encoded output into a global test table
-
*/
-
static int decode_callback(const void *buffer, size_t size, void *app_key)
-
{
-
static int i = 0;
-
-
memcpy(&tab[i],buffer,size);
-
-
i += size;
-
}
-
-
-
-
int main()
-
{
-
Rectangle_t *rectangle; /* Type to encode */
-
asn_enc_rval_t ec; /* Encoder return value */
-
-
/* Allocate the Rectangle_t */
-
rectangle = (Rectangle_t*)calloc(1, sizeof(Rectangle_t)); /* not */
-
-
if(!rectangle) {
-
perror("calloc() failed");
-
exit(71); /* better, EX_OSERR */
-
}
-
-
/* Initialize the Rectangle members */
-
rectangle->height = 42; /* any random value */
-
rectangle->width = 23; /* any random value */
-
-
-
-
/* Encode the Rectangle type as BER (DER) */
-
ec = der_encode(&asn_DEF_Rectangle,
-
rectangle, decode_callback, tab);
-
-
if(ec.encoded == -1) {
-
fprintf(stderr,
-
"Could not encode Rectangle (at %s)\n",
-
ec.failed_type ? ec.failed_type->name : "unknown");
-
exit(65); /* better, EX_DATAERR */
-
} else {
-
fprintf(stderr, "Created %s with BER encoded Rectangle\n",
-
"");
-
}
-
-
/* Also print the constructed Rectangle XER encoded (XML) */
-
xer_fprint(stdout, &asn_DEF_Rectangle, rectangle);
-
return 0;
-
}
5、移除converter-sample.c
6、编译,若出现头文件找不到问题,在工程属性的头文件包含路径下指定头文件路径即可。
7、运行,将断点设于最有一句"return 0"处,可看到控制台显示如下,该xml格式的数据是55行执行的结果。
此时,观察全局数组table,可以看到里面的内容即为Rectangle的编码后的十六进制数据为 30 06 02 01 2a 02 01 17。
四、解码
解码的example可查看用户手册“D:\Program Files\asn1c\Help\asn1c-usage.pdf”,和编码example类似,这里不做赘述。
阅读(31412) | 评论(1) | 转发(1) |