aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/manifest.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-10-10 02:57:09 +0000
committerRob Austein <sra@hactrn.net>2007-10-10 02:57:09 +0000
commit6663bd4eb5cb9f2d2634938a74947c5a99a9d0f5 (patch)
tree370a0cf98f056c6dbc5b53eaaf752a9d5d9571a9 /scripts/rpki/manifest.py
parent9776b23c84ed47da1ea749b8df82332beb8b0d33 (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.py39
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,