From 81cd03a374206c6045fbd7f42d6f0433e2cf17c4 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Thu, 16 Jul 2009 04:32:25 +0000 Subject: Rework paretns.csv etc to support separate HTTPS and CMS certificates (sigh). svn path=/myrpki/Makefile; revision=2625 --- myrpki/Makefile | 1 - myrpki/myirbe.py | 11 ++++++----- myrpki/myrpki.py | 28 +++++++++++++++------------ myrpki/schema.py | 9 +++++++-- myrpki/schema.rnc | 3 ++- myrpki/schema.rng | 9 +++++++-- myrpki/yamltest.py | 56 ++++++++++++++++++++++++++---------------------------- 7 files changed, 65 insertions(+), 52 deletions(-) diff --git a/myrpki/Makefile b/myrpki/Makefile index 4ff9cd35..b83745d8 100644 --- a/myrpki/Makefile +++ b/myrpki/Makefile @@ -1,6 +1,5 @@ # $Id$ -#all:: relatives #all:: myrpki.xml #all:: lint #all:: parse diff --git a/myrpki/myirbe.py b/myrpki/myirbe.py index 076c02b7..af70755a 100644 --- a/myrpki/myirbe.py +++ b/myrpki/myirbe.py @@ -377,7 +377,8 @@ for xmlfile in xmlfiles: parent_handle = parent.get("handle") parent_pdu = parent_pdus.pop(parent_handle, None) parent_uri = parent.get("service_uri") - parent_cert = findbase64(parent, "bpki_certificate") + parent_cms_cert = findbase64(parent, "bpki_cms_certificate") + parent_https_cert = findbase64(parent, "bpki_https_certificate") if need_own_pub_point: parent_sia_base = pubd_base_uri + parent_handle + "/" @@ -391,8 +392,8 @@ for xmlfile in xmlfiles: parent_pdu.sia_base != parent_sia_base or parent_pdu.sender_name != handle or parent_pdu.recipient_name != parent_handle or - parent_pdu.bpki_cms_cert != parent_cert or - parent_pdu.bpki_https_cert != parent_cert): + parent_pdu.bpki_cms_cert != parent_cms_cert or + parent_pdu.bpki_https_cert != parent_https_cert): rpkid_query.append(rpki.left_right.parent_elt.make_pdu( action = "create" if parent_pdu is None else "set", tag = parent_handle, @@ -404,8 +405,8 @@ for xmlfile in xmlfiles: sia_base = parent_sia_base, sender_name = handle, recipient_name = parent_handle, - bpki_cms_cert = parent_cert, - bpki_https_cert = parent_cert)) + bpki_cms_cert = parent_cms_cert, + bpki_https_cert = parent_https_cert)) rpkid_query.extend(rpki.left_right.parent_elt.make_pdu( action = "destroy", self_handle = handle, parent_handle = p) for p in parent_pdus) diff --git a/myrpki/myrpki.py b/myrpki/myrpki.py index 724a4c52..9a661eb4 100644 --- a/myrpki/myrpki.py +++ b/myrpki/myrpki.py @@ -155,29 +155,33 @@ class parent(object): self.bpki_certificate = None def __repr__(self): - return "<%s uri %s cert %s uri %s cert %s>" % (self.__class__.__name__, - self.service_uri, self.bpki_certificate) + return "<%s uri %s cms %s https %s>" % (self.__class__.__name__, self.service_uri, + self.bpki_cms_certificate, self.bpki_https_certificate) - def add(self, service_uri = None, bpki_certificate = None): + def add(self, service_uri = None, bpki_cms_certificate = None, bpki_https_certificate = None): if service_uri is not None: self.service_uri = service_uri - if bpki_certificate is not None: - self.bpki_certificate = bpki_certificate + if bpki_cms_certificate is not None: + self.bpki_cms_certificate = bpki_cms_certificate + if bpki_https_certificate is not None: + self.bpki_https_certificate = bpki_https_certificate def xml(self, e): e2 = SubElement(e, "parent", handle = self.handle, service_uri = self.service_uri) - if self.bpki_certificate: - PEMElement(e2, "bpki_certificate", self.bpki_certificate) + if self.bpki_cms_certificate: + PEMElement(e2, "bpki_cms_certificate", self.bpki_cms_certificate) + if self.bpki_https_certificate: + PEMElement(e2, "bpki_https_certificate", self.bpki_https_certificate) return e2 class parents(dict): - def add(self, handle, service_uri = None, bpki_certificate = None): + def add(self, handle, service_uri = None, bpki_cms_certificate = None, bpki_https_certificate = None): if handle not in self: self[handle] = parent(handle) - self[handle].add(service_uri = service_uri, bpki_certificate = bpki_certificate) + self[handle].add(service_uri = service_uri, bpki_cms_certificate = bpki_cms_certificate, bpki_https_certificate = bpki_https_certificate) def xml(self, e): for c in self.itervalues(): @@ -186,10 +190,10 @@ class parents(dict): @classmethod def from_csv(cls, parents_csv_file, xcert): self = cls() - # parentname service_uri parent_bpki_pemfile - for handle, service_uri, parent_pemfile in csv_open(parents_csv_file): + # parentname service_uri parent_bpki_cms_pemfile parent_bpki_https_pemfile + for handle, service_uri, parent_cms_pemfile, parent_https_pemfile in csv_open(parents_csv_file): self.add(handle = handle, - service_uri = service_uri, bpki_certificate = xcert(parent_pemfile)) + service_uri = service_uri, bpki_cms_certificate = xcert(parent_cms_pemfile), bpki_https_certificate = xcert(parent_https_pemfile)) return self def csv_open(filename, delimiter = "\t", dialect = None): diff --git a/myrpki/schema.py b/myrpki/schema.py index d5078714..38df6d3d 100644 --- a/myrpki/schema.py +++ b/myrpki/schema.py @@ -1,7 +1,7 @@ import lxml.etree myrpki = lxml.etree.RelaxNG(lxml.etree.fromstring('''