diff options
Diffstat (limited to 'scripts/rpki/manifest.py')
-rw-r--r-- | scripts/rpki/manifest.py | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/scripts/rpki/manifest.py b/scripts/rpki/manifest.py index 51755732..65ffd399 100644 --- a/scripts/rpki/manifest.py +++ b/scripts/rpki/manifest.py @@ -22,14 +22,47 @@ class FilesAndHashes(SequenceOf): class Manifest(Sequence): def __init__(self, optional=0, default=''): - self.version = Integer(0, "AgEA") - #self.version = Integer() + + # I'm having trouble decoding the ASN.1 as currently specified. + # I've asked about this on the mailing list, but I see three + # options: + # + # 1) What the spec currently says, which doesn't quite work. + # + # 2) Get rid of the default on the version field, which might + # make sense as it doesn't waste a lot of space. + # + # 3) Explictly tag the version field, which seems to be the usual + # ASN.1 thing to do in these situations. + # + # Until the mailing list settles this, I've included code for all + # three options here, using the numbers above. + # + # Clean all this up once the mailing list settles it. + + which_option = 1 + + if which_option == 1: + self.version = Integer(0, "AgEA") + + if which_option in (2, 3): + self.version = Integer() + + if which_option == 3: + self.explicitVersion = Explicit(CLASS_CONTEXT, FORM_CONSTRUCTED, 0, self.version, 0, 'oAMCAQA=') + self.manifestNumber = Integer() self.thisUpdate = GeneralizedTime() self.nextUpdate = GeneralizedTime() self.fileHashAlg = Oid() self.fileList = FilesAndHashes() - contents = [ self.version, + + if which_option in (1, 2): + contents = [ self.version ] + else: + contents = [ self.explicitVersion ] + + contents += [ self.manifestNumber, self.thisUpdate, self.nextUpdate, |