RPKI Engine  1.0
relaxng.py (3914)
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 3913 2011-07-01 17:04:18Z sra $
01014   
01015   RelaxNG Scheme for up-down protocol, extracted from
01016   draft-ietf-sidr-rescerts-provisioning-10.txt.
01017   
01018   libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so
01019   run the compact syntax through trang to get XML syntax.
01020 -->
01021 <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">
01022   <define name="resource_set_as">
01023     <data type="string">
01024       <param name="maxLength">512000</param>
01025       <param name="pattern">[\-,0-9]*</param>
01026     </data>
01027   </define>
01028   <define name="resource_set_ip4">
01029     <data type="string">
01030       <param name="maxLength">512000</param>
01031       <param name="pattern">[\-,/.0-9]*</param>
01032     </data>
01033   </define>
01034   <define name="resource_set_ip6">
01035     <data type="string">
01036       <param name="maxLength">512000</param>
01037       <param name="pattern">[\-,/:0-9a-fA-F]*</param>
01038     </data>
01039   </define>
01040   <define name="class_name">
01041     <data type="token">
01042       <param name="minLength">1</param>
01043       <param name="maxLength">1024</param>
01044     </data>
01045   </define>
01046   <define name="ski">
01047     <data type="token">
01048       <param name="minLength">27</param>
01049       <param name="maxLength">1024</param>
01050     </data>
01051   </define>
01052   <define name="label">
01053     <data type="token">
01054       <param name="minLength">1</param>
01055       <param name="maxLength">1024</param>
01056     </data>
01057   </define>
01058   <define name="cert_url">
01059     <data type="string">
01060       <param name="minLength">10</param>
01061       <param name="maxLength">4096</param>
01062     </data>
01063   </define>
01064   <define name="base64_binary">
01065     <data type="base64Binary">
01066       <param name="minLength">4</param>
01067       <param name="maxLength">512000</param>
01068     </data>
01069   </define>
01070   <start>
01071     <element name="message">
01072       <attribute name="version">
01073         <data type="positiveInteger">
01074           <param name="maxInclusive">1</param>
01075         </data>
01076       </attribute>
01077       <attribute name="sender">
01078         <ref name="label"/>
01079       </attribute>
01080       <attribute name="recipient">
01081         <ref name="label"/>
01082       </attribute>
01083       <ref name="payload"/>
01084     </element>
01085   </start>
01086   <define name="payload" combine="choice">
01087     <attribute name="type">
01088       <value>list</value>
01089     </attribute>
01090     <ref name="list_request"/>
01091   </define>
01092   <define name="payload" combine="choice">
01093     <attribute name="type">
01094       <value>list_response</value>
01095     </attribute>
01096     <ref name="list_response"/>
01097   </define>
01098   <define name="payload" combine="choice">
01099     <attribute name="type">
01100       <value>issue</value>
01101     </attribute>
01102     <ref name="issue_request"/>
01103   </define>
01104   <define name="payload" combine="choice">
01105     <attribute name="type">
01106       <value>issue_response</value>
01107     </attribute>
01108     <ref name="issue_response"/>
01109   </define>
01110   <define name="payload" combine="choice">
01111     <attribute name="type">
01112       <value>revoke</value>
01113     </attribute>
01114     <ref name="revoke_request"/>
01115   </define>
01116   <define name="payload" combine="choice">
01117     <attribute name="type">
01118       <value>revoke_response</value>
01119     </attribute>
01120     <ref name="revoke_response"/>
01121   </define>
01122   <define name="payload" combine="choice">
01123     <attribute name="type">
01124       <value>error_response</value>
01125     </attribute>
01126     <ref name="error_response"/>
01127   </define>
01128   <define name="list_request">
01129     <empty/>
01130   </define>
01131   <define name="list_response">
01132     <zeroOrMore>
01133       <ref name="class"/>
01134     </zeroOrMore>
01135   </define>
01136   <define name="class">
01137     <element name="class">
01138       <attribute name="class_name">
01139         <ref name="class_name"/>
01140       </attribute>
01141       <attribute name="cert_url">
01142         <ref name="cert_url"/>
01143       </attribute>
01144       <attribute name="resource_set_as">
01145         <ref name="resource_set_as"/>
01146       </attribute>
01147       <attribute name="resource_set_ipv4">
01148         <ref name="resource_set_ip4"/>
01149       </attribute>
01150       <attribute name="resource_set_ipv6">
01151         <ref name="resource_set_ip6"/>
01152       </attribute>
01153       <attribute name="resource_set_notafter">
01154         <data type="dateTime"/>
01155       </attribute>
01156       <optional>
01157         <attribute name="suggested_sia_head">
01158           <data type="anyURI">
01159             <param name="maxLength">1024</param>
01160             <param name="pattern">rsync://.+</param>
01161           </data>
01162         </attribute>
01163       </optional>
01164       <zeroOrMore>
01165         <element name="certificate">
01166           <attribute name="cert_url">
01167             <ref name="cert_url"/>
01168           </attribute>
01169           <optional>
01170             <attribute name="req_resource_set_as">
01171               <ref name="resource_set_as"/>
01172             </attribute>
01173           </optional>
01174           <optional>
01175             <attribute name="req_resource_set_ipv4">
01176               <ref name="resource_set_ip4"/>
01177             </attribute>
01178           </optional>
01179           <optional>
01180             <attribute name="req_resource_set_ipv6">
01181               <ref name="resource_set_ip6"/>
01182             </attribute>
01183           </optional>
01184           <ref name="base64_binary"/>
01185         </element>
01186       </zeroOrMore>
01187       <element name="issuer">
01188         <ref name="base64_binary"/>
01189       </element>
01190     </element>
01191   </define>
01192   <define name="issue_request">
01193     <element name="request">
01194       <attribute name="class_name">
01195         <ref name="class_name"/>
01196       </attribute>
01197       <optional>
01198         <attribute name="req_resource_set_as">
01199           <ref name="resource_set_as"/>
01200         </attribute>
01201       </optional>
01202       <optional>
01203         <attribute name="req_resource_set_ipv4">
01204           <ref name="resource_set_ip4"/>
01205         </attribute>
01206       </optional>
01207       <optional>
01208         <attribute name="req_resource_set_ipv6">
01209           <ref name="resource_set_ip6"/>
01210         </attribute>
01211       </optional>
01212       <ref name="base64_binary"/>
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         <ref name="class_name"/>
01228       </attribute>
01229       <attribute name="ski">
01230         <ref name="ski"/>
01231       </attribute>
01232     </element>
01233   </define>
01234   <define name="error_response">
01235     <element name="status">
01236       <data type="positiveInteger">
01237         <param name="maxInclusive">9999</param>
01238       </data>
01239     </element>
01240     <zeroOrMore>
01241       <element name="description">
01242         <attribute name="xml:lang">
01243           <data type="language"/>
01244         </attribute>
01245         <data type="string">
01246           <param name="maxLength">1024</param>
01247         </data>
01248       </element>
01249     </zeroOrMore>
01250   </define>
01251 </grammar>
01252 <!--
01253   Local Variables:
01254   indent-tabs-mode: nil
01255   comment-start: "# "
01256   comment-start-skip: "#[ \t]*"
01257   End:
01258 -->
01259 '''))
01260 
01261 ## @var publication
01262 ## Parsed RelaxNG publication schema
01263 publication = lxml.etree.RelaxNG(lxml.etree.fromstring('''<?xml version="1.0" encoding="UTF-8"?>
01264 <!--
01265   $Id: publication-schema.rnc 3730 2011-03-21 12:42:43Z sra $
01266   
01267   RelaxNG Schema for RPKI publication protocol.
01268   
01269   libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so
01270   run the compact syntax through trang to get XML syntax.
01271   
01272   Copyright (C) 2009-2010  Internet Systems Consortium ("ISC")
01273   
01274   Permission to use, copy, modify, and distribute this software for any
01275   purpose with or without fee is hereby granted, provided that the above
01276   copyright notice and this permission notice appear in all copies.
01277   
01278   THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
01279   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
01280   AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
01281   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
01282   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
01283   OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
01284   PERFORMANCE OF THIS SOFTWARE.
01285   
01286   Portions copyright (C) 2007-2008  American Registry for Internet Numbers ("ARIN")
01287   
01288   Permission to use, copy, modify, and distribute this software for any
01289   purpose with or without fee is hereby granted, provided that the above
01290   copyright notice and this permission notice appear in all copies.
01291   
01292   THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
01293   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
01294   AND FITNESS.  IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
01295   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
01296   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
01297   OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
01298   PERFORMANCE OF THIS SOFTWARE.
01299 -->
01300 <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">
01301   <!-- Top level PDU -->
01302   <start>
01303     <element name="msg">
01304       <attribute name="version">
01305         <data type="positiveInteger">
01306           <param name="maxInclusive">1</param>
01307         </data>
01308       </attribute>
01309       <choice>
01310         <group>
01311           <attribute name="type">
01312             <value>query</value>
01313           </attribute>
01314           <zeroOrMore>
01315             <ref name="query_elt"/>
01316           </zeroOrMore>
01317         </group>
01318         <group>
01319           <attribute name="type">
01320             <value>reply</value>
01321           </attribute>
01322           <zeroOrMore>
01323             <ref name="reply_elt"/>
01324           </zeroOrMore>
01325         </group>
01326       </choice>
01327     </element>
01328   </start>
01329   <!-- PDUs allowed in a query -->
01330   <define name="query_elt">
01331     <choice>
01332       <ref name="config_query"/>
01333       <ref name="client_query"/>
01334       <ref name="certificate_query"/>
01335       <ref name="crl_query"/>
01336       <ref name="manifest_query"/>
01337       <ref name="roa_query"/>
01338       <ref name="ghostbuster_query"/>
01339     </choice>
01340   </define>
01341   <!-- PDUs allowed in a reply -->
01342   <define name="reply_elt">
01343     <choice>
01344       <ref name="config_reply"/>
01345       <ref name="client_reply"/>
01346       <ref name="certificate_reply"/>
01347       <ref name="crl_reply"/>
01348       <ref name="manifest_reply"/>
01349       <ref name="roa_reply"/>
01350       <ref name="ghostbuster_reply"/>
01351       <ref name="report_error_reply"/>
01352     </choice>
01353   </define>
01354   <!-- Tag attributes for bulk operations -->
01355   <define name="tag">
01356     <attribute name="tag">
01357       <data type="token">
01358         <param name="maxLength">1024</param>
01359       </data>
01360     </attribute>
01361   </define>
01362   <!--
01363     Base64 encoded DER stuff
01364     base64 = xsd:base64Binary { maxLength="512000" }
01365     
01366     Sadly, it turns out that CRLs can in fact get longer than this for an active CA.
01367     Remove length limit for now, think about whether to put it back later.
01368   -->
01369   <define name="base64">
01370     <data type="base64Binary"/>
01371   </define>
01372   <!-- Publication URLs -->
01373   <define name="uri_t">
01374     <data type="anyURI">
01375       <param name="maxLength">4096</param>
01376     </data>
01377   </define>
01378   <define name="uri">
01379     <attribute name="uri">
01380       <ref name="uri_t"/>
01381     </attribute>
01382   </define>
01383   <!--
01384     Handles on remote objects (replaces passing raw SQL IDs).  NB:
01385     Unlike the up-down protocol, handles in this protocol allow "/" as a
01386     hierarchy delimiter.
01387   -->
01388   <define name="object_handle">
01389     <data type="string">
01390       <param name="maxLength">255</param>
01391       <param name="pattern">[\-_A-Za-z0-9/]*</param>
01392     </data>
01393   </define>
01394   <!--
01395     <config/> element (use restricted to repository operator)
01396     config_handle attribute, create, list, and destroy commands omitted deliberately, see code for details
01397   -->
01398   <define name="config_payload">
01399     <optional>
01400       <element name="bpki_crl">
01401         <ref name="base64"/>
01402       </element>
01403     </optional>
01404   </define>
01405   <define name="config_query" combine="choice">
01406     <element name="config">
01407       <attribute name="action">
01408         <value>set</value>
01409       </attribute>
01410       <optional>
01411         <ref name="tag"/>
01412       </optional>
01413       <ref name="config_payload"/>
01414     </element>
01415   </define>
01416   <define name="config_reply" combine="choice">
01417     <element name="config">
01418       <attribute name="action">
01419         <value>set</value>
01420       </attribute>
01421       <optional>
01422         <ref name="tag"/>
01423       </optional>
01424     </element>
01425   </define>
01426   <define name="config_query" combine="choice">
01427     <element name="config">
01428       <attribute name="action">
01429         <value>get</value>
01430       </attribute>
01431       <optional>
01432         <ref name="tag"/>
01433       </optional>
01434     </element>
01435   </define>
01436   <define name="config_reply" combine="choice">
01437     <element name="config">
01438       <attribute name="action">
01439         <value>get</value>
01440       </attribute>
01441       <optional>
01442         <ref name="tag"/>
01443       </optional>
01444       <ref name="config_payload"/>
01445     </element>
01446   </define>
01447   <!-- <client/> element (use restricted to repository operator) -->
01448   <define name="client_handle">
01449     <attribute name="client_handle">
01450       <ref name="object_handle"/>
01451     </attribute>
01452   </define>
01453   <define name="client_payload">
01454     <optional>
01455       <attribute name="base_uri">
01456         <ref name="uri_t"/>
01457       </attribute>
01458     </optional>
01459     <optional>
01460       <element name="bpki_cert">
01461         <ref name="base64"/>
01462       </element>
01463     </optional>
01464     <optional>
01465       <element name="bpki_glue">
01466         <ref name="base64"/>
01467       </element>
01468     </optional>
01469   </define>
01470   <define name="client_query" combine="choice">
01471     <element name="client">
01472       <attribute name="action">
01473         <value>create</value>
01474       </attribute>
01475       <optional>
01476         <ref name="tag"/>
01477       </optional>
01478       <ref name="client_handle"/>
01479       <ref name="client_payload"/>
01480     </element>
01481   </define>
01482   <define name="client_reply" combine="choice">
01483     <element name="client">
01484       <attribute name="action">
01485         <value>create</value>
01486       </attribute>
01487       <optional>
01488         <ref name="tag"/>
01489       </optional>
01490       <ref name="client_handle"/>
01491     </element>
01492   </define>
01493   <define name="client_query" combine="choice">
01494     <element name="client">
01495       <attribute name="action">
01496         <value>set</value>
01497       </attribute>
01498       <optional>
01499         <ref name="tag"/>
01500       </optional>
01501       <ref name="client_handle"/>
01502       <ref name="client_payload"/>
01503     </element>
01504   </define>
01505   <define name="client_reply" combine="choice">
01506     <element name="client">
01507       <attribute name="action">
01508         <value>set</value>
01509       </attribute>
01510       <optional>
01511         <ref name="tag"/>
01512       </optional>
01513       <ref name="client_handle"/>
01514     </element>
01515   </define>
01516   <define name="client_query" combine="choice">
01517     <element name="client">
01518       <attribute name="action">
01519         <value>get</value>
01520       </attribute>
01521       <optional>
01522         <ref name="tag"/>
01523       </optional>
01524       <ref name="client_handle"/>
01525     </element>
01526   </define>
01527   <define name="client_reply" combine="choice">
01528     <element name="client">
01529       <attribute name="action">
01530         <value>get</value>
01531       </attribute>
01532       <optional>
01533         <ref name="tag"/>
01534       </optional>
01535       <ref name="client_handle"/>
01536       <ref name="client_payload"/>
01537     </element>
01538   </define>
01539   <define name="client_query" combine="choice">
01540     <element name="client">
01541       <attribute name="action">
01542         <value>list</value>
01543       </attribute>
01544       <optional>
01545         <ref name="tag"/>
01546       </optional>
01547     </element>
01548   </define>
01549   <define name="client_reply" combine="choice">
01550     <element name="client">
01551       <attribute name="action">
01552         <value>list</value>
01553       </attribute>
01554       <optional>
01555         <ref name="tag"/>
01556       </optional>
01557       <ref name="client_handle"/>
01558       <ref name="client_payload"/>
01559     </element>
01560   </define>
01561   <define name="client_query" combine="choice">
01562     <element name="client">
01563       <attribute name="action">
01564         <value>destroy</value>
01565       </attribute>
01566       <optional>
01567         <ref name="tag"/>
01568       </optional>
01569       <ref name="client_handle"/>
01570     </element>
01571   </define>
01572   <define name="client_reply" combine="choice">
01573     <element name="client">
01574       <attribute name="action">
01575         <value>destroy</value>
01576       </attribute>
01577       <optional>
01578         <ref name="tag"/>
01579       </optional>
01580       <ref name="client_handle"/>
01581     </element>
01582   </define>
01583   <!-- <certificate/> element -->
01584   <define name="certificate_query" combine="choice">
01585     <element name="certificate">
01586       <attribute name="action">
01587         <value>publish</value>
01588       </attribute>
01589       <optional>
01590         <ref name="tag"/>
01591       </optional>
01592       <ref name="uri"/>
01593       <ref name="base64"/>
01594     </element>
01595   </define>
01596   <define name="certificate_reply" combine="choice">
01597     <element name="certificate">
01598       <attribute name="action">
01599         <value>publish</value>
01600       </attribute>
01601       <optional>
01602         <ref name="tag"/>
01603       </optional>
01604       <ref name="uri"/>
01605     </element>
01606   </define>
01607   <define name="certificate_query" combine="choice">
01608     <element name="certificate">
01609       <attribute name="action">
01610         <value>withdraw</value>
01611       </attribute>
01612       <optional>
01613         <ref name="tag"/>
01614       </optional>
01615       <ref name="uri"/>
01616     </element>
01617   </define>
01618   <define name="certificate_reply" combine="choice">
01619     <element name="certificate">
01620       <attribute name="action">
01621         <value>withdraw</value>
01622       </attribute>
01623       <optional>
01624         <ref name="tag"/>
01625       </optional>
01626       <ref name="uri"/>
01627     </element>
01628   </define>
01629   <!-- <crl/> element -->
01630   <define name="crl_query" combine="choice">
01631     <element name="crl">
01632       <attribute name="action">
01633         <value>publish</value>
01634       </attribute>
01635       <optional>
01636         <ref name="tag"/>
01637       </optional>
01638       <ref name="uri"/>
01639       <ref name="base64"/>
01640     </element>
01641   </define>
01642   <define name="crl_reply" combine="choice">
01643     <element name="crl">
01644       <attribute name="action">
01645         <value>publish</value>
01646       </attribute>
01647       <optional>
01648         <ref name="tag"/>
01649       </optional>
01650       <ref name="uri"/>
01651     </element>
01652   </define>
01653   <define name="crl_query" combine="choice">
01654     <element name="crl">
01655       <attribute name="action">
01656         <value>withdraw</value>
01657       </attribute>
01658       <optional>
01659         <ref name="tag"/>
01660       </optional>
01661       <ref name="uri"/>
01662     </element>
01663   </define>
01664   <define name="crl_reply" combine="choice">
01665     <element name="crl">
01666       <attribute name="action">
01667         <value>withdraw</value>
01668       </attribute>
01669       <optional>
01670         <ref name="tag"/>
01671       </optional>
01672       <ref name="uri"/>
01673     </element>
01674   </define>
01675   <!-- <manifest/> element -->
01676   <define name="manifest_query" combine="choice">
01677     <element name="manifest">
01678       <attribute name="action">
01679         <value>publish</value>
01680       </attribute>
01681       <optional>
01682         <ref name="tag"/>
01683       </optional>
01684       <ref name="uri"/>
01685       <ref name="base64"/>
01686     </element>
01687   </define>
01688   <define name="manifest_reply" combine="choice">
01689     <element name="manifest">
01690       <attribute name="action">
01691         <value>publish</value>
01692       </attribute>
01693       <optional>
01694         <ref name="tag"/>
01695       </optional>
01696       <ref name="uri"/>
01697     </element>
01698   </define>
01699   <define name="manifest_query" combine="choice">
01700     <element name="manifest">
01701       <attribute name="action">
01702         <value>withdraw</value>
01703       </attribute>
01704       <optional>
01705         <ref name="tag"/>
01706       </optional>
01707       <ref name="uri"/>
01708     </element>
01709   </define>
01710   <define name="manifest_reply" combine="choice">
01711     <element name="manifest">
01712       <attribute name="action">
01713         <value>withdraw</value>
01714       </attribute>
01715       <optional>
01716         <ref name="tag"/>
01717       </optional>
01718       <ref name="uri"/>
01719     </element>
01720   </define>
01721   <!-- <roa/> element -->
01722   <define name="roa_query" combine="choice">
01723     <element name="roa">
01724       <attribute name="action">
01725         <value>publish</value>
01726       </attribute>
01727       <optional>
01728         <ref name="tag"/>
01729       </optional>
01730       <ref name="uri"/>
01731       <ref name="base64"/>
01732     </element>
01733   </define>
01734   <define name="roa_reply" combine="choice">
01735     <element name="roa">
01736       <attribute name="action">
01737         <value>publish</value>
01738       </attribute>
01739       <optional>
01740         <ref name="tag"/>
01741       </optional>
01742       <ref name="uri"/>
01743     </element>
01744   </define>
01745   <define name="roa_query" combine="choice">
01746     <element name="roa">
01747       <attribute name="action">
01748         <value>withdraw</value>
01749       </attribute>
01750       <optional>
01751         <ref name="tag"/>
01752       </optional>
01753       <ref name="uri"/>
01754     </element>
01755   </define>
01756   <define name="roa_reply" combine="choice">
01757     <element name="roa">
01758       <attribute name="action">
01759         <value>withdraw</value>
01760       </attribute>
01761       <optional>
01762         <ref name="tag"/>
01763       </optional>
01764       <ref name="uri"/>
01765     </element>
01766   </define>
01767   <!-- <ghostbuster/> element -->
01768   <define name="ghostbuster_query" combine="choice">
01769     <element name="ghostbuster">
01770       <attribute name="action">
01771         <value>publish</value>
01772       </attribute>
01773       <optional>
01774         <ref name="tag"/>
01775       </optional>
01776       <ref name="uri"/>
01777       <ref name="base64"/>
01778     </element>
01779   </define>
01780   <define name="ghostbuster_reply" combine="choice">
01781     <element name="ghostbuster">
01782       <attribute name="action">
01783         <value>publish</value>
01784       </attribute>
01785       <optional>
01786         <ref name="tag"/>
01787       </optional>
01788       <ref name="uri"/>
01789     </element>
01790   </define>
01791   <define name="ghostbuster_query" combine="choice">
01792     <element name="ghostbuster">
01793       <attribute name="action">
01794         <value>withdraw</value>
01795       </attribute>
01796       <optional>
01797         <ref name="tag"/>
01798       </optional>
01799       <ref name="uri"/>
01800     </element>
01801   </define>
01802   <define name="ghostbuster_reply" combine="choice">
01803     <element name="ghostbuster">
01804       <attribute name="action">
01805         <value>withdraw</value>
01806       </attribute>
01807       <optional>
01808         <ref name="tag"/>
01809       </optional>
01810       <ref name="uri"/>
01811     </element>
01812   </define>
01813   <!-- <report_error/> element -->
01814   <define name="error">
01815     <data type="token">
01816       <param name="maxLength">1024</param>
01817     </data>
01818   </define>
01819   <define name="report_error_reply">
01820     <element name="report_error">
01821       <optional>
01822         <ref name="tag"/>
01823       </optional>
01824       <attribute name="error_code">
01825         <ref name="error"/>
01826       </attribute>
01827       <optional>
01828         <data type="string">
01829           <param name="maxLength">512000</param>
01830         </data>
01831       </optional>
01832     </element>
01833   </define>
01834 </grammar>
01835 <!--
01836   Local Variables:
01837   indent-tabs-mode: nil
01838   End:
01839 -->
01840 '''))
01841 
 All Classes Namespaces Files Functions Variables Properties