# $Id$ # # RelaxNG schema for MyRPKI XML messages. # # This message protocol is on its way out, as we're in the process of # moving on from the user interface model that produced it, but even # after we finish replacing it we'll still need the schema for a while # to validate old messages when upgrading. # # libxml2 (including xmllint) only groks the XML syntax of RelaxNG, so # run the compact syntax through trang to get XML syntax. # # Copyright (C) 2009-2011 Internet Systems Consortium ("ISC") # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. default namespace = "http://www.hactrn.net/uris/rpki/myrpki/" version = "2" base64 = xsd:base64Binary { maxLength="512000" } object_handle = xsd:string { maxLength="255" pattern="[\-_A-Za-z0-9]+" } pubd_handle = xsd:string { maxLength="255" pattern="[\-_A-Za-z0-9/]+" } uri = xsd:anyURI { maxLength="4096" } asn = xsd:positiveInteger asn_list = xsd:string { maxLength="512000" pattern="[\-,0-9]+" } ipv4_list = xsd:string { maxLength="512000" pattern="[\-,0-9/.]+" } ipv6_list = xsd:string { maxLength="512000" pattern="[\-,0-9/:a-fA-F]+" } timestamp = xsd:dateTime { pattern=".*Z" } # Message formate used between configure_resources and # configure_daemons. start |= element myrpki { attribute version { version }, attribute handle { object_handle }, attribute service_uri { uri }?, element roa_request { attribute asn { asn }, attribute v4 { ipv4_list }, attribute v6 { ipv6_list } }*, element child { attribute handle { object_handle }, attribute valid_until { timestamp }, attribute asns { asn_list }?, attribute v4 { ipv4_list }?, attribute v6 { ipv6_list }?, element bpki_certificate { base64 }? }*, element parent { attribute handle { object_handle }, attribute service_uri { uri }?, attribute myhandle { object_handle }?, attribute sia_base { uri }?, element bpki_cms_certificate { base64 }? }*, element repository { attribute handle { object_handle }, attribute service_uri { uri }?, element bpki_certificate { base64 }? }*, element bpki_ca_certificate { base64 }?, element bpki_crl { base64 }?, element bpki_bsc_certificate { base64 }?, element bpki_bsc_pkcs10 { base64 }? } # Format of an identity.xml file. start |= element identity { attribute version { version }, attribute handle { object_handle }, element bpki_ta { base64 } } # Format of element used in referrals. The Base64 # text is a (q. v.) element signed with CMS. authorization = element authorization { attribute referrer { pubd_handle }, base64 } # Format of element used in referrals. contact_info = element contact_info { attribute uri { uri }?, xsd:string } # Variant payload portion of a element. repository_payload = ( (attribute type { "none" }) | (attribute type { "offer" }) | (attribute type { "referral" }, authorization, contact_info) ) # element (response from configure_child). start |= element parent { attribute version { version }, attribute valid_until { timestamp }?, attribute service_uri { uri }?, attribute child_handle { object_handle }, attribute parent_handle { object_handle }, element bpki_resource_ta { base64 }, element bpki_child_ta { base64 }, element repository { repository_payload }? } # element, types offer and referral # (input to configure_publication_client). start |= element repository { attribute version { version }, attribute handle { object_handle }, attribute parent_handle { object_handle }, repository_payload, element bpki_client_ta { base64 } } # element, confirmation type (output of # configure_publication_client). start |= element repository { attribute version { version }, attribute type { "confirmed" }, attribute parent_handle { object_handle }, attribute client_handle { pubd_handle }, attribute service_uri { uri }, attribute sia_base { uri }, element bpki_server_ta { base64 }, element bpki_client_ta { base64 }, authorization?, contact_info? } # element. This is the entirety of a separate message # which is signed with CMS then included ase the Base64 content of an # element in the main message. start |= element referral { attribute version { version }, attribute authorized_sia_base { uri }, base64 } # Local Variables: # indent-tabs-mode: nil # comment-start: "# " # comment-start-skip: "#[ \t]*" # End: