1

我开始使用 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

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

谢谢

4

1 回答 1

0

我想它应该是这样的:

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 类型(正如AUTOMATIC TAGS子句所暗示的那样)。

更新:

实际上,这应该有效,但事实并非如此!幸运的是,只要是一个.SequenceOfSequenceDefaultedNamedType

于 2018-10-17T08:58:01.817 回答