aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2008-05-22 04:55:23 +0000
committerRob Austein <sra@hactrn.net>2008-05-22 04:55:23 +0000
commitcaff3b92725e02d3edd1404851ee0ad255eee7c2 (patch)
treed1f9c8b026c1d8b81b0d611ff227418cc6405be4
parenta49aa1e95f5d76610bc84e9476b6a6de712c34db (diff)
gen
svn path=/rpkid/publication-schema.rng; revision=1809
-rw-r--r--rpkid/publication-schema.rng275
1 files changed, 275 insertions, 0 deletions
diff --git a/rpkid/publication-schema.rng b/rpkid/publication-schema.rng
new file mode 100644
index 00000000..ee8f178f
--- /dev/null
+++ b/rpkid/publication-schema.rng
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ $Id: publication-schema.rnc 1808 2008-05-22 04:55:02Z sra $
+
+ RelaxNG Schema for RPKI publication protocol.
+
+ libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so
+ run the compact syntax through trang to get XML syntax.
+-->
+<grammar ns="http://www.hactrn.net/uris/rpki/publication/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- Top level PDU -->
+ <start>
+ <element name="msg">
+ <attribute name="version">
+ <data type="positiveInteger">
+ <param name="maxInclusive">1</param>
+ </data>
+ </attribute>
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>query</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="query_elt"/>
+ </zeroOrMore>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>reply</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="reply_elt"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </element>
+ </start>
+ <!-- PDUs allowed in a query -->
+ <define name="query_elt">
+ <choice>
+ <ref name="client_query"/>
+ <ref name="publish_query"/>
+ <ref name="retrieve_query"/>
+ <ref name="withdraw_query"/>
+ </choice>
+ </define>
+ <!-- PDUs allowed in a reply -->
+ <define name="reply_elt">
+ <choice>
+ <ref name="client_reply"/>
+ <ref name="publish_reply"/>
+ <ref name="retrieve_reply"/>
+ <ref name="withdraw_reply"/>
+ <ref name="report_error_reply"/>
+ </choice>
+ </define>
+ <!-- Tag attributes for bulk operations -->
+ <define name="tag">
+ <optional>
+ <attribute name="tag">
+ <data type="token">
+ <param name="maxLength">1024</param>
+ </data>
+ </attribute>
+ </optional>
+ </define>
+ <!-- Base64 encoded DER stuff -->
+ <define name="base64">
+ <data type="base64Binary">
+ <param name="maxLength">512000</param>
+ </data>
+ </define>
+ <!-- Publication URLs -->
+ <define name="url">
+ <attribute name="url">
+ <data type="anyURI">
+ <param name="maxLength">4096</param>
+ </data>
+ </attribute>
+ </define>
+ <!-- Kinds of objects -->
+ <define name="obj_type">
+ <attribute name="type">
+ <choice>
+ <value>certificate</value>
+ <value>crl</value>
+ <value>manifest</value>
+ <value>roa</value>
+ </choice>
+ </attribute>
+ </define>
+ <!-- <client/> element (use restricted to repository operator) -->
+ <define name="client_id">
+ <attribute name="client_id">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <define name="client_payload">
+ <optional>
+ <element name="bpki_cert">
+ <ref name="base64"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bpki_glue">
+ <ref name="base64"/>
+ </element>
+ </optional>
+ </define>
+ <define name="client_query" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>create</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_payload"/>
+ </element>
+ </define>
+ <define name="client_reply" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>create</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ </element>
+ </define>
+ <define name="client_query" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>set</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ <ref name="client_payload"/>
+ </element>
+ </define>
+ <define name="client_reply" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>set</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ </element>
+ </define>
+ <define name="client_query" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>get</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ </element>
+ </define>
+ <define name="client_reply" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>get</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ <ref name="client_payload"/>
+ </element>
+ </define>
+ <define name="client_query" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>list</value>
+ </attribute>
+ <ref name="tag"/>
+ </element>
+ </define>
+ <define name="client_reply" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>list</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ <ref name="client_payload"/>
+ </element>
+ </define>
+ <define name="client_query" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>destroy</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ </element>
+ </define>
+ <define name="client_reply" combine="choice">
+ <element name="client">
+ <attribute name="action">
+ <value>destroy</value>
+ </attribute>
+ <ref name="tag"/>
+ <ref name="client_id"/>
+ </element>
+ </define>
+ <!-- <publish/> element -->
+ <define name="publish_query">
+ <element name="publish">
+ <ref name="tag"/>
+ <ref name="obj_type"/>
+ <ref name="url"/>
+ <ref name="base64"/>
+ </element>
+ </define>
+ <define name="publish_reply">
+ <element name="publish">
+ <ref name="tag"/>
+ <ref name="obj_type"/>
+ <ref name="url"/>
+ </element>
+ </define>
+ <!-- <retrieve/> element -->
+ <define name="retrieve_query">
+ <element name="retrieve">
+ <ref name="tag"/>
+ <optional>
+ <ref name="obj_type"/>
+ </optional>
+ <optional>
+ <ref name="url"/>
+ </optional>
+ </element>
+ </define>
+ <define name="retrieve_reply">
+ <element name="retrieve">
+ <ref name="tag"/>
+ <ref name="obj_type"/>
+ <ref name="url"/>
+ <ref name="base64"/>
+ </element>
+ </define>
+ <!-- <withdraw/> element -->
+ <define name="withdraw_query">
+ <element name="withdraw">
+ <ref name="tag"/>
+ <ref name="obj_type"/>
+ <ref name="url"/>
+ </element>
+ </define>
+ <define name="withdraw_reply">
+ <element name="withdraw">
+ <ref name="tag"/>
+ <ref name="obj_type"/>
+ <ref name="url"/>
+ </element>
+ </define>
+ <!-- <report_error/> element -->
+ <define name="report_error_reply">
+ <element name="report_error">
+ <ref name="tag"/>
+ <attribute name="error_code">
+ <data type="token">
+ <param name="maxLength">1024</param>
+ </data>
+ </attribute>
+ <optional>
+ <data type="string">
+ <param name="maxLength">512000</param>
+ </data>
+ </optional>
+ </element>
+ </define>
+</grammar>
+<!--
+ Local Variables:
+ indent-tabs-mode: nil
+ End:
+-->