asn1ate icon indicating copy to clipboard operation
asn1ate copied to clipboard

asn1ate generates incorrect code for DefaultedNamedType

Open russhousley opened this issue 5 years ago • 0 comments

RFC 4108 includes this syntax:

FirmwarePackageLoadReceipt ::= SEQUENCE { version FWReceiptVersion DEFAULT v1, hwType OBJECT IDENTIFIER, hwSerialNum OCTET STRING, ... }

FWReceiptVersion ::= INTEGER { v1(1) }

When I used asn1ate to compile the module, it did not handle this part properly.

It produced:

class FWReceiptVersion(univ.Integer): pass

FWReceiptVersion.namedValues = namedval.NamedValues( ('v1', 1) )

FirmwarePackageLoadReceipt.componentType = namedtype.NamedTypes( namedtype.DefaultedNamedType('version', FWReceiptVersion().subtype(value=v1)), namedtype.NamedType('hwType', univ.ObjectIdentifier()), namedtype.NamedType('hwSerialNum', univ.OctetString()), ... )

It should have produced:

class FWReceiptVersion(univ.Integer): pass

FWReceiptVersion.namedValues = namedval.NamedValues( ('v1', 1) )

FirmwarePackageLoadReceipt.componentType = namedtype.NamedTypes( namedtype.DefaultedNamedType('version', FWReceiptVersion().subtype(value='v1')), namedtype.NamedType('hwType', univ.ObjectIdentifier()), namedtype.NamedType('hwSerialNum', univ.OctetString()), .... )

russhousley avatar Apr 22 '19 18:04 russhousley