# $Id$ # # RelaxNG schema for RPKI publication protocol, from current I-D. # # Copyright (c) 2014 IETF Trust and the persons identified as authors # of the code. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # * Neither the name of Internet Society, IETF or IETF Trust, nor the # names of specific contributors, may be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. default namespace = "http://www.hactrn.net/uris/rpki/publication-spec/" # This is version 3 of the protocol. version = "3" # Top level PDU is either a query or a reply. start |= element msg { attribute version { version }, attribute type { "query" }, query_elt* } start |= element msg { attribute version { version }, attribute type { "reply" }, reply_elt* } # PDUs allowed in queries and replies. query_elt = publish_query | withdraw_query | list_query reply_elt = publish_reply | withdraw_reply | list_reply | report_error_reply # Tag attributes for bulk operations. tag = attribute tag { xsd:token { maxLength="1024" } } # Base64 encoded DER stuff. base64 = xsd:base64Binary # Publication URIs. uri = attribute uri { xsd:anyURI { maxLength="4096" } } # Digest of objects being withdrawn hash = attribute hash { xsd:string { pattern = "[0-9a-fA-F]+" } } # Error codes. error = xsd:token { maxLength="1024" } # element publish_query = element publish { tag?, uri, hash?, base64 } publish_reply = element publish { tag?, uri } # element withdraw_query = element withdraw { tag?, uri, hash } withdraw_reply = element withdraw { tag?, uri } # element list_query = element list { tag? } list_reply = element list { tag?, uri, hash } # element report_error_reply = element report_error { tag?, attribute error_code { error }, xsd:string { maxLength="512000" }? } # Local Variables: # indent-tabs-mode: nil # comment-start: "# " # comment-start-skip: "#[ \t]*" # End: