aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/left-right-protocol-samples/pdu.053.xml2
-rw-r--r--rpkid/left-right-protocol-samples/pdu.056.xml2
-rw-r--r--rpkid/left-right-protocol-samples/pdu.058.xml2
-rw-r--r--rpkid/left-right-schema.rng170
-rw-r--r--rpkid/rpki/relaxng.py172
-rwxr-xr-xrpkid/xml-parse-test.py52
6 files changed, 213 insertions, 187 deletions
diff --git a/rpkid/left-right-protocol-samples/pdu.053.xml b/rpkid/left-right-protocol-samples/pdu.053.xml
index 64546be7..768a6b86 100644
--- a/rpkid/left-right-protocol-samples/pdu.053.xml
+++ b/rpkid/left-right-protocol-samples/pdu.053.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="US-ASCII"?>
<!--Automatically generated, do not edit.-->
<msg xmlns="http://www.hactrn.net/uris/rpki/left-right-spec/" version="1">
- <route_origin action="set" type="query" self_id="42" route_origin_id="88" suppress_publication="yes" as_number="12345" exact_match="true" ipv4="10.0.0.44/32,10.2.0.6-10.2.0.77" ipv6="2002:a00::/48,2002:a02:6::-2002:a02:4d::"/>
+ <route_origin action="set" type="query" self_id="42" route_origin_id="88" suppress_publication="yes" as_number="12345" exact_match="true" ipv4="10.0.0.44/32" ipv6="2002:a00::/48"/>
</msg>
diff --git a/rpkid/left-right-protocol-samples/pdu.056.xml b/rpkid/left-right-protocol-samples/pdu.056.xml
index 1ad64cce..3a3e4fa2 100644
--- a/rpkid/left-right-protocol-samples/pdu.056.xml
+++ b/rpkid/left-right-protocol-samples/pdu.056.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="US-ASCII"?>
<!--Automatically generated, do not edit.-->
<msg xmlns="http://www.hactrn.net/uris/rpki/left-right-spec/" version="1">
- <route_origin action="get" type="reply" self_id="42" route_origin_id="88" as_number="12345" exact_match="true" ipv4="10.0.0.44/32,10.2.0.6-10.2.0.77" ipv6="2002:a00::/48,2002:a02:6::-2002:a02:4d::"/>
+ <route_origin action="get" type="reply" self_id="42" route_origin_id="88" as_number="12345" exact_match="true" ipv4="10.0.0.44/32" ipv6="2002:a00::/48"/>
</msg>
diff --git a/rpkid/left-right-protocol-samples/pdu.058.xml b/rpkid/left-right-protocol-samples/pdu.058.xml
index d4d72210..7382c12b 100644
--- a/rpkid/left-right-protocol-samples/pdu.058.xml
+++ b/rpkid/left-right-protocol-samples/pdu.058.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="US-ASCII"?>
<!--Automatically generated, do not edit.-->
<msg xmlns="http://www.hactrn.net/uris/rpki/left-right-spec/" version="1">
- <route_origin action="list" type="reply" self_id="42" route_origin_id="88" as_number="12345" ipv4="10.0.0.44/32,10.2.0.6-10.2.0.77" ipv6="2002:a00::/48,2002:a02:6::-2002:a02:4d::"/>
+ <route_origin action="list" type="reply" self_id="42" route_origin_id="88" as_number="12345" ipv4="10.0.0.44/32" ipv6="2002:a00::/48"/>
</msg>
diff --git a/rpkid/left-right-schema.rng b/rpkid/left-right-schema.rng
index 0068ca32..93e98643 100644
--- a/rpkid/left-right-schema.rng
+++ b/rpkid/left-right-schema.rng
@@ -23,7 +23,7 @@
<ref name="parent_elt"/>
<ref name="child_elt"/>
<ref name="repository_elt"/>
- <ref name="ro_elt"/>
+ <ref name="route_origin_elt"/>
<ref name="list_resources_elt"/>
<ref name="report_error_elt"/>
</choice>
@@ -142,10 +142,52 @@
</define>
<!-- Base definition for all fields that are really just SQL primary indices -->
<define name="sql_id">
+ <data type="nonNegativeInteger"/>
+ </define>
+ <!-- URIs -->
+ <define name="uri">
+ <data type="anyURI">
+ <param name="maxLength">4096</param>
+ </data>
+ </define>
+ <!-- Name fields imported from up-down protocol -->
+ <define name="up_down_name">
<data type="token">
<param name="maxLength">1024</param>
</data>
</define>
+ <!-- Resource lists -->
+ <define name="asn_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[\-,/0-9]*</param>
+ </data>
+ </define>
+ <define name="ipv4_address_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[\-,/.0-9]*</param>
+ </data>
+ </define>
+ <define name="ipv6_address_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[\-,/:0-9a-fA-F]*</param>
+ </data>
+ </define>
+ <!-- Prefix resource lists, same as address resource lists not no ranges allowed -->
+ <define name="ipv4_prefix_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[,/.0-9]*</param>
+ </data>
+ </define>
+ <define name="ipv6_prefix_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[,/:0-9a-fA-F]*</param>
+ </data>
+ </define>
<!-- <self/> element -->
<define name="self_bool">
<optional>
@@ -441,44 +483,28 @@
<define name="parent_payload">
<optional>
<attribute name="peer_contact_uri">
- <data type="anyURI">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="uri"/>
</attribute>
</optional>
<optional>
<attribute name="sia_base">
- <data type="anyURI">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="uri"/>
</attribute>
</optional>
<optional>
- <attribute name="bsc_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="bsc_id"/>
</optional>
<optional>
- <attribute name="repository_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="repository_id"/>
</optional>
<optional>
<attribute name="sender_name">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="up_down_name"/>
</attribute>
</optional>
<optional>
<attribute name="recipient_name">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="up_down_name"/>
</attribute>
</optional>
<optional>
@@ -591,11 +617,7 @@
</define>
<define name="child_payload">
<optional>
- <attribute name="bsc_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="bsc_id"/>
</optional>
<optional>
<element name="bpki_cert">
@@ -691,17 +713,11 @@
<define name="repository_payload">
<optional>
<attribute name="peer_contact_uri">
- <data type="anyURI">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="uri"/>
</attribute>
</optional>
<optional>
- <attribute name="bsc_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="bsc_id"/>
</optional>
<optional>
<element name="bpki_cms_cert">
@@ -797,24 +813,22 @@
</element>
</define>
<!-- <route_origin/> element -->
- <define name="ro_id">
+ <define name="route_origin_id">
<attribute name="route_origin_id">
<ref name="sql_id"/>
</attribute>
</define>
- <define name="ro_bool">
+ <define name="route_origin_bool">
<optional>
<attribute name="suppress_publication">
<value>yes</value>
</attribute>
</optional>
</define>
- <define name="ro_payload">
+ <define name="route_origin_payload">
<optional>
<attribute name="as_number">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <data type="positiveInteger"/>
</attribute>
</optional>
<optional>
@@ -824,91 +838,87 @@
</optional>
<optional>
<attribute name="ipv4">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv4_prefix_list"/>
</attribute>
</optional>
<optional>
<attribute name="ipv6">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv6_prefix_list"/>
</attribute>
</optional>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_cq"/>
<ref name="self_id"/>
- <ref name="ro_bool"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_bool"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_cr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_sq"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
- <ref name="ro_bool"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_id"/>
+ <ref name="route_origin_bool"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_sr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_gq"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_gr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_id"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_lq"/>
<ref name="self_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_lr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_id"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_dq"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_dr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
<!-- <list_resources/> element -->
@@ -931,8 +941,8 @@
<ref name="self_id"/>
<ref name="child_id"/>
<attribute name="valid_until">
- <data type="token">
- <param name="maxLength">1024</param>
+ <data type="dateTime">
+ <param name="pattern">.*Z</param>
</data>
</attribute>
<optional>
@@ -944,23 +954,17 @@
</optional>
<optional>
<attribute name="as">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="asn_list"/>
</attribute>
</optional>
<optional>
<attribute name="ipv4">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv4_address_list"/>
</attribute>
</optional>
<optional>
<attribute name="ipv6">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv6_address_list"/>
</attribute>
</optional>
</group>
diff --git a/rpkid/rpki/relaxng.py b/rpkid/rpki/relaxng.py
index 7f928c80..84ed29d1 100644
--- a/rpkid/rpki/relaxng.py
+++ b/rpkid/rpki/relaxng.py
@@ -6,7 +6,7 @@ import lxml.etree
## Parsed RelaxNG left_right schema
left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
<!--
- $Id: left-right-schema.rng 1730 2008-05-01 07:07:28Z sra $
+ $Id: left-right-schema.rnc 1788 2008-05-16 21:48:48Z sra $
RelaxNG (Compact Syntax) Schema for RPKI left-right protocol.
@@ -29,7 +29,7 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<ref name="parent_elt"/>
<ref name="child_elt"/>
<ref name="repository_elt"/>
- <ref name="ro_elt"/>
+ <ref name="route_origin_elt"/>
<ref name="list_resources_elt"/>
<ref name="report_error_elt"/>
</choice>
@@ -148,10 +148,52 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</define>
<!-- Base definition for all fields that are really just SQL primary indices -->
<define name="sql_id">
+ <data type="nonNegativeInteger"/>
+ </define>
+ <!-- URIs -->
+ <define name="uri">
+ <data type="anyURI">
+ <param name="maxLength">4096</param>
+ </data>
+ </define>
+ <!-- Name fields imported from up-down protocol -->
+ <define name="up_down_name">
<data type="token">
<param name="maxLength">1024</param>
</data>
</define>
+ <!-- Resource lists -->
+ <define name="asn_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[\-,/0-9]*</param>
+ </data>
+ </define>
+ <define name="ipv4_address_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[\-,/.0-9]*</param>
+ </data>
+ </define>
+ <define name="ipv6_address_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[\-,/:0-9a-fA-F]*</param>
+ </data>
+ </define>
+ <!-- Prefix resource lists, same as address resource lists not no ranges allowed -->
+ <define name="ipv4_prefix_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[,/.0-9]*</param>
+ </data>
+ </define>
+ <define name="ipv6_prefix_list">
+ <data type="string">
+ <param name="maxLength">512000</param>
+ <param name="pattern">[,/:0-9a-fA-F]*</param>
+ </data>
+ </define>
<!-- <self/> element -->
<define name="self_bool">
<optional>
@@ -447,44 +489,28 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<define name="parent_payload">
<optional>
<attribute name="peer_contact_uri">
- <data type="anyURI">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="uri"/>
</attribute>
</optional>
<optional>
<attribute name="sia_base">
- <data type="anyURI">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="uri"/>
</attribute>
</optional>
<optional>
- <attribute name="bsc_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="bsc_id"/>
</optional>
<optional>
- <attribute name="repository_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="repository_id"/>
</optional>
<optional>
<attribute name="sender_name">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="up_down_name"/>
</attribute>
</optional>
<optional>
<attribute name="recipient_name">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="up_down_name"/>
</attribute>
</optional>
<optional>
@@ -597,11 +623,7 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</define>
<define name="child_payload">
<optional>
- <attribute name="bsc_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="bsc_id"/>
</optional>
<optional>
<element name="bpki_cert">
@@ -697,17 +719,11 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<define name="repository_payload">
<optional>
<attribute name="peer_contact_uri">
- <data type="anyURI">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="uri"/>
</attribute>
</optional>
<optional>
- <attribute name="bsc_id">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
- </attribute>
+ <ref name="bsc_id"/>
</optional>
<optional>
<element name="bpki_cms_cert">
@@ -803,24 +819,22 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</element>
</define>
<!-- <route_origin/> element -->
- <define name="ro_id">
+ <define name="route_origin_id">
<attribute name="route_origin_id">
<ref name="sql_id"/>
</attribute>
</define>
- <define name="ro_bool">
+ <define name="route_origin_bool">
<optional>
<attribute name="suppress_publication">
<value>yes</value>
</attribute>
</optional>
</define>
- <define name="ro_payload">
+ <define name="route_origin_payload">
<optional>
<attribute name="as_number">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <data type="positiveInteger"/>
</attribute>
</optional>
<optional>
@@ -830,91 +844,87 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</optional>
<optional>
<attribute name="ipv4">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv4_prefix_list"/>
</attribute>
</optional>
<optional>
<attribute name="ipv6">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv6_prefix_list"/>
</attribute>
</optional>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_cq"/>
<ref name="self_id"/>
- <ref name="ro_bool"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_bool"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_cr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_sq"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
- <ref name="ro_bool"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_id"/>
+ <ref name="route_origin_bool"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_sr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_gq"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_gr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_id"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_lq"/>
<ref name="self_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_lr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
- <ref name="ro_payload"/>
+ <ref name="route_origin_id"/>
+ <ref name="route_origin_payload"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_dq"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
- <define name="ro_elt" combine="choice">
+ <define name="route_origin_elt" combine="choice">
<element name="route_origin">
<ref name="ctl_dr"/>
<ref name="self_id"/>
- <ref name="ro_id"/>
+ <ref name="route_origin_id"/>
</element>
</define>
<!-- <list_resources/> element -->
@@ -937,8 +947,8 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
<ref name="self_id"/>
<ref name="child_id"/>
<attribute name="valid_until">
- <data type="token">
- <param name="maxLength">1024</param>
+ <data type="dateTime">
+ <param name="pattern">.*Z</param>
</data>
</attribute>
<optional>
@@ -950,23 +960,17 @@ left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" enc
</optional>
<optional>
<attribute name="as">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="asn_list"/>
</attribute>
</optional>
<optional>
<attribute name="ipv4">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv4_address_list"/>
</attribute>
</optional>
<optional>
<attribute name="ipv6">
- <data type="token">
- <param name="maxLength">1024</param>
- </data>
+ <ref name="ipv6_address_list"/>
</attribute>
</optional>
</group>
diff --git a/rpkid/xml-parse-test.py b/rpkid/xml-parse-test.py
index 3e3b20ef..15e787da 100755
--- a/rpkid/xml-parse-test.py
+++ b/rpkid/xml-parse-test.py
@@ -17,43 +17,61 @@
import glob, xml.sax, lxml.etree, lxml.sax, POW, POW.pkix
import rpki.up_down, rpki.left_right, rpki.relaxng
-verbose = True
+verbose = False
def test(fileglob, rng, sax_handler, encoding, tester = None):
files = glob.glob(fileglob)
files.sort()
for f in files:
- print "\n<!--", f, "-->"
+ print "<!--", f, "-->"
handler = sax_handler()
elt_in = lxml.etree.parse(f).getroot()
+ if verbose:
+ print "<!-- Input -->"
+ print lxml.etree.tostring(elt_in, pretty_print = True, encoding = encoding, xml_declaration = True)
rng.assertValid(elt_in)
lxml.sax.saxify(elt_in, handler)
elt_out = handler.result.toXML()
+ if verbose:
+ print "<!-- Output -->"
+ print lxml.etree.tostring(elt_out, pretty_print = True, encoding = encoding, xml_declaration = True)
rng.assertValid(elt_out)
if (tester):
tester(elt_in, elt_out, handler.result)
- print lxml.etree.tostring(elt_out, pretty_print = True, encoding = encoding, xml_declaration = True)
+ if verbose:
+ print
-def pprint_cert(cert):
- print cert.get_POW().pprint()
+def pprint(pairs):
+ if verbose:
+ for thing, name in pairs:
+ if thing is not None:
+ print "[%s]" % name
+ print thing.get_POW().pprint()
def ud_tester(elt_in, elt_out, msg):
assert isinstance(msg, rpki.up_down.message_pdu)
- if verbose:
- if isinstance(msg.payload, rpki.up_down.list_response_pdu):
- for c in msg.payload.classes:
- for i in range(len(c.certs)):
- print "[Certificate #%d]" % i
- pprint_cert(c.certs[i].cert)
- print "[Issuer]"
- pprint_cert(c.issuer)
+ if isinstance(msg.payload, rpki.up_down.list_response_pdu):
+ for c in msg.payload.classes:
+ pprint([(c.certs[i].cert, ("%s certificate #%d" % (c.class_name, i))) for i in xrange(len(c.certs))] + [(c.issuer, ("%s issuer" % c.class_name))])
def lr_tester(elt_in, elt_out, msg):
assert isinstance(msg, rpki.left_right.msg)
- if verbose:
- for bsc in [x for x in msg if isinstance(x, rpki.left_right.bsc_elt)]:
- if bsc.signing_cert is not None:
- pprint_cert(bsc.signing_cert)
+ for obj in msg:
+ if isinstance(obj, rpki.left_right.self_elt):
+ pprint(((obj.bpki_cert, "BPKI cert"),
+ (obj.bpki_glue, "BPKI glue")))
+ if isinstance(obj, rpki.left_right.bsc_elt):
+ pprint(((obj.signing_cert, "Signing certificate"),
+ (obj.signing_cert_crl, "Signing certificate CRL")))
+ # (obj.pkcs10_request, "PKCS #10 request")
+ if isinstance(obj, (rpki.left_right.parent_elt, rpki.left_right.repository_elt)):
+ pprint(((obj.bpki_cms_cert, "CMS certificate"),
+ (obj.bpki_cms_glue, "CMS glue"),
+ (obj.bpki_https_cert, "HTTPS certificate"),
+ (obj.bpki_https_glue, "HTTPS glue")))
+ if isinstance(obj, rpki.left_right.child_elt):
+ pprint(((obj.bpki_cert, "Certificate"),
+ (obj.bpki_glue, "Glue")))
test(fileglob = "up-down-protocol-samples/*.xml",
rng = rpki.relaxng.up_down,