0

I am a new to Python and PYASN1, how to express below strcture? is there any docuement I can refer to? I search on the internect, there's a little document about the PYASN1

OtherInfo ::= SEQUENCE {
       keyInfo KeySpecificInfo,
       partyAInfo [0] OCTET STRING OPTIONAL,
       suppPubInfo [2] OCTET STRING
     }

KeySpecificInfo ::= SEQUENCE {
    algorithm OBJECT IDENTIFIER,
    counter OCTET STRING SIZE (4..4) }
Ilya Etingof
  • 5,440
  • 1
  • 17
  • 21
sic wang
  • 3
  • 1

1 Answers1

0

Should be something like this, assuming your ASN.1 module declares explicit tagging by default.

Also, the docs.

class KeySpecificInfo(univ.Sequence):
    componentType = namedtype.NamedTypes(
        namedtype.NamedType('algorithm', ObjectIdentifier()),
        namedtype.NamedType(
            'counter', OctetString().subtype(subtypeSpec=ValueSizeConstraint(4, 4)))
    )

class OtherInfo(univ.Sequence):
    componentType = namedtype.NamedTypes(
        namedtype.NamedType('keyInfo', KeySpecificInfo()),
        namedtype.OptionalNamedType('partyAInfo', OctetString().subtype(
            explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)),
        namedtype.NamedType('suppPubInfo', OctetString().subtype(
            explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))
    )
Ilya Etingof
  • 5,440
  • 1
  • 17
  • 21