[Python ASN1]:GeneralizedTime pyasn1实现

时间:2016-09-05 18:53:15

标签: pyasn1

这是我的asn1语法表示: -

MiepPullWtdr ::= [0] SEQUENCE
{
    timeStamp                   [8]   GeneralizedTime
}

我需要帮助使用pyasn1实现相同的功能。

这是我的代码段: -

from pyasn1.type import univ, namedtype, tag, char, namedval, useful

class MiepPullWtdr(univ.Sequence):
    componentType = namedtype.NamedTypes(namedtype.NamedType('timeStamp', useful.GeneralizedTime().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))

)

miepPullWtdr = MiepPullWtdr()
miepPullWtdr.setComponentByName('timeStamp', '201103081200Z')
print(miepPullWtdr.prettyPrint())

我也试过了,

componentType  = namedtype.NamedTypes(namedtype.NamedType('timeStamp',useful.GeneralizedTime().tagSet(tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))

两者都不起作用并且给出了一个奇怪的错误重新编写语法错误: -

miepPullWtdr = MiepPullWtdr()
           ^
SyntaxError: invalid syntax

我检查了逗号和括号。一切似乎都是正确的。

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:0)

除了componentType固定的悬空括号外,这是您的代码。适合我:

from pyasn1.type import univ, namedtype, tag, namedval, useful

class MiepPullWtdr(univ.Sequence):
    componentType = namedtype.NamedTypes(
        namedtype.NamedType('timeStamp', useful.GeneralizedTime().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))
    )

miepPullWtdr = MiepPullWtdr()
miepPullWtdr.setComponentByName('timeStamp', '201103081200Z')

print(miepPullWtdr.prettyPrint())