0

我正在尝试在 Java 中实现一些协议。为了做到这一点,我使用了 BinaryNotes 编译器和他们的 api 库,但我坚持使用这个例子。这是我的 asn1 输入文件:

Test
DEFINITIONS ::= 
BEGIN
    OPERATION ::= CLASS
    {
        &Argument   OPTIONAL,
        &opCode Code UNIQUE OPTIONAL
    }
    WITH SYNTAX
    {
        [ARGUMENT &Argument]
        [CODE &opCode]
    }

    OperationA OPERATION ::=
    {
        ARGUMENT Arg
        CODE global:{org(0) operA(1) ver(1) id(1)}
    }

    Code ::= CHOICE
    {
        local INTEGER,
        global OBJECT IDENTIFIER
    }

    Arg ::= SEQUENCE
    {
        operationID INTEGER,
        value   ArgValue
    }

    ArgValue ::= OCTET STRING (SIZE(1..25))
END

这是 bn 编译器的输出:

  1. 编译文件:test1.asn
  2. 第 4:9 行:意外标记:操作
  3. 第 6:17 行:意外字符:'&'

我应该如何修改我的输入 asn1 文件以便使用 bn 编译器成功编译它。提前致谢。

4

2 回答 2

1

请注意,不能将 CLASS 更改为 SEQUENCE。这可能会消除旧编译器中的错误消息,但会产生完全不同的含义。

我建议您获取更新的 ASN.1 编译器,该编译器确实支持 2008 版 ASN.1。您可以在http://www.itu.int/ITU-T/asn1/links/index.htm找到 ASN.1 工具列表(一些免费,一些商业)。

保罗

于 2012-01-27T17:47:41.790 回答
0

BinaryNotes 不支持新的 ASN.1 类语法,抱歉!也不支持CODE global:{org(0) operA(1) ver(1) id(1)} 您可以尝试使用基本的 ASN.1,如下所示:

DEFINITIONS ::= 
BEGIN
    OPERATION ::= SEQUENCE
    {
        argument Arg OPTIONAL,
        code Code OPTIONAL
    }


    Code ::= CHOICE
    {
        local INTEGER,
        global OBJECT IDENTIFIER
    }

    Arg ::= SEQUENCE {
    }
于 2012-01-27T13:15:27.920 回答