aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki')
-rw-r--r--scripts/rpki/left_right.py78
-rw-r--r--scripts/rpki/relaxng.py25
2 files changed, 64 insertions, 39 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py
index 9f73b8a9..c270ed3f 100644
--- a/scripts/rpki/left_right.py
+++ b/scripts/rpki/left_right.py
@@ -61,13 +61,17 @@ class data_elt(base_elt, rpki.sql.sql_persistant):
def sql_decode(self, vals):
rpki.sql.sql_persistant.sql_decode(self, vals)
- if "peer_ta" in vals:
- self.peer_ta = rpki.x509.X509(DER=vals["peer_ta"])
+ if "cms_ta" in vals:
+ self.cms_ta = rpki.x509.X509(DER=vals["cms_ta"])
+ if "https_ta" in vals:
+ self.https_ta = rpki.x509.X509(DER=vals["https_ta"])
def sql_encode(self):
d = rpki.sql.sql_persistant.sql_encode(self)
- if "peer_id" in d:
- d["peer_ta"] = self.peer_ta.get_DER()
+ if "cms_ta" in d:
+ d["cms_ta"] = self.cms_ta.get_DER()
+ if "https_ta" in d:
+ d["https_ta"] = self.https_ta.get_DER()
return d
def make_reply(self, r_pdu=None):
@@ -303,36 +307,41 @@ class parent_elt(data_elt):
element_name = "parent"
attributes = ("action", "type", "self_id", "parent_id", "bsc_id", "repository_id", "peer_contact_uri", "sia_base")
- elements = ("peer_ta",)
+ elements = ("cms_ta", "https_ta")
booleans = ("rekey", "reissue", "revoke")
- sql_template = rpki.sql.template("parent", "parent_id", "self_id", "bsc_id", "repository_id", "peer_ta", "peer_contact_uri", "sia_base")
+ sql_template = rpki.sql.template("parent", "parent_id", "self_id", "bsc_id", "repository_id", "cms_ta", "https_ta", "peer_contact_uri", "sia_base")
- peer_ta = None
+ cms_ta = None
+ https_ta = None
def serve_post_save_hook(self, q_pdu, r_pdu):
if self.rekey or self.reissue or self.revoke:
raise NotImplementedError
def startElement(self, stack, name, attrs):
- """Handle <bsc/> element."""
- if name != "peer_ta":
+ """Handle <parent/> element."""
+ if name not in ("cms_ta", "https_ta"):
assert name == "parent", "Unexpected name %s, stack %s" % (name, stack)
self.read_attrs(attrs)
def endElement(self, stack, name, text):
- """Handle <bsc/> element."""
- if name == "peer_ta":
- self.peer_ta = rpki.x509.X509(Base64=text)
+ """Handle <parent/> element."""
+ if name == "cms_ta":
+ self.cms_ta = rpki.x509.X509(Base64=text)
+ elif name == "https_ta":
+ self.https_ta = rpki.x509.X509(Base64=text)
else:
assert name == "parent", "Unexpected name %s, stack %s" % (name, stack)
stack.pop()
def toXML(self):
- """Generate <bsc/> element."""
+ """Generate <parent/> element."""
elt = self.make_elt()
- if self.peer_ta and not self.peer_ta.empty():
- self.make_b64elt(elt, "peer_ta", self.peer_ta.get_DER())
+ if self.cms_ta and not self.cms_ta.empty():
+ self.make_b64elt(elt, "cms_ta", self.cms_ta.get_DER())
+ if self.https_ta and not self.https_ta.empty():
+ self.make_b64elt(elt, "https_ta", self.https_ta.get_DER())
return elt
def query_up_down(self, gctx, q_pdu):
@@ -375,12 +384,12 @@ class child_elt(data_elt):
element_name = "child"
attributes = ("action", "type", "self_id", "child_id", "bsc_id")
- elements = ("peer_ta",)
+ elements = ("cms_ta",)
booleans = ("reissue", )
- sql_template = rpki.sql.template("child", "child_id", "self_id", "bsc_id", "peer_ta")
+ sql_template = rpki.sql.template("child", "child_id", "self_id", "bsc_id", "cms_ta")
- peer_ta = None
+ cms_ta = None
def serve_post_save_hook(self, q_pdu, r_pdu):
if self.reissue:
@@ -388,14 +397,14 @@ class child_elt(data_elt):
def startElement(self, stack, name, attrs):
"""Handle <child/> element."""
- if name != "peer_ta":
+ if name != "cms_ta":
assert name == "child", "Unexpected name %s, stack %s" % (name, stack)
self.read_attrs(attrs)
def endElement(self, stack, name, text):
"""Handle <child/> element."""
- if name == "peer_ta":
- self.peer_ta = rpki.x509.X509(Base64=text)
+ if name == "cms_ta":
+ self.cms_ta = rpki.x509.X509(Base64=text)
else:
assert name == "child", "Unexpected name %s, stack %s" % (name, stack)
stack.pop()
@@ -403,8 +412,8 @@ class child_elt(data_elt):
def toXML(self):
"""Generate <child/> element."""
elt = self.make_elt()
- if self.peer_ta:
- self.make_b64elt(elt, "peer_ta", self.peer_ta.get_DER())
+ if self.cms_ta:
+ self.make_b64elt(elt, "cms_ta", self.cms_ta.get_DER())
return elt
def serve_up_down(self, gctx, query):
@@ -412,7 +421,7 @@ class child_elt(data_elt):
bsc = bsc_elt.sql_fetch(gctx.db, gctx.cur, self.bsc_id)
if bsc is None:
raise rpki.exceptions.NotFound, "Could not find BSC %s" % self.bsc_id
- q_elt = rpki.cms.xml_decode(query, self.peer_ta)
+ q_elt = rpki.cms.xml_decode(query, self.cms_ta)
rpki.relaxng.up_down.assertValid(q_elt)
q_msg = rpki.up_down.sax_handler.saxify(q_elt)
if q_msg.sender != str(self.child_id):
@@ -427,22 +436,25 @@ class repository_elt(data_elt):
element_name = "repository"
attributes = ("action", "type", "self_id", "repository_id", "bsc_id", "peer_contact_uri")
- elements = ("peer_ta",)
+ elements = ("cms_ta", "https_ta")
- sql_template = rpki.sql.template("repository", "repository_id", "self_id", "bsc_id", "peer_ta", "peer_contact_uri")
+ sql_template = rpki.sql.template("repository", "repository_id", "self_id", "bsc_id", "cms_ta", "peer_contact_uri")
- peer_ta = None
+ cms_ta = None
+ https_ta = None
def startElement(self, stack, name, attrs):
"""Handle <repository/> element."""
- if name != "peer_ta":
+ if name not in ("cms_ta", "https_ta"):
assert name == "repository", "Unexpected name %s, stack %s" % (name, stack)
self.read_attrs(attrs)
def endElement(self, stack, name, text):
"""Handle <repository/> element."""
- if name == "peer_ta":
- self.peer_ta = rpki.x509.X509(Base64=text)
+ if name == "cms_ta":
+ self.cms_ta = rpki.x509.X509(Base64=text)
+ elif name == "https_ta":
+ self.https_ta = rpki.x509.X509(Base64=text)
else:
assert name == "repository", "Unexpected name %s, stack %s" % (name, stack)
stack.pop()
@@ -450,8 +462,10 @@ class repository_elt(data_elt):
def toXML(self):
"""Generate <repository/> element."""
elt = self.make_elt()
- if self.peer_ta:
- self.make_b64elt(elt, "peer_ta", self.peer_ta.get_DER())
+ if self.cms_ta:
+ self.make_b64elt(elt, "cms_ta", self.cms_ta.get_DER())
+ if self.https_ta:
+ self.make_b64elt(elt, "https_ta", self.https_ta.get_DER())
return elt
class route_origin_elt(data_elt):
diff --git a/scripts/rpki/relaxng.py b/scripts/rpki/relaxng.py
index 8a5817d0..aacae01a 100644
--- a/scripts/rpki/relaxng.py
+++ b/scripts/rpki/relaxng.py
@@ -4,7 +4,7 @@ import lxml.etree
left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
<!--
- $Id: left-right-schema.rng 1067 2007-10-01 20:22:57Z sra $
+ $Id: left-right-schema.rnc 1067 2007-10-01 20:22:57Z sra $
RelaxNG (Compact Syntax) Schema for RPKI left-right protocol.
@@ -124,9 +124,14 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<param name="maxLength">512000</param>
</data>
</define>
- <!-- How we wrap peer_ta fields (separate element or inline?) -->
- <define name="peer_ta">
- <element name="peer_ta">
+ <!-- How we wrap trust anchor elements -->
+ <define name="cms_ta">
+ <element name="cms_ta">
+ <ref name="base64"/>
+ </element>
+ </define>
+ <define name="https_ta">
+ <element name="https_ta">
<ref name="base64"/>
</element>
</define>
@@ -433,7 +438,10 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</attribute>
</optional>
<optional>
- <ref name="peer_ta"/>
+ <ref name="cms_ta"/>
+ </optional>
+ <optional>
+ <ref name="https_ta"/>
</optional>
</define>
<define name="parent_elt" combine="choice">
@@ -532,7 +540,7 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</attribute>
</optional>
<optional>
- <ref name="peer_ta"/>
+ <ref name="cms_ta"/>
</optional>
</define>
<define name="child_elt" combine="choice">
@@ -631,7 +639,10 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</attribute>
</optional>
<optional>
- <ref name="peer_ta"/>
+ <ref name="cms_ta"/>
+ </optional>
+ <optional>
+ <ref name="https_ta"/>
</optional>
</define>
<define name="repository_elt" combine="choice">