RPKI Engine
1.0
|
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