我需要使用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 }
最佳答案
截至目前,pyasn1 仅实现 X.208,而非 X.68*。这意味着尚不直接支持较新的 ASN.1 构造(例如信息对象类)。
好消息是标准中内置的 X.68* 和 X.208 之间存在一定程度的向后兼容性。根据 ASN.1 规范中使用的 X.68* 功能,您可能能够 downgrade您的 ASN.1 定义从 X.68* 到 X.208,而不会失去与连接另一端成熟的 X.68* 实体的线路级协议(protocol)兼容性。一旦您成功地将一种规范转换为另一种规范,您就应该能够使用 pyasn1。
还有一项正在进行中的工作branch它自动执行 ANY DEFINED BY
X.208 构造的工作,以便全部由 pyasn1 自动处理。
关于python - 如何从 ASN1 语法解析对象类以在 pyasn1 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45199345/