如何在 SEQUENCE OF 对象中设置默认值



我开始使用pyasn1库,我有一个关于如何在SEQUENCE OF对象中设置默认值的问题。我的 ASN1 结构如下:

Asn1Def DEFINITIONS AUTOMATIC TAGS ::= 
BEGIN
CasinoPlayer ::= SEQUENCE       
{                                                     
name      UTF8String (SIZE(1..16)),
luckyNumbers SEQUENCE  (SIZE(3)) OF INTEGER DEFAULT {7,7,7}
}                                                     
END

我了解如何使用namedtype.DefaultedNamedType对象并使用子类型在CasinoPlayer序列中创建 DEFAULT 字段SIZE但是我应该如何初始化默认值 {7,7,7}?

谢谢

我认为它应该看起来像这样:

class CasinoPlayer(Sequence):
componentType = NamedTypes(
NamedType(
'name',
UTF8String(
ConstraintsIntersection(
ValueSizeConstraint(1, 16)
)
)
),
DefaultedNamedType(
'luckyNumbers',
SequenceOf(
componentType=Integer(),
sizeSpec=ConstraintsIntersection(
ValueSizeConstraint(3, 3)
)
).setComponentByPosition(0, 7)
.setComponentByPosition(1, 7)
.setComponentByPosition(2, 7)
)
)

另外,您可能需要将标签分配给每个 ASN.1 类型(正如自动标签子句所暗示的那样(。

更新:

实际上,这应该有效,但事实并非如此!幸运的是,有一个修复程序应该使默认SequenceOf传播到Sequence字段,只要它是DefaultedNamedType

最新更新