如何从ASN1语法中解析对象类以在pyasn1中使用?

2024-09-24 00:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

以下是案例(取自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 }

Tags: ofthe方法mapobjectextensionargextensions
1条回答
网友
1楼 · 发布于 2024-09-24 00:26:45

到目前为止,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 BYX.208结构的工作自动化,因此它都由pyasn1自动处理。在

相关问题 更多 >