diff options
-rw-r--r-- | scripts/rpki/manifest.py | 40 | ||||
-rw-r--r-- | scripts/rpki/x509.py | 4 |
2 files changed, 6 insertions, 38 deletions
diff --git a/scripts/rpki/manifest.py b/scripts/rpki/manifest.py index 68175d5a..15b60e7b 100644 --- a/scripts/rpki/manifest.py +++ b/scripts/rpki/manifest.py @@ -3,7 +3,7 @@ """Signed manifests. This is just the ASN.1 encoder, the rest is in rpki.x509 with the rest of the DER_object code. -Note that rpki.x509.SignedManifest inmplements the signed manifest; +Note that rpki.x509.SignedManifest implements the signed manifest; the structures here are just the payload of the CMS eContent field. """ @@ -22,47 +22,15 @@ class FilesAndHashes(SequenceOf): class Manifest(Sequence): def __init__(self, optional=0, default=''): - - # 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 = 3 - - 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.version = Integer() + 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() - if which_option in (1, 2): - contents = [ self.version ] - else: - contents = [ self.explicitVersion ] - - contents += [ + contents = [ self.explicitVersion, self.manifestNumber, self.thisUpdate, self.nextUpdate, diff --git a/scripts/rpki/x509.py b/scripts/rpki/x509.py index 40412d61..a663cdca 100644 --- a/scripts/rpki/x509.py +++ b/scripts/rpki/x509.py @@ -588,7 +588,7 @@ class SignedManifest(DER_object): m.fromString(s) self.content = m - def build(self, serial, nextUpdate, names_and_objs): + def build(self, serial, nextUpdate, names_and_objs, version = 0): """Build the inner content of this manifest.""" filelist = [] for name, obj in names_and_objs: @@ -597,7 +597,7 @@ class SignedManifest(DER_object): filelist.append((name.rpartition("/")[2], d.digest())) filelist.sort(key = lambda x: x[0]) m = rpki.manifest.Manifest() - m.version.set(0) + m.version.set(version) m.manifestNumber.set(serial) m.thisUpdate.set(POW.pkix.time2gen(time.time())) m.nextUpdate.set(POW.pkix.time2gen(nextUpdate)) |