diff options
author | Rob Austein <sra@hactrn.net> | 2007-10-10 02:57:09 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-10-10 02:57:09 +0000 |
commit | 6663bd4eb5cb9f2d2634938a74947c5a99a9d0f5 (patch) | |
tree | 370a0cf98f056c6dbc5b53eaaf752a9d5d9571a9 /scripts/rpki/manifest.py | |
parent | 9776b23c84ed47da1ea749b8df82332beb8b0d33 (diff) |
Too much fun with ASN.1
svn path=/scripts/rpki/manifest.py; revision=1149
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, |