aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--myrpki/myirbe.py9
-rw-r--r--myrpki/myrpki.py37
-rw-r--r--myrpki/schema.py5
-rw-r--r--myrpki/schema.rnc1
-rw-r--r--myrpki/schema.rng5
-rw-r--r--myrpki/yamltest.py18
6 files changed, 60 insertions, 15 deletions
diff --git a/myrpki/myirbe.py b/myrpki/myirbe.py
index a38edb67..d3b81407 100644
--- a/myrpki/myirbe.py
+++ b/myrpki/myirbe.py
@@ -410,7 +410,9 @@ for xmlfile in xmlfiles:
else:
pubd_base_uri = rsync_base + my_handle + "/" + handle + "/"
- if isinstance(client_pdu, rpki.publication.report_error_elt) or client_pdu.base_uri != pubd_base_uri or client_pdu.bpki_cert != pubd_xcert:
+ if (isinstance(client_pdu, rpki.publication.report_error_elt) or
+ client_pdu.base_uri != pubd_base_uri or
+ client_pdu.bpki_cert != pubd_xcert):
pubd_query.append(rpki.publication.client_elt.make_pdu(
action = "create" if isinstance(client_pdu, rpki.publication.report_error_elt) else "set",
client_handle = handle,
@@ -422,6 +424,7 @@ for xmlfile in xmlfiles:
parent_handle = parent.get("handle")
parent_pdu = parent_pdus.pop(parent_handle, None)
parent_uri = parent.get("service_uri")
+ parent_myhandle = parent.get("myhandle")
parent_cms_cert = findbase64(parent, "bpki_cms_certificate")
parent_https_cert = findbase64(parent, "bpki_https_certificate")
@@ -435,7 +438,7 @@ for xmlfile in xmlfiles:
parent_pdu.repository_handle != repository_handle or
parent_pdu.peer_contact_uri != parent_uri or
parent_pdu.sia_base != parent_sia_base or
- parent_pdu.sender_name != handle or
+ parent_pdu.sender_name != parent_myhandle or
parent_pdu.recipient_name != parent_handle or
parent_pdu.bpki_cms_cert != parent_cms_cert or
parent_pdu.bpki_https_cert != parent_https_cert):
@@ -448,7 +451,7 @@ for xmlfile in xmlfiles:
repository_handle = repository_handle,
peer_contact_uri = parent_uri,
sia_base = parent_sia_base,
- sender_name = handle,
+ sender_name = parent_myhandle,
recipient_name = parent_handle,
bpki_cms_cert = parent_cms_cert,
bpki_https_cert = parent_https_cert))
diff --git a/myrpki/myrpki.py b/myrpki/myrpki.py
index 504137aa..b1a41b01 100644
--- a/myrpki/myrpki.py
+++ b/myrpki/myrpki.py
@@ -238,12 +238,20 @@ class parent(object):
self.service_uri = None
self.bpki_cms_certificate = None
self.bpki_https_certificate = None
+ self.myhandle = None
def __repr__(self):
- 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_cms_certificate = None, bpki_https_certificate = None):
+ return "<%s handle %s myhandle %s uri %s cms %s https %s>" % (self.__class__.__name__,
+ self.handle,
+ self.myhandle,
+ self.service_uri,
+ self.bpki_cms_certificate,
+ self.bpki_https_certificate)
+
+ def add(self, service_uri = None,
+ bpki_cms_certificate = None,
+ bpki_https_certificate = None,
+ myhandle = None):
"""
Add service URI or BPKI certificates to this parent object.
"""
@@ -253,6 +261,8 @@ class parent(object):
self.bpki_cms_certificate = bpki_cms_certificate
if bpki_https_certificate is not None:
self.bpki_https_certificate = bpki_https_certificate
+ if myhandle is not None:
+ self.myhandle = myhandle
def xml(self, e):
"""
@@ -260,6 +270,7 @@ class parent(object):
"""
e2 = SubElement(e, "parent",
handle = self.handle,
+ myhandle = self.myhandle,
service_uri = self.service_uri)
if self.bpki_cms_certificate:
PEMElement(e2, "bpki_cms_certificate", self.bpki_cms_certificate)
@@ -272,13 +283,20 @@ class parents(dict):
Database of parent objects.
"""
- def add(self, handle, service_uri = None, bpki_cms_certificate = None, bpki_https_certificate = None):
+ def add(self, handle,
+ service_uri = None,
+ bpki_cms_certificate = None,
+ bpki_https_certificate = None,
+ myhandle = None):
"""
Add service URI or certificates to parent object, creating it if necessary.
"""
if handle not in self:
self[handle] = parent(handle)
- self[handle].add(service_uri = service_uri, bpki_cms_certificate = bpki_cms_certificate, bpki_https_certificate = bpki_https_certificate)
+ self[handle].add(service_uri = service_uri,
+ bpki_cms_certificate = bpki_cms_certificate,
+ bpki_https_certificate = bpki_https_certificate,
+ myhandle = myhandle)
def xml(self, e):
for c in self.itervalues():
@@ -291,9 +309,12 @@ class parents(dict):
"""
self = cls()
# 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):
+ for handle, service_uri, parent_cms_pemfile, parent_https_pemfile, myhandle in csv_open(parents_csv_file):
self.add(handle = handle,
- service_uri = service_uri, bpki_cms_certificate = xcert(parent_cms_pemfile), bpki_https_certificate = xcert(parent_https_pemfile))
+ service_uri = service_uri,
+ bpki_cms_certificate = xcert(parent_cms_pemfile),
+ bpki_https_certificate = xcert(parent_https_pemfile),
+ myhandle = myhandle)
return self
def csv_open(filename):
diff --git a/myrpki/schema.py b/myrpki/schema.py
index bed5e0df..c3fc3306 100644
--- a/myrpki/schema.py
+++ b/myrpki/schema.py
@@ -135,6 +135,11 @@ myrpki = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encodin
</attribute>
</optional>
<optional>
+ <attribute name="myhandle">
+ <ref name="object_handle"/>
+ </attribute>
+ </optional>
+ <optional>
<element name="bpki_cms_certificate">
<ref name="base64"/>
</element>
diff --git a/myrpki/schema.rnc b/myrpki/schema.rnc
index da5f9a12..d19b2023 100644
--- a/myrpki/schema.rnc
+++ b/myrpki/schema.rnc
@@ -45,6 +45,7 @@ child_elt = element child {
parent_elt = element parent {
attribute handle { object_handle },
attribute service_uri { uri }?,
+ attribute myhandle { object_handle }?,
element bpki_cms_certificate { base64 }?,
element bpki_https_certificate { base64 }?
}
diff --git a/myrpki/schema.rng b/myrpki/schema.rng
index 3d5a94b2..5d60592e 100644
--- a/myrpki/schema.rng
+++ b/myrpki/schema.rng
@@ -134,6 +134,11 @@
</attribute>
</optional>
<optional>
+ <attribute name="myhandle">
+ <ref name="object_handle"/>
+ </attribute>
+ </optional>
+ <optional>
<element name="bpki_cms_certificate">
<ref name="base64"/>
</element>
diff --git a/myrpki/yamltest.py b/myrpki/yamltest.py
index f1c34b06..1bc6b57c 100644
--- a/myrpki/yamltest.py
+++ b/myrpki/yamltest.py
@@ -314,17 +314,26 @@ class allocation(object):
"""
Write children CSV file.
"""
- self.csvout(fn).writerows((k.name, k.resources.valid_until, k.path("bpki.myrpki/ca.cer")) for k in self.kids)
+ self.csvout(fn).writerows((k.name, k.resources.valid_until, k.path("bpki.myrpki/ca.cer"))
+ for k in self.kids)
def dump_parents(self, fn):
"""
Write parents CSV file.
"""
if self.is_root():
- self.csvout(fn).writerow(("rootd", "https://localhost:%d/" % self.rootd_port, self.path("bpki.rootd/ca.cer"), self.path("bpki.rootd/ca.cer")))
+ self.csvout(fn).writerow(("rootd",
+ "https://localhost:%d/" % self.rootd_port,
+ self.path("bpki.rootd/ca.cer"),
+ self.path("bpki.rootd/ca.cer"),
+ self.name))
else:
parent_host = self.parent.hosted_by if self.parent.is_hosted() else self.parent
- self.csvout(fn).writerow((self.parent.name, self.up_down_url(), self.parent.path("bpki.myrpki/ca.cer"), parent_host.path("bpki.rpkid/ca.cer")))
+ self.csvout(fn).writerow((self.parent.name,
+ self.up_down_url(),
+ self.parent.path("bpki.myrpki/ca.cer"),
+ parent_host.path("bpki.rpkid/ca.cer"),
+ self.name))
def dump_prefixes(self, fn):
"""
@@ -368,7 +377,8 @@ class allocation(object):
r["rootd", "rpki-base-uri"] = "rsync://localhost:%d/" % self.rsync_port
r["rootd", "rpki-root-cert-uri"] = "rsync://localhost:%d/rootd.cer" % self.rsync_port
r["rpki_x509_extensions", "subjectInfoAccess"] = (
- "1.3.6.1.5.5.7.48.5;URI:rsync://localhost:%d/,1.3.6.1.5.5.7.48.10;URI:rsync://localhost:%d/Bandicoot.mnf" %
+ ("1.3.6.1.5.5.7.48.5;URI:rsync://localhost:%d/,"
+ "1.3.6.1.5.5.7.48.10;URI:rsync://localhost:%d/Bandicoot.mnf") %
(self.rsync_port, self.rsync_port))
if self.is_root():