【问题标题】:How to parse Object Class from ASN1 grammar to use in pyasn1?如何从 ASN1 语法中解析对象类以在 pyasn1 中使用?
【发布时间】:2017-07-19 19:22:44
【问题描述】:

我需要使用GSM MAP ASN.1,但该规范中有一个Information Object Classes (or here),我不知道如何解析这个语法以在pyasn1 lib中使用。

有什么方法(或解决方法)来解析它吗?

情况如下(取自 3GPP TS 29.002 V12.3.0):

MAP-EXTENSION  ::= CLASS {
    &ExtensionType              OPTIONAL,
    &extensionId    OBJECT IDENTIFIER }
    -- The length of the Object Identifier shall not exceed 16 octets and the
    -- number of components of the Object Identifier shall not exceed 16

-- data types

ExtensionContainer ::= SEQUENCE {
    privateExtensionList    [0]PrivateExtensionList OPTIONAL, 
    pcs-Extensions  [1]PCS-Extensions   OPTIONAL,
    ...}

SLR-ArgExtensionContainer ::= SEQUENCE {
    privateExtensionList    [0]PrivateExtensionList OPTIONAL, 
    slr-Arg-PCS-Extensions  [1]SLR-Arg-PCS-Extensions   OPTIONAL,
    ...}

PrivateExtensionList ::= SEQUENCE SIZE (1..maxNumOfPrivateExtensions) OF
                PrivateExtension

PrivateExtension ::= SEQUENCE {
    extId       MAP-EXTENSION.&extensionId
                ({ExtensionSet}),
    extType     MAP-EXTENSION.&ExtensionType
                ({ExtensionSet}{@extId})    OPTIONAL}

maxNumOfPrivateExtensions  INTEGER ::= 10

ExtensionSet        MAP-EXTENSION ::=
        {...
         -- ExtensionSet is the set of all defined private extensions
    }   
    -- Unsupported private extensions shall be discarded if received.

PCS-Extensions ::= SEQUENCE {
    ...}

SLR-Arg-PCS-Extensions ::= SEQUENCE {
    ...,
    na-ESRK-Request [0] NULL        OPTIONAL }

【问题讨论】:

    标签: python python-2.7 asn.1 pyasn1


    【解决方案1】:

    到目前为止,pyasn1 仅实现 X.208,而不是 X.68*。这意味着尚不直接支持较新的 ASN.1 构造(例如信息对象类)。

    好消息是标准中内置的 X.68* 和 X.208 之间存在一定程度的向后兼容性。根据您的 ASN.1 规范中使用的 X.68* 功能,您可以 downgrade 您的 ASN.1 定义从 X.68* 到 X.208,而不会失去与完全-连接另一端的成熟 X.68* 实体。一旦你设法将一个规范转换为另一个规范,你应该能够使用 pyasn1。

    还有一个正在进行中的工作 branch 可以自动执行 ANY DEFINED BY X.208 构造的工作,因此它全部由 pyasn1 自动处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-20
      • 2015-10-11
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多