2017-07-19 26 views
1

我需要使用GSM MAP ASN.1,但該規範中有一個Information Object Classesor here),我不知道如何解析此語法以在pyasn1庫中使用。如何解析ASN1語法中的對象類以在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 } 

回答

1

作爲該時刻的,pyasn1只實現X.208,不X.68 *。這意味着更新的ASN.1結構(如信息對象類)尚未直接受支持。

好消息是標準內置的X.68 *和X.208之間有一定程度的向後兼容性。根據ASN.1規範中使用的X.68 *功能,您可以將您的ASN.1定義從X.68 *定義到X.208,而不會丟失與完整X的線路層協議兼容性.68 *實體位於連接的另一端。一旦你設法將一個spec轉換成另一個,你應該可以使用pyasn1。

還有一個正在進行中的工作branch,它使ANY DEFINED BY X.208結構的工作自動化,因此它全部由pyasn1自動處理。