RPKI Engine 1.0

relaxng.py (3731)

Go to the documentation of this file.
00001 # Automatically generated, do not edit.
00002 
00003 import lxml.etree
00004 
00005 ## @var left_right
00006 ## Parsed RelaxNG left_right schema
00007 left_right = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
00008 <!--
00009   $Id: left-right-schema.rnc 3730 2011-03-21 12:42:43Z sra $
00010   
00011   RelaxNG Schema for RPKI left-right protocol.
00012   
00013   libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so
00014   run the compact syntax through trang to get XML syntax.
00015   
00016   Copyright (C) 2009-2011  Internet Systems Consortium ("ISC")
00017   
00018   Permission to use, copy, modify, and distribute this software for any
00019   purpose with or without fee is hereby granted, provided that the above
00020   copyright notice and this permission notice appear in all copies.
00021   
00022   THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
00023   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
00024   AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
00025   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
00026   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
00027   OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
00028   PERFORMANCE OF THIS SOFTWARE.
00029   
00030   Portions copyright (C) 2007-2008  American Registry for Internet Numbers ("ARIN")
00031   
00032   Permission to use, copy, modify, and distribute this software for any
00033   purpose with or without fee is hereby granted, provided that the above
00034   copyright notice and this permission notice appear in all copies.
00035   
00036   THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
00037   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
00038   AND FITNESS.  IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
00039   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
00040   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
00041   OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
00042   PERFORMANCE OF THIS SOFTWARE.
00043 -->
00044 <grammar ns="http://www.hactrn.net/uris/rpki/left-right-spec/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
00045   <!-- Top level PDU -->
00046   <start>
00047     <element name="msg">
00048       <attribute name="version">
00049         <data type="positiveInteger">
00050           <param name="maxInclusive">1</param>
00051         </data>
00052       </attribute>
00053       <choice>
00054         <group>
00055           <attribute name="type">
00056             <value>query</value>
00057           </attribute>
00058           <zeroOrMore>
00059             <ref name="query_elt"/>
00060           </zeroOrMore>
00061         </group>
00062         <group>
00063           <attribute name="type">
00064             <value>reply</value>
00065           </attribute>
00066           <zeroOrMore>
00067             <ref name="reply_elt"/>
00068           </zeroOrMore>
00069         </group>
00070       </choice>
00071     </element>
00072   </start>
00073   <!-- PDUs allowed in a query -->
00074   <define name="query_elt" combine="choice">
00075     <ref name="self_query"/>
00076   </define>
00077   <define name="query_elt" combine="choice">
00078     <ref name="bsc_query"/>
00079   </define>
00080   <define name="query_elt" combine="choice">
00081     <ref name="parent_query"/>
00082   </define>
00083   <define name="query_elt" combine="choice">
00084     <ref name="child_query"/>
00085   </define>
00086   <define name="query_elt" combine="choice">
00087     <ref name="repository_query"/>
00088   </define>
00089   <define name="query_elt" combine="choice">
00090     <ref name="list_roa_requests_query"/>
00091   </define>
00092   <define name="query_elt" combine="choice">
00093     <ref name="list_ghostbuster_requests_query"/>
00094   </define>
00095   <define name="query_elt" combine="choice">
00096     <ref name="list_resources_query"/>
00097   </define>
00098   <define name="query_elt" combine="choice">
00099     <ref name="list_published_objects_query"/>
00100   </define>
00101   <define name="query_elt" combine="choice">
00102     <ref name="list_received_resources_query"/>
00103   </define>
00104   <!-- PDUs allowed in a reply -->
00105   <define name="reply_elt" combine="choice">
00106     <ref name="self_reply"/>
00107   </define>
00108   <define name="reply_elt" combine="choice">
00109     <ref name="bsc_reply"/>
00110   </define>
00111   <define name="reply_elt" combine="choice">
00112     <ref name="parent_reply"/>
00113   </define>
00114   <define name="reply_elt" combine="choice">
00115     <ref name="child_reply"/>
00116   </define>
00117   <define name="reply_elt" combine="choice">
00118     <ref name="repository_reply"/>
00119   </define>
00120   <define name="reply_elt" combine="choice">
00121     <ref name="list_resources_reply"/>
00122   </define>
00123   <define name="reply_elt" combine="choice">
00124     <ref name="list_roa_requests_reply"/>
00125   </define>
00126   <define name="reply_elt" combine="choice">
00127     <ref name="list_ghostbuster_requests_reply"/>
00128   </define>
00129   <define name="reply_elt" combine="choice">
00130     <ref name="list_published_objects_reply"/>
00131   </define>
00132   <define name="reply_elt" combine="choice">
00133     <ref name="list_received_resources_reply"/>
00134   </define>
00135   <define name="reply_elt" combine="choice">
00136     <ref name="report_error_reply"/>
00137   </define>
00138   <!-- Tag attributes for bulk operations -->
00139   <define name="tag">
00140     <optional>
00141       <attribute name="tag">
00142         <data type="token">
00143           <param name="maxLength">1024</param>
00144         </data>
00145       </attribute>
00146     </optional>
00147   </define>
00148   <!--
00149     Combinations of action and type attributes used in later definitions.
00150     The same patterns repeat in most of the elements in this protocol.
00151   -->
00152   <define name="ctl_create">
00153     <attribute name="action">
00154       <value>create</value>
00155     </attribute>
00156     <ref name="tag"/>
00157   </define>
00158   <define name="ctl_set">
00159     <attribute name="action">
00160       <value>set</value>
00161     </attribute>
00162     <ref name="tag"/>
00163   </define>
00164   <define name="ctl_get">
00165     <attribute name="action">
00166       <value>get</value>
00167     </attribute>
00168     <ref name="tag"/>
00169   </define>
00170   <define name="ctl_list">
00171     <attribute name="action">
00172       <value>list</value>
00173     </attribute>
00174     <ref name="tag"/>
00175   </define>
00176   <define name="ctl_destroy">
00177     <attribute name="action">
00178       <value>destroy</value>
00179     </attribute>
00180     <ref name="tag"/>
00181   </define>
00182   <!-- Base64 encoded DER stuff -->
00183   <define name="base64">
00184     <data type="base64Binary">
00185       <param name="maxLength">512000</param>
00186     </data>
00187   </define>
00188   <!--
00189     Base definition for all fields that are really just SQL primary indices
00190     sql_id = xsd:nonNegativeInteger
00191   -->
00192   <!--
00193     ...except that fields containing SQL primary indicies don't belong
00194     in this protocol, so they're turninging into handles.
00195     Length restriction is a MySQL implementation issue.
00196     Handles are case-insensitive (because SQL is, among other reasons).
00197   -->
00198   <define name="object_handle">
00199     <data type="string">
00200       <param name="maxLength">255</param>
00201       <param name="pattern">[\-_A-Za-z0-9]*</param>
00202     </data>
00203   </define>
00204   <!-- URIs -->
00205   <define name="uri">
00206     <data type="anyURI">
00207       <param name="maxLength">4096</param>
00208     </data>
00209   </define>
00210   <!-- Name fields imported from up-down protocol -->
00211   <define name="up_down_name">
00212     <data type="token">
00213       <param name="maxLength">1024</param>
00214     </data>
00215   </define>
00216   <!-- Resource lists -->
00217   <define name="asn_list">
00218     <data type="string">
00219       <param name="maxLength">512000</param>
00220       <param name="pattern">[\-,0-9]*</param>
00221     </data>
00222   </define>
00223   <define name="ipv4_list">
00224     <data type="string">
00225       <param name="maxLength">512000</param>
00226       <param name="pattern">[\-,0-9/.]*</param>
00227     </data>
00228   </define>
00229   <define name="ipv6_list">
00230     <data type="string">
00231       <param name="maxLength">512000</param>
00232       <param name="pattern">[\-,0-9/:a-fA-F]*</param>
00233     </data>
00234   </define>
00235   <!-- <self/> element -->
00236   <define name="self_bool">
00237     <optional>
00238       <attribute name="rekey">
00239         <value>yes</value>
00240       </attribute>
00241     </optional>
00242     <optional>
00243       <attribute name="reissue">
00244         <value>yes</value>
00245       </attribute>
00246     </optional>
00247     <optional>
00248       <attribute name="revoke">
00249         <value>yes</value>
00250       </attribute>
00251     </optional>
00252     <optional>
00253       <attribute name="run_now">
00254         <value>yes</value>
00255       </attribute>
00256     </optional>
00257     <optional>
00258       <attribute name="publish_world_now">
00259         <value>yes</value>
00260       </attribute>
00261     </optional>
00262     <optional>
00263       <attribute name="revoke_forgotten">
00264         <value>yes</value>
00265       </attribute>
00266     </optional>
00267   </define>
00268   <define name="self_payload">
00269     <optional>
00270       <attribute name="use_hsm">
00271         <choice>
00272           <value>yes</value>
00273           <value>no</value>
00274         </choice>
00275       </attribute>
00276     </optional>
00277     <optional>
00278       <attribute name="crl_interval">
00279         <data type="positiveInteger"/>
00280       </attribute>
00281     </optional>
00282     <optional>
00283       <attribute name="regen_margin">
00284         <data type="positiveInteger"/>
00285       </attribute>
00286     </optional>
00287     <optional>
00288       <element name="bpki_cert">
00289         <ref name="base64"/>
00290       </element>
00291     </optional>
00292     <optional>
00293       <element name="bpki_glue">
00294         <ref name="base64"/>
00295       </element>
00296     </optional>
00297   </define>
00298   <define name="self_handle">
00299     <attribute name="self_handle">
00300       <ref name="object_handle"/>
00301     </attribute>
00302   </define>
00303   <define name="self_query" combine="choice">
00304     <element name="self">
00305       <ref name="ctl_create"/>
00306       <ref name="self_handle"/>
00307       <ref name="self_bool"/>
00308       <ref name="self_payload"/>
00309     </element>
00310   </define>
00311   <define name="self_reply" combine="choice">
00312     <element name="self">
00313       <ref name="ctl_create"/>
00314       <ref name="self_handle"/>
00315     </element>
00316   </define>
00317   <define name="self_query" combine="choice">
00318     <element name="self">
00319       <ref name="ctl_set"/>
00320       <ref name="self_handle"/>
00321       <ref name="self_bool"/>
00322       <ref name="self_payload"/>
00323     </element>
00324   </define>
00325   <define name="self_reply" combine="choice">
00326     <element name="self">
00327       <ref name="ctl_set"/>
00328       <ref name="self_handle"/>
00329     </element>
00330   </define>
00331   <define name="self_query" combine="choice">
00332     <element name="self">
00333       <ref name="ctl_get"/>
00334       <ref name="self_handle"/>
00335     </element>
00336   </define>
00337   <define name="self_reply" combine="choice">
00338     <element name="self">
00339       <ref name="ctl_get"/>
00340       <ref name="self_handle"/>
00341       <ref name="self_payload"/>
00342     </element>
00343   </define>
00344   <define name="self_query" combine="choice">
00345     <element name="self">
00346       <ref name="ctl_list"/>
00347     </element>
00348   </define>
00349   <define name="self_reply" combine="choice">
00350     <element name="self">
00351       <ref name="ctl_list"/>
00352       <ref name="self_handle"/>
00353       <ref name="self_payload"/>
00354     </element>
00355   </define>
00356   <define name="self_query" combine="choice">
00357     <element name="self">
00358       <ref name="ctl_destroy"/>
00359       <ref name="self_handle"/>
00360     </element>
00361   </define>
00362   <define name="self_reply" combine="choice">
00363     <element name="self">
00364       <ref name="ctl_destroy"/>
00365       <ref name="self_handle"/>
00366     </element>
00367   </define>
00368   <!-- <bsc/> element.  Key parameters hardwired for now. -->
00369   <define name="bsc_bool">
00370     <optional>
00371       <attribute name="generate_keypair">
00372         <value>yes</value>
00373       </attribute>
00374       <optional>
00375         <attribute name="key_type">
00376           <value>rsa</value>
00377         </attribute>
00378       </optional>
00379       <optional>
00380         <attribute name="hash_alg">
00381           <value>sha256</value>
00382         </attribute>
00383       </optional>
00384       <optional>
00385         <attribute name="key_length">
00386           <value>2048</value>
00387         </attribute>
00388       </optional>
00389     </optional>
00390   </define>
00391   <define name="bsc_handle">
00392     <attribute name="bsc_handle">
00393       <ref name="object_handle"/>
00394     </attribute>
00395   </define>
00396   <define name="bsc_payload">
00397     <optional>
00398       <element name="signing_cert">
00399         <ref name="base64"/>
00400       </element>
00401     </optional>
00402     <optional>
00403       <element name="signing_cert_crl">
00404         <ref name="base64"/>
00405       </element>
00406     </optional>
00407   </define>
00408   <define name="bsc_pkcs10">
00409     <optional>
00410       <element name="pkcs10_request">
00411         <ref name="base64"/>
00412       </element>
00413     </optional>
00414   </define>
00415   <define name="bsc_query" combine="choice">
00416     <element name="bsc">
00417       <ref name="ctl_create"/>
00418       <ref name="self_handle"/>
00419       <ref name="bsc_handle"/>
00420       <ref name="bsc_bool"/>
00421       <ref name="bsc_payload"/>
00422     </element>
00423   </define>
00424   <define name="bsc_reply" combine="choice">
00425     <element name="bsc">
00426       <ref name="ctl_create"/>
00427       <ref name="self_handle"/>
00428       <ref name="bsc_handle"/>
00429       <ref name="bsc_pkcs10"/>
00430     </element>
00431   </define>
00432   <define name="bsc_query" combine="choice">
00433     <element name="bsc">
00434       <ref name="ctl_set"/>
00435       <ref name="self_handle"/>
00436       <ref name="bsc_handle"/>
00437       <ref name="bsc_bool"/>
00438       <ref name="bsc_payload"/>
00439     </element>
00440   </define>
00441   <define name="bsc_reply" combine="choice">
00442     <element name="bsc">
00443       <ref name="ctl_set"/>
00444       <ref name="self_handle"/>
00445       <ref name="bsc_handle"/>
00446       <ref name="bsc_pkcs10"/>
00447     </element>
00448   </define>
00449   <define name="bsc_query" combine="choice">
00450     <element name="bsc">
00451       <ref name="ctl_get"/>
00452       <ref name="self_handle"/>
00453       <ref name="bsc_handle"/>
00454     </element>
00455   </define>
00456   <define name="bsc_reply" combine="choice">
00457     <element name="bsc">
00458       <ref name="ctl_get"/>
00459       <ref name="self_handle"/>
00460       <ref name="bsc_handle"/>
00461       <ref name="bsc_payload"/>
00462       <ref name="bsc_pkcs10"/>
00463     </element>
00464   </define>
00465   <define name="bsc_query" combine="choice">
00466     <element name="bsc">
00467       <ref name="ctl_list"/>
00468       <ref name="self_handle"/>
00469     </element>
00470   </define>
00471   <define name="bsc_reply" combine="choice">
00472     <element name="bsc">
00473       <ref name="ctl_list"/>
00474       <ref name="self_handle"/>
00475       <ref name="bsc_handle"/>
00476       <ref name="bsc_payload"/>
00477       <ref name="bsc_pkcs10"/>
00478     </element>
00479   </define>
00480   <define name="bsc_query" combine="choice">
00481     <element name="bsc">
00482       <ref name="ctl_destroy"/>
00483       <ref name="self_handle"/>
00484       <ref name="bsc_handle"/>
00485     </element>
00486   </define>
00487   <define name="bsc_reply" combine="choice">
00488     <element name="bsc">
00489       <ref name="ctl_destroy"/>
00490       <ref name="self_handle"/>
00491       <ref name="bsc_handle"/>
00492     </element>
00493   </define>
00494   <!-- <parent/> element -->
00495   <define name="parent_handle">
00496     <attribute name="parent_handle">
00497       <ref name="object_handle"/>
00498     </attribute>
00499   </define>
00500   <define name="parent_bool">
00501     <optional>
00502       <attribute name="rekey">
00503         <value>yes</value>
00504       </attribute>
00505     </optional>
00506     <optional>
00507       <attribute name="reissue">
00508         <value>yes</value>
00509       </attribute>
00510     </optional>
00511     <optional>
00512       <attribute name="revoke">
00513         <value>yes</value>
00514       </attribute>
00515     </optional>
00516     <optional>
00517       <attribute name="revoke_forgotten">
00518         <value>yes</value>
00519       </attribute>
00520     </optional>
00521   </define>
00522   <define name="parent_payload">
00523     <optional>
00524       <attribute name="peer_contact_uri">
00525         <ref name="uri"/>
00526       </attribute>
00527     </optional>
00528     <optional>
00529       <attribute name="sia_base">
00530         <ref name="uri"/>
00531       </attribute>
00532     </optional>
00533     <optional>
00534       <ref name="bsc_handle"/>
00535     </optional>
00536     <optional>
00537       <ref name="repository_handle"/>
00538     </optional>
00539     <optional>
00540       <attribute name="sender_name">
00541         <ref name="up_down_name"/>
00542       </attribute>
00543     </optional>
00544     <optional>
00545       <attribute name="recipient_name">
00546         <ref name="up_down_name"/>
00547       </attribute>
00548     </optional>
00549     <optional>
00550       <element name="bpki_cms_cert">
00551         <ref name="base64"/>
00552       </element>
00553     </optional>
00554     <optional>
00555       <element name="bpki_cms_glue">
00556         <ref name="base64"/>
00557       </element>
00558     </optional>
00559   </define>
00560   <define name="parent_query" combine="choice">
00561     <element name="parent">
00562       <ref name="ctl_create"/>
00563       <ref name="self_handle"/>
00564       <ref name="parent_handle"/>
00565       <ref name="parent_bool"/>
00566       <ref name="parent_payload"/>
00567     </element>
00568   </define>
00569   <define name="parent_reply" combine="choice">
00570     <element name="parent">
00571       <ref name="ctl_create"/>
00572       <ref name="self_handle"/>
00573       <ref name="parent_handle"/>
00574     </element>
00575   </define>
00576   <define name="parent_query" combine="choice">
00577     <element name="parent">
00578       <ref name="ctl_set"/>
00579       <ref name="self_handle"/>
00580       <ref name="parent_handle"/>
00581       <ref name="parent_bool"/>
00582       <ref name="parent_payload"/>
00583     </element>
00584   </define>
00585   <define name="parent_reply" combine="choice">
00586     <element name="parent">
00587       <ref name="ctl_set"/>
00588       <ref name="self_handle"/>
00589       <ref name="parent_handle"/>
00590     </element>
00591   </define>
00592   <define name="parent_query" combine="choice">
00593     <element name="parent">
00594       <ref name="ctl_get"/>
00595       <ref name="self_handle"/>
00596       <ref name="parent_handle"/>
00597     </element>
00598   </define>
00599   <define name="parent_reply" combine="choice">
00600     <element name="parent">
00601       <ref name="ctl_get"/>
00602       <ref name="self_handle"/>
00603       <ref name="parent_handle"/>
00604       <ref name="parent_payload"/>
00605     </element>
00606   </define>
00607   <define name="parent_query" combine="choice">
00608     <element name="parent">
00609       <ref name="ctl_list"/>
00610       <ref name="self_handle"/>
00611     </element>
00612   </define>
00613   <define name="parent_reply" combine="choice">
00614     <element name="parent">
00615       <ref name="ctl_list"/>
00616       <ref name="self_handle"/>
00617       <ref name="parent_handle"/>
00618       <ref name="parent_payload"/>
00619     </element>
00620   </define>
00621   <define name="parent_query" combine="choice">
00622     <element name="parent">
00623       <ref name="ctl_destroy"/>
00624       <ref name="self_handle"/>
00625       <ref name="parent_handle"/>
00626     </element>
00627   </define>
00628   <define name="parent_reply" combine="choice">
00629     <element name="parent">
00630       <ref name="ctl_destroy"/>
00631       <ref name="self_handle"/>
00632       <ref name="parent_handle"/>
00633     </element>
00634   </define>
00635   <!-- <child/> element -->
00636   <define name="child_handle">
00637     <attribute name="child_handle">
00638       <ref name="object_handle"/>
00639     </attribute>
00640   </define>
00641   <define name="child_bool">
00642     <optional>
00643       <attribute name="reissue">
00644         <value>yes</value>
00645       </attribute>
00646     </optional>
00647   </define>
00648   <define name="child_payload">
00649     <optional>
00650       <ref name="bsc_handle"/>
00651     </optional>
00652     <optional>
00653       <element name="bpki_cert">
00654         <ref name="base64"/>
00655       </element>
00656     </optional>
00657     <optional>
00658       <element name="bpki_glue">
00659         <ref name="base64"/>
00660       </element>
00661     </optional>
00662   </define>
00663   <define name="child_query" combine="choice">
00664     <element name="child">
00665       <ref name="ctl_create"/>
00666       <ref name="self_handle"/>
00667       <ref name="child_handle"/>
00668       <ref name="child_bool"/>
00669       <ref name="child_payload"/>
00670     </element>
00671   </define>
00672   <define name="child_reply" combine="choice">
00673     <element name="child">
00674       <ref name="ctl_create"/>
00675       <ref name="self_handle"/>
00676       <ref name="child_handle"/>
00677     </element>
00678   </define>
00679   <define name="child_query" combine="choice">
00680     <element name="child">
00681       <ref name="ctl_set"/>
00682       <ref name="self_handle"/>
00683       <ref name="child_handle"/>
00684       <ref name="child_bool"/>
00685       <ref name="child_payload"/>
00686     </element>
00687   </define>
00688   <define name="child_reply" combine="choice">
00689     <element name="child">
00690       <ref name="ctl_set"/>
00691       <ref name="self_handle"/>
00692       <ref name="child_handle"/>
00693     </element>
00694   </define>
00695   <define name="child_query" combine="choice">
00696     <element name="child">
00697       <ref name="ctl_get"/>
00698       <ref name="self_handle"/>
00699       <ref name="child_handle"/>
00700     </element>
00701   </define>
00702   <define name="child_reply" combine="choice">
00703     <element name="child">
00704       <ref name="ctl_get"/>
00705       <ref name="self_handle"/>
00706       <ref name="child_handle"/>
00707       <ref name="child_payload"/>
00708     </element>
00709   </define>
00710   <define name="child_query" combine="choice">
00711     <element name="child">
00712       <ref name="ctl_list"/>
00713       <ref name="self_handle"/>
00714     </element>
00715   </define>
00716   <define name="child_reply" combine="choice">
00717     <element name="child">
00718       <ref name="ctl_list"/>
00719       <ref name="self_handle"/>
00720       <ref name="child_handle"/>
00721       <ref name="child_payload"/>
00722     </element>
00723   </define>
00724   <define name="child_query" combine="choice">
00725     <element name="child">
00726       <ref name="ctl_destroy"/>
00727       <ref name="self_handle"/>
00728       <ref name="child_handle"/>
00729     </element>
00730   </define>
00731   <define name="child_reply" combine="choice">
00732     <element name="child">
00733       <ref name="ctl_destroy"/>
00734       <ref name="self_handle"/>
00735       <ref name="child_handle"/>
00736     </element>
00737   </define>
00738   <!-- <repository/> element -->
00739   <define name="repository_handle">
00740     <attribute name="repository_handle">
00741       <ref name="object_handle"/>
00742     </attribute>
00743   </define>
00744   <define name="repository_payload">
00745     <optional>
00746       <attribute name="peer_contact_uri">
00747         <ref name="uri"/>
00748       </attribute>
00749     </optional>
00750     <optional>
00751       <ref name="bsc_handle"/>
00752     </optional>
00753     <optional>
00754       <element name="bpki_cert">
00755         <ref name="base64"/>
00756       </element>
00757     </optional>
00758     <optional>
00759       <element name="bpki_glue">
00760         <ref name="base64"/>
00761       </element>
00762     </optional>
00763   </define>
00764   <define name="repository_query" combine="choice">
00765     <element name="repository">
00766       <ref name="ctl_create"/>
00767       <ref name="self_handle"/>
00768       <ref name="repository_handle"/>
00769       <ref name="repository_payload"/>
00770     </element>
00771   </define>
00772   <define name="repository_reply" combine="choice">
00773     <element name="repository">
00774       <ref name="ctl_create"/>
00775       <ref name="self_handle"/>
00776       <ref name="repository_handle"/>
00777     </element>
00778   </define>
00779   <define name="repository_query" combine="choice">
00780     <element name="repository">
00781       <ref name="ctl_set"/>
00782       <ref name="self_handle"/>
00783       <ref name="repository_handle"/>
00784       <ref name="repository_payload"/>
00785     </element>
00786   </define>
00787   <define name="repository_reply" combine="choice">
00788     <element name="repository">
00789       <ref name="ctl_set"/>
00790       <ref name="self_handle"/>
00791       <ref name="repository_handle"/>
00792     </element>
00793   </define>
00794   <define name="repository_query" combine="choice">
00795     <element name="repository">
00796       <ref name="ctl_get"/>
00797       <ref name="self_handle"/>
00798       <ref name="repository_handle"/>
00799     </element>
00800   </define>
00801   <define name="repository_reply" combine="choice">
00802     <element name="repository">
00803       <ref name="ctl_get"/>
00804       <ref name="self_handle"/>
00805       <ref name="repository_handle"/>
00806       <ref name="repository_payload"/>
00807     </element>
00808   </define>
00809   <define name="repository_query" combine="choice">
00810     <element name="repository">
00811       <ref name="ctl_list"/>
00812       <ref name="self_handle"/>
00813     </element>
00814   </define>
00815   <define name="repository_reply" combine="choice">
00816     <element name="repository">
00817       <ref name="ctl_list"/>
00818       <ref name="self_handle"/>
00819       <ref name="repository_handle"/>
00820       <ref name="repository_payload"/>
00821     </element>
00822   </define>
00823   <define name="repository_query" combine="choice">
00824     <element name="repository">
00825       <ref name="ctl_destroy"/>
00826       <ref name="self_handle"/>
00827       <ref name="repository_handle"/>
00828     </element>
00829   </define>
00830   <define name="repository_reply" combine="choice">
00831     <element name="repository">
00832       <ref name="ctl_destroy"/>
00833       <ref name="self_handle"/>
00834       <ref name="repository_handle"/>
00835     </element>
00836   </define>
00837   <!-- <list_resources/> element -->
00838   <define name="list_resources_query">
00839     <element name="list_resources">
00840       <ref name="tag"/>
00841       <ref name="self_handle"/>
00842       <ref name="child_handle"/>
00843     </element>
00844   </define>
00845   <define name="list_resources_reply">
00846     <element name="list_resources">
00847       <ref name="tag"/>
00848       <ref name="self_handle"/>
00849       <ref name="child_handle"/>
00850       <attribute name="valid_until">
00851         <data type="dateTime">
00852           <param name="pattern">.*Z</param>
00853         </data>
00854       </attribute>
00855       <optional>
00856         <attribute name="asn">
00857           <ref name="asn_list"/>
00858         </attribute>
00859       </optional>
00860       <optional>
00861         <attribute name="ipv4">
00862           <ref name="ipv4_list"/>
00863         </attribute>
00864       </optional>
00865       <optional>
00866         <attribute name="ipv6">
00867           <ref name="ipv6_list"/>
00868         </attribute>
00869       </optional>
00870     </element>
00871   </define>
00872   <!-- <list_roa_requests/> element -->
00873   <define name="list_roa_requests_query">
00874     <element name="list_roa_requests">
00875       <ref name="tag"/>
00876       <ref name="self_handle"/>
00877     </element>
00878   </define>
00879   <define name="list_roa_requests_reply">
00880     <element name="list_roa_requests">
00881       <ref name="tag"/>
00882       <ref name="self_handle"/>
00883       <attribute name="asn">
00884         <data type="positiveInteger"/>
00885       </attribute>
00886       <optional>
00887         <attribute name="ipv4">
00888           <ref name="ipv4_list"/>
00889         </attribute>
00890       </optional>
00891       <optional>
00892         <attribute name="ipv6">
00893           <ref name="ipv6_list"/>
00894         </attribute>
00895       </optional>
00896     </element>
00897   </define>
00898   <!-- <list_ghostbuster_requests/> element -->
00899   <define name="list_ghostbuster_requests_query">
00900     <element name="list_ghostbuster_requests">
00901       <ref name="tag"/>
00902       <ref name="self_handle"/>
00903       <ref name="parent_handle"/>
00904     </element>
00905   </define>
00906   <define name="list_ghostbuster_requests_reply">
00907     <element name="list_ghostbuster_requests">
00908       <ref name="tag"/>
00909       <ref name="self_handle"/>
00910       <ref name="parent_handle"/>
00911       <data type="string"/>
00912     </element>
00913   </define>
00914   <!-- <list_published_objects/> element -->
00915   <define name="list_published_objects_query">
00916     <element name="list_published_objects">
00917       <ref name="tag"/>
00918       <ref name="self_handle"/>
00919     </element>
00920   </define>
00921   <define name="list_published_objects_reply">
00922     <element name="list_published_objects">
00923       <ref name="tag"/>
00924       <ref name="self_handle"/>
00925       <attribute name="uri">
00926         <ref name="uri"/>
00927       </attribute>
00928       <ref name="base64"/>
00929     </element>
00930   </define>
00931   <!-- <list_received_resources/> element -->
00932   <define name="list_received_resources_query">
00933     <element name="list_received_resources">
00934       <ref name="tag"/>
00935       <ref name="self_handle"/>
00936     </element>
00937   </define>
00938   <define name="list_received_resources_reply">
00939     <element name="list_received_resources">
00940       <ref name="tag"/>
00941       <ref name="self_handle"/>
00942       <ref name="parent_handle"/>
00943       <attribute name="notBefore">
00944         <data type="dateTime">
00945           <param name="pattern">.*Z</param>
00946         </data>
00947       </attribute>
00948       <attribute name="notAfter">
00949         <data type="dateTime">
00950           <param name="pattern">.*Z</param>
00951         </data>
00952       </attribute>
00953       <attribute name="uri">
00954         <ref name="uri"/>
00955       </attribute>
00956       <attribute name="sia_uri">
00957         <ref name="uri"/>
00958       </attribute>
00959       <attribute name="aia_uri">
00960         <ref name="uri"/>
00961       </attribute>
00962       <optional>
00963         <attribute name="asn">
00964           <ref name="asn_list"/>
00965         </attribute>
00966       </optional>
00967       <optional>
00968         <attribute name="ipv4">
00969           <ref name="ipv4_list"/>
00970         </attribute>
00971       </optional>
00972       <optional>
00973         <attribute name="ipv6">
00974           <ref name="ipv6_list"/>
00975         </attribute>
00976       </optional>
00977     </element>
00978   </define>
00979   <!-- <report_error/> element -->
00980   <define name="error">
00981     <data type="token">
00982       <param name="maxLength">1024</param>
00983     </data>
00984   </define>
00985   <define name="report_error_reply">
00986     <element name="report_error">
00987       <ref name="tag"/>
00988       <optional>
00989         <ref name="self_handle"/>
00990       </optional>
00991       <attribute name="error_code">
00992         <ref name="error"/>
00993       </attribute>
00994       <optional>
00995         <data type="string">
00996           <param name="maxLength">512000</param>
00997         </data>
00998       </optional>
00999     </element>
01000   </define>
01001 </grammar>
01002 <!--
01003   Local Variables:
01004   indent-tabs-mode: nil
01005   End:
01006 -->
01007 '''))
01008 
01009 ## @var up_down
01010 ## Parsed RelaxNG up_down schema
01011 up_down = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
01012 <!--
01013   $Id: up-down-schema.rnc 1798 2008-05-17 08:21:50Z sra $
01014   
01015   RelaxNG Scheme for up-down protocol, extracted from APNIC Wiki.
01016   
01017   libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so
01018   run the compact syntax through trang to get XML syntax.
01019 -->
01020 <grammar ns="http://www.apnic.net/specs/rescerts/up-down/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
01021   <start>
01022     <element name="message">
01023       <attribute name="version">
01024         <data type="positiveInteger">
01025           <param name="maxInclusive">1</param>
01026         </data>
01027       </attribute>
01028       <attribute name="sender">
01029         <data type="token">
01030           <param name="maxLength">1024</param>
01031         </data>
01032       </attribute>
01033       <attribute name="recipient">
01034         <data type="token">
01035           <param name="maxLength">1024</param>
01036         </data>
01037       </attribute>
01038       <ref name="payload"/>
01039     </element>
01040   </start>
01041   <define name="payload" combine="choice">
01042     <attribute name="type">
01043       <value>list</value>
01044     </attribute>
01045     <ref name="list_request"/>
01046   </define>
01047   <define name="payload" combine="choice">
01048     <attribute name="type">
01049       <value>list_response</value>
01050     </attribute>
01051     <ref name="list_response"/>
01052   </define>
01053   <define name="payload" combine="choice">
01054     <attribute name="type">
01055       <value>issue</value>
01056     </attribute>
01057     <ref name="issue_request"/>
01058   </define>
01059   <define name="payload" combine="choice">
01060     <attribute name="type">
01061       <value>issue_response</value>
01062     </attribute>
01063     <ref name="issue_response"/>
01064   </define>
01065   <define name="payload" combine="choice">
01066     <attribute name="type">
01067       <value>revoke</value>
01068     </attribute>
01069     <ref name="revoke_request"/>
01070   </define>
01071   <define name="payload" combine="choice">
01072     <attribute name="type">
01073       <value>revoke_response</value>
01074     </attribute>
01075     <ref name="revoke_response"/>
01076   </define>
01077   <define name="payload" combine="choice">
01078     <attribute name="type">
01079       <value>error_response</value>
01080     </attribute>
01081     <ref name="error_response"/>
01082   </define>
01083   <define name="list_request">
01084     <empty/>
01085   </define>
01086   <define name="list_response">
01087     <zeroOrMore>
01088       <ref name="class"/>
01089     </zeroOrMore>
01090   </define>
01091   <define name="class">
01092     <element name="class">
01093       <attribute name="class_name">
01094         <data type="token">
01095           <param name="maxLength">1024</param>
01096         </data>
01097       </attribute>
01098       <attribute name="cert_url">
01099         <data type="string">
01100           <param name="maxLength">4096</param>
01101         </data>
01102       </attribute>
01103       <attribute name="resource_set_as">
01104         <data type="string">
01105           <param name="maxLength">512000</param>
01106           <param name="pattern">[\-,0-9]*</param>
01107         </data>
01108       </attribute>
01109       <attribute name="resource_set_ipv4">
01110         <data type="string">
01111           <param name="maxLength">512000</param>
01112           <param name="pattern">[\-,/.0-9]*</param>
01113         </data>
01114       </attribute>
01115       <attribute name="resource_set_ipv6">
01116         <data type="string">
01117           <param name="maxLength">512000</param>
01118           <param name="pattern">[\-,/:0-9a-fA-F]*</param>
01119         </data>
01120       </attribute>
01121       <optional>
01122         <attribute name="resource_set_notafter">
01123           <data type="dateTime">
01124             <param name="pattern">.*Z</param>
01125           </data>
01126         </attribute>
01127       </optional>
01128       <optional>
01129         <attribute name="suggested_sia_head">
01130           <data type="anyURI">
01131             <param name="maxLength">1024</param>
01132             <param name="pattern">rsync://.+</param>
01133           </data>
01134         </attribute>
01135       </optional>
01136       <zeroOrMore>
01137         <element name="certificate">
01138           <attribute name="cert_url">
01139             <data type="string">
01140               <param name="maxLength">4096</param>
01141             </data>
01142           </attribute>
01143           <optional>
01144             <attribute name="req_resource_set_as">
01145               <data type="string">
01146                 <param name="maxLength">512000</param>
01147                 <param name="pattern">[\-,0-9]*</param>
01148               </data>
01149             </attribute>
01150           </optional>
01151           <optional>
01152             <attribute name="req_resource_set_ipv4">
01153               <data type="string">
01154                 <param name="maxLength">512000</param>
01155                 <param name="pattern">[\-,/.0-9]*</param>
01156               </data>
01157             </attribute>
01158           </optional>
01159           <optional>
01160             <attribute name="req_resource_set_ipv6">
01161               <data type="string">
01162                 <param name="maxLength">512000</param>
01163                 <param name="pattern">[\-,/:0-9a-fA-F]*</param>
01164               </data>
01165             </attribute>
01166           </optional>
01167           <data type="base64Binary">
01168             <param name="maxLength">512000</param>
01169           </data>
01170         </element>
01171       </zeroOrMore>
01172       <element name="issuer">
01173         <data type="base64Binary">
01174           <param name="maxLength">512000</param>
01175         </data>
01176       </element>
01177     </element>
01178   </define>
01179   <define name="issue_request">
01180     <element name="request">
01181       <attribute name="class_name">
01182         <data type="token">
01183           <param name="maxLength">1024</param>
01184         </data>
01185       </attribute>
01186       <optional>
01187         <attribute name="req_resource_set_as">
01188           <data type="string">
01189             <param name="maxLength">512000</param>
01190             <param name="pattern">[\-,0-9]*</param>
01191           </data>
01192         </attribute>
01193       </optional>
01194       <optional>
01195         <attribute name="req_resource_set_ipv4">
01196           <data type="string">
01197             <param name="maxLength">512000</param>
01198             <param name="pattern">[\-,/.0-9]*</param>
01199           </data>
01200         </attribute>
01201       </optional>
01202       <optional>
01203         <attribute name="req_resource_set_ipv6">
01204           <data type="string">
01205             <param name="maxLength">512000</param>
01206             <param name="pattern">[\-,/:0-9a-fA-F]*</param>
01207           </data>
01208         </attribute>
01209       </optional>
01210       <data type="base64Binary">
01211         <param name="maxLength">512000</param>
01212       </data>
01213     </element>
01214   </define>
01215   <define name="issue_response">
01216     <ref name="class"/>
01217   </define>
01218   <define name="revoke_request">
01219     <ref name="revocation"/>
01220   </define>
01221   <define name="revoke_response">
01222     <ref name="revocation"/>
01223   </define>
01224   <define name="revocation">
01225     <element name="key">
01226       <attribute name="class_name">
01227         <data type="token">
01228           <param name="maxLength">1024</param>
01229         </data>
01230       </attribute>
01231       <attribute name="ski">
01232         <data type="token">
01233           <param name="maxLength">1024</param>
01234         </data>
01235       </attribute>
01236     </element>
01237   </define>
01238   <define name="error_response">
01239     <element name="status">
01240       <data type="positiveInteger">
01241         <param name="maxInclusive">999999999999999</param>
01242       </data>
01243     </element>
01244     <optional>
01245       <element name="description">
01246         <attribute name="xml:lang">
01247           <data type="language"/>
01248         </attribute>
01249         <data type="string">
01250           <param name="maxLength">1024</param>
01251         </data>
01252       </element>
01253     </optional>
01254   </define>
01255 </grammar>
01256 <!--
01257   Local Variables:
01258   indent-tabs-mode: nil
01259   End:
01260 -->
01261 '''))
01262 
01263 ## @var publication
01264 ## Parsed RelaxNG publication schema
01265 publication = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
01266 <!--
01267   $Id: publication-schema.rnc 3730 2011-03-21 12:42:43Z sra $
01268   
01269   RelaxNG Schema for RPKI publication protocol.
01270   
01271   libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so
01272   run the compact syntax through trang to get XML syntax.
01273   
01274   Copyright (C) 2009-2010  Internet Systems Consortium ("ISC")
01275   
01276   Permission to use, copy, modify, and distribute this software for any
01277   purpose with or without fee is hereby granted, provided that the above
01278   copyright notice and this permission notice appear in all copies.
01279   
01280   THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
01281   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
01282   AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
01283   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
01284   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
01285   OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
01286   PERFORMANCE OF THIS SOFTWARE.
01287   
01288   Portions copyright (C) 2007-2008  American Registry for Internet Numbers ("ARIN")
01289   
01290   Permission to use, copy, modify, and distribute this software for any
01291   purpose with or without fee is hereby granted, provided that the above
01292   copyright notice and this permission notice appear in all copies.
01293   
01294   THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
01295   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
01296   AND FITNESS.  IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
01297   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
01298   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
01299   OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
01300   PERFORMANCE OF THIS SOFTWARE.
01301 -->
01302 <grammar ns="http://www.hactrn.net/uris/rpki/publication-spec/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
01303   <!-- Top level PDU -->
01304   <start>
01305     <element name="msg">
01306       <attribute name="version">
01307         <data type="positiveInteger">
01308           <param name="maxInclusive">1</param>
01309         </data>
01310       </attribute>
01311       <choice>
01312         <group>
01313           <attribute name="type">
01314             <value>query</value>
01315           </attribute>
01316           <zeroOrMore>
01317             <ref name="query_elt"/>
01318           </zeroOrMore>
01319         </group>
01320         <group>
01321           <attribute name="type">
01322             <value>reply</value>
01323           </attribute>
01324           <zeroOrMore>
01325             <ref name="reply_elt"/>
01326           </zeroOrMore>
01327         </group>
01328       </choice>
01329     </element>
01330   </start>
01331   <!-- PDUs allowed in a query -->
01332   <define name="query_elt">
01333     <choice>
01334       <ref name="config_query"/>
01335       <ref name="client_query"/>
01336       <ref name="certificate_query"/>
01337       <ref name="crl_query"/>
01338       <ref name="manifest_query"/>
01339       <ref name="roa_query"/>
01340       <ref name="ghostbuster_query"/>
01341     </choice>
01342   </define>
01343   <!-- PDUs allowed in a reply -->
01344   <define name="reply_elt">
01345     <choice>
01346       <ref name="config_reply"/>
01347       <ref name="client_reply"/>
01348       <ref name="certificate_reply"/>
01349       <ref name="crl_reply"/>
01350       <ref name="manifest_reply"/>
01351       <ref name="roa_reply"/>
01352       <ref name="ghostbuster_reply"/>
01353       <ref name="report_error_reply"/>
01354     </choice>
01355   </define>
01356   <!-- Tag attributes for bulk operations -->
01357   <define name="tag">
01358     <attribute name="tag">
01359       <data type="token">
01360         <param name="maxLength">1024</param>
01361       </data>
01362     </attribute>
01363   </define>
01364   <!--
01365     Base64 encoded DER stuff
01366     base64 = xsd:base64Binary { maxLength="512000" }
01367     
01368     Sadly, it turns out that CRLs can in fact get longer than this for an active CA.
01369     Remove length limit for now, think about whether to put it back later.
01370   -->
01371   <define name="base64">
01372     <data type="base64Binary"/>
01373   </define>
01374   <!-- Publication URLs -->
01375   <define name="uri_t">
01376     <data type="anyURI">
01377       <param name="maxLength">4096</param>
01378     </data>
01379   </define>
01380   <define name="uri">
01381     <attribute name="uri">
01382       <ref name="uri_t"/>
01383     </attribute>
01384   </define>
01385   <!--
01386     Handles on remote objects (replaces passing raw SQL IDs).  NB:
01387     Unlike the up-down protocol, handles in this protocol allow "/" as a
01388     hierarchy delimiter.
01389   -->
01390   <define name="object_handle">
01391     <data type="string">
01392       <param name="maxLength">255</param>
01393       <param name="pattern">[\-_A-Za-z0-9/]*</param>
01394     </data>
01395   </define>
01396   <!--
01397     <config/> element (use restricted to repository operator)
01398     config_handle attribute, create, list, and destroy commands omitted deliberately, see code for details
01399   -->
01400   <define name="config_payload">
01401     <optional>
01402       <element name="bpki_crl">
01403         <ref name="base64"/>
01404       </element>
01405     </optional>
01406   </define>
01407   <define name="config_query" combine="choice">
01408     <element name="config">
01409       <attribute name="action">
01410         <value>set</value>
01411       </attribute>
01412       <optional>
01413         <ref name="tag"/>
01414       </optional>
01415       <ref name="config_payload"/>
01416     </element>
01417   </define>
01418   <define name="config_reply" combine="choice">
01419     <element name="config">
01420       <attribute name="action">
01421         <value>set</value>
01422       </attribute>
01423       <optional>
01424         <ref name="tag"/>
01425       </optional>
01426     </element>
01427   </define>
01428   <define name="config_query" combine="choice">
01429     <element name="config">
01430       <attribute name="action">
01431         <value>get</value>
01432       </attribute>
01433       <optional>
01434         <ref name="tag"/>
01435       </optional>
01436     </element>
01437   </define>
01438   <define name="config_reply" combine="choice">
01439     <element name="config">
01440       <attribute name="action">
01441         <value>get</value>
01442       </attribute>
01443       <optional>
01444         <ref name="tag"/>
01445       </optional>
01446       <ref name="config_payload"/>
01447     </element>
01448   </define>
01449   <!-- <client/> element (use restricted to repository operator) -->
01450   <define name="client_handle">
01451     <attribute name="client_handle">
01452       <ref name="object_handle"/>
01453     </attribute>
01454   </define>
01455   <define name="client_payload">
01456     <optional>
01457       <attribute name="base_uri">
01458         <ref name="uri_t"/>
01459       </attribute>
01460     </optional>
01461     <optional>
01462       <element name="bpki_cert">
01463         <ref name="base64"/>
01464       </element>
01465     </optional>
01466     <optional>
01467       <element name="bpki_glue">
01468         <ref name="base64"/>
01469       </element>
01470     </optional>
01471   </define>
01472   <define name="client_query" combine="choice">
01473     <element name="client">
01474       <attribute name="action">
01475         <value>create</value>
01476       </attribute>
01477       <optional>
01478         <ref name="tag"/>
01479       </optional>
01480       <ref name="client_handle"/>
01481       <ref name="client_payload"/>
01482     </element>
01483   </define>
01484   <define name="client_reply" combine="choice">
01485     <element name="client">
01486       <attribute name="action">
01487         <value>create</value>
01488       </attribute>
01489       <optional>
01490         <ref name="tag"/>
01491       </optional>
01492       <ref name="client_handle"/>
01493     </element>
01494   </define>
01495   <define name="client_query" combine="choice">
01496     <element name="client">
01497       <attribute name="action">
01498         <value>set</value>
01499       </attribute>
01500       <optional>
01501         <ref name="tag"/>
01502       </optional>
01503       <ref name="client_handle"/>
01504       <ref name="client_payload"/>
01505     </element>
01506   </define>
01507   <define name="client_reply" combine="choice">
01508     <element name="client">
01509       <attribute name="action">
01510         <value>set</value>
01511       </attribute>
01512       <optional>
01513         <ref name="tag"/>
01514       </optional>
01515       <ref name="client_handle"/>
01516     </element>
01517   </define>
01518   <define name="client_query" combine="choice">
01519     <element name="client">
01520       <attribute name="action">
01521         <value>get</value>
01522       </attribute>
01523       <optional>
01524         <ref name="tag"/>
01525       </optional>
01526       <ref name="client_handle"/>
01527     </element>
01528   </define>
01529   <define name="client_reply" combine="choice">
01530     <element name="client">
01531       <attribute name="action">
01532         <value>get</value>
01533       </attribute>
01534       <optional>
01535         <ref name="tag"/>
01536       </optional>
01537       <ref name="client_handle"/>
01538       <ref name="client_payload"/>
01539     </element>
01540   </define>
01541   <define name="client_query" combine="choice">
01542     <element name="client">
01543       <attribute name="action">
01544         <value>list</value>
01545       </attribute>
01546       <optional>
01547         <ref name="tag"/>
01548       </optional>
01549     </element>
01550   </define>
01551   <define name="client_reply" combine="choice">
01552     <element name="client">
01553       <attribute name="action">
01554         <value>list</value>
01555       </attribute>
01556       <optional>
01557         <ref name="tag"/>
01558       </optional>
01559       <ref name="client_handle"/>
01560       <ref name="client_payload"/>
01561     </element>
01562   </define>
01563   <define name="client_query" combine="choice">
01564     <element name="client">
01565       <attribute name="action">
01566         <value>destroy</value>
01567       </attribute>
01568       <optional>
01569         <ref name="tag"/>
01570       </optional>
01571       <ref name="client_handle"/>
01572     </element>
01573   </define>
01574   <define name="client_reply" combine="choice">
01575     <element name="client">
01576       <attribute name="action">
01577         <value>destroy</value>
01578       </attribute>
01579       <optional>
01580         <ref name="tag"/>
01581       </optional>
01582       <ref name="client_handle"/>
01583     </element>
01584   </define>
01585   <!-- <certificate/> element -->
01586   <define name="certificate_query" combine="choice">
01587     <element name="certificate">
01588       <attribute name="action">
01589         <value>publish</value>
01590       </attribute>
01591       <optional>
01592         <ref name="tag"/>
01593       </optional>
01594       <ref name="uri"/>
01595       <ref name="base64"/>
01596     </element>
01597   </define>
01598   <define name="certificate_reply" combine="choice">
01599     <element name="certificate">
01600       <attribute name="action">
01601         <value>publish</value>
01602       </attribute>
01603       <optional>
01604         <ref name="tag"/>
01605       </optional>
01606       <ref name="uri"/>
01607     </element>
01608   </define>
01609   <define name="certificate_query" combine="choice">
01610     <element name="certificate">
01611       <attribute name="action">
01612         <value>withdraw</value>
01613       </attribute>
01614       <optional>
01615         <ref name="tag"/>
01616       </optional>
01617       <ref name="uri"/>
01618     </element>
01619   </define>
01620   <define name="certificate_reply" combine="choice">
01621     <element name="certificate">
01622       <attribute name="action">
01623         <value>withdraw</value>
01624       </attribute>
01625       <optional>
01626         <ref name="tag"/>
01627       </optional>
01628       <ref name="uri"/>
01629     </element>
01630   </define>
01631   <!-- <crl/> element -->
01632   <define name="crl_query" combine="choice">
01633     <element name="crl">
01634       <attribute name="action">
01635         <value>publish</value>
01636       </attribute>
01637       <optional>
01638         <ref name="tag"/>
01639       </optional>
01640       <ref name="uri"/>
01641       <ref name="base64"/>
01642     </element>
01643   </define>
01644   <define name="crl_reply" combine="choice">
01645     <element name="crl">
01646       <attribute name="action">
01647         <value>publish</value>
01648       </attribute>
01649       <optional>
01650         <ref name="tag"/>
01651       </optional>
01652       <ref name="uri"/>
01653     </element>
01654   </define>
01655   <define name="crl_query" combine="choice">
01656     <element name="crl">
01657       <attribute name="action">
01658         <value>withdraw</value>
01659       </attribute>
01660       <optional>
01661         <ref name="tag"/>
01662       </optional>
01663       <ref name="uri"/>
01664     </element>
01665   </define>
01666   <define name="crl_reply" combine="choice">
01667     <element name="crl">
01668       <attribute name="action">
01669         <value>withdraw</value>
01670       </attribute>
01671       <optional>
01672         <ref name="tag"/>
01673       </optional>
01674       <ref name="uri"/>
01675     </element>
01676   </define>
01677   <!-- <manifest/> element -->
01678   <define name="manifest_query" combine="choice">
01679     <element name="manifest">
01680       <attribute name="action">
01681         <value>publish</value>
01682       </attribute>
01683       <optional>
01684         <ref name="tag"/>
01685       </optional>
01686       <ref name="uri"/>
01687       <ref name="base64"/>
01688     </element>
01689   </define>
01690   <define name="manifest_reply" combine="choice">
01691     <element name="manifest">
01692       <attribute name="action">
01693         <value>publish</value>
01694       </attribute>
01695       <optional>
01696         <ref name="tag"/>
01697       </optional>
01698       <ref name="uri"/>
01699     </element>
01700   </define>
01701   <define name="manifest_query" combine="choice">
01702     <element name="manifest">
01703       <attribute name="action">
01704         <value>withdraw</value>
01705       </attribute>
01706       <optional>
01707         <ref name="tag"/>
01708       </optional>
01709       <ref name="uri"/>
01710     </element>
01711   </define>
01712   <define name="manifest_reply" combine="choice">
01713     <element name="manifest">
01714       <attribute name="action">
01715         <value>withdraw</value>
01716       </attribute>
01717       <optional>
01718         <ref name="tag"/>
01719       </optional>
01720       <ref name="uri"/>
01721     </element>
01722   </define>
01723   <!-- <roa/> element -->
01724   <define name="roa_query" combine="choice">
01725     <element name="roa">
01726       <attribute name="action">
01727         <value>publish</value>
01728       </attribute>
01729       <optional>
01730         <ref name="tag"/>
01731       </optional>
01732       <ref name="uri"/>
01733       <ref name="base64"/>
01734     </element>
01735   </define>
01736   <define name="roa_reply" combine="choice">
01737     <element name="roa">
01738       <attribute name="action">
01739         <value>publish</value>
01740       </attribute>
01741       <optional>
01742         <ref name="tag"/>
01743       </optional>
01744       <ref name="uri"/>
01745     </element>
01746   </define>
01747   <define name="roa_query" combine="choice">
01748     <element name="roa">
01749       <attribute name="action">
01750         <value>withdraw</value>
01751       </attribute>
01752       <optional>
01753         <ref name="tag"/>
01754       </optional>
01755       <ref name="uri"/>
01756     </element>
01757   </define>
01758   <define name="roa_reply" combine="choice">
01759     <element name="roa">
01760       <attribute name="action">
01761         <value>withdraw</value>
01762       </attribute>
01763       <optional>
01764         <ref name="tag"/>
01765       </optional>
01766       <ref name="uri"/>
01767     </element>
01768   </define>
01769   <!-- <ghostbuster/> element -->
01770   <define name="ghostbuster_query" combine="choice">
01771     <element name="ghostbuster">
01772       <attribute name="action">
01773         <value>publish</value>
01774       </attribute>
01775       <optional>
01776         <ref name="tag"/>
01777       </optional>
01778       <ref name="uri"/>
01779       <ref name="base64"/>
01780     </element>
01781   </define>
01782   <define name="ghostbuster_reply" combine="choice">
01783     <element name="ghostbuster">
01784       <attribute name="action">
01785         <value>publish</value>
01786       </attribute>
01787       <optional>
01788         <ref name="tag"/>
01789       </optional>
01790       <ref name="uri"/>
01791     </element>
01792   </define>
01793   <define name="ghostbuster_query" combine="choice">
01794     <element name="ghostbuster">
01795       <attribute name="action">
01796         <value>withdraw</value>
01797       </attribute>
01798       <optional>
01799         <ref name="tag"/>
01800       </optional>
01801       <ref name="uri"/>
01802     </element>
01803   </define>
01804   <define name="ghostbuster_reply" combine="choice">
01805     <element name="ghostbuster">
01806       <attribute name="action">
01807         <value>withdraw</value>
01808       </attribute>
01809       <optional>
01810         <ref name="tag"/>
01811       </optional>
01812       <ref name="uri"/>
01813     </element>
01814   </define>
01815   <!-- <report_error/> element -->
01816   <define name="error">
01817     <data type="token">
01818       <param name="maxLength">1024</param>
01819     </data>
01820   </define>
01821   <define name="report_error_reply">
01822     <element name="report_error">
01823       <optional>
01824         <ref name="tag"/>
01825       </optional>
01826       <attribute name="error_code">
01827         <ref name="error"/>
01828       </attribute>
01829       <optional>
01830         <data type="string">
01831           <param name="maxLength">512000</param>
01832         </data>
01833       </optional>
01834     </element>
01835   </define>
01836 </grammar>
01837 <!--
01838   Local Variables:
01839   indent-tabs-mode: nil
01840   End:
01841 -->
01842 '''))
01843 
 All Classes Namespaces Files Functions Variables