# $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: