Add schema errata.
[shibboleth/cpp-xmltooling.git] / schemas / xmldsig-core-schema.xsd
1 <?xml version="1.0" encoding="utf-8"?>\r
2 \r
3 <!-- Schema for XML Signatures\r
4     http://www.w3.org/2000/09/xmldsig#\r
5     $Revision: 1.2 $ on $Date: 2005/06/03 03:09:24 $ by $Author: cantor $\r
6 \r
7     Copyright 2001 The Internet Society and W3C (Massachusetts Institute\r
8     of Technology, Institut National de Recherche en Informatique et en\r
9     Automatique, Keio University). All Rights Reserved.\r
10     http://www.w3.org/Consortium/Legal/\r
11 \r
12     This document is governed by the W3C Software License [1] as described\r
13     in the FAQ [2].\r
14 \r
15     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\r
16     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\r
17 -->\r
18 \r
19 \r
20 <schema xmlns="http://www.w3.org/2001/XMLSchema"\r
21         xmlns:ds="http://www.w3.org/2000/09/xmldsig#"\r
22         targetNamespace="http://www.w3.org/2000/09/xmldsig#"\r
23         version="0.1" elementFormDefault="qualified"> \r
24 \r
25 <!-- Basic Types Defined for Signatures -->\r
26 \r
27 <simpleType name="CryptoBinary">\r
28   <restriction base="base64Binary">\r
29   </restriction>\r
30 </simpleType>\r
31 \r
32 <!-- Start Signature -->\r
33 \r
34 <element name="Signature" type="ds:SignatureType"/>\r
35 <complexType name="SignatureType">\r
36   <sequence> \r
37     <element ref="ds:SignedInfo"/> \r
38     <element ref="ds:SignatureValue"/> \r
39     <element ref="ds:KeyInfo" minOccurs="0"/> \r
40     <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> \r
41   </sequence>  \r
42   <attribute name="Id" type="ID" use="optional"/>\r
43 </complexType>\r
44 \r
45   <element name="SignatureValue" type="ds:SignatureValueType"/> \r
46   <complexType name="SignatureValueType">\r
47     <simpleContent>\r
48       <extension base="base64Binary">\r
49         <attribute name="Id" type="ID" use="optional"/>\r
50       </extension>\r
51     </simpleContent>\r
52   </complexType>\r
53 \r
54 <!-- Start SignedInfo -->\r
55 \r
56 <element name="SignedInfo" type="ds:SignedInfoType"/>\r
57 <complexType name="SignedInfoType">\r
58   <sequence> \r
59     <element ref="ds:CanonicalizationMethod"/> \r
60     <element ref="ds:SignatureMethod"/> \r
61     <element ref="ds:Reference" maxOccurs="unbounded"/> \r
62   </sequence>  \r
63   <attribute name="Id" type="ID" use="optional"/> \r
64 </complexType>\r
65 \r
66   <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> \r
67   <complexType name="CanonicalizationMethodType" mixed="true">\r
68     <sequence>\r
69       <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>\r
70       <!-- (0,unbounded) elements from (1,1) namespace -->\r
71     </sequence>\r
72     <attribute name="Algorithm" type="anyURI" use="required"/> \r
73   </complexType>\r
74 \r
75   <element name="SignatureMethod" type="ds:SignatureMethodType"/>\r
76   <complexType name="SignatureMethodType" mixed="true">\r
77     <sequence>\r
78       <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>\r
79       <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>\r
80       <!-- (0,unbounded) elements from (1,1) external namespace -->\r
81     </sequence>\r
82     <attribute name="Algorithm" type="anyURI" use="required"/> \r
83   </complexType>\r
84 \r
85 <!-- Start Reference -->\r
86 \r
87 <element name="Reference" type="ds:ReferenceType"/>\r
88 <complexType name="ReferenceType">\r
89   <sequence> \r
90     <element ref="ds:Transforms" minOccurs="0"/> \r
91     <element ref="ds:DigestMethod"/> \r
92     <element ref="ds:DigestValue"/> \r
93   </sequence>\r
94   <attribute name="Id" type="ID" use="optional"/> \r
95   <attribute name="URI" type="anyURI" use="optional"/> \r
96   <attribute name="Type" type="anyURI" use="optional"/> \r
97 </complexType>\r
98 \r
99   <element name="Transforms" type="ds:TransformsType"/>\r
100   <complexType name="TransformsType">\r
101     <sequence>\r
102       <element ref="ds:Transform" maxOccurs="unbounded"/>  \r
103     </sequence>\r
104   </complexType>\r
105 \r
106   <element name="Transform" type="ds:TransformType"/>\r
107   <complexType name="TransformType" mixed="true">\r
108     <choice minOccurs="0" maxOccurs="unbounded"> \r
109       <any namespace="##other" processContents="lax"/>\r
110       <!-- (1,1) elements from (0,unbounded) namespaces -->\r
111       <element name="XPath" type="string"/> \r
112     </choice>\r
113     <attribute name="Algorithm" type="anyURI" use="required"/> \r
114   </complexType>\r
115 \r
116 <!-- End Reference -->\r
117 \r
118 <element name="DigestMethod" type="ds:DigestMethodType"/>\r
119 <complexType name="DigestMethodType" mixed="true"> \r
120   <sequence>\r
121     <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
122   </sequence>    \r
123   <attribute name="Algorithm" type="anyURI" use="required"/> \r
124 </complexType>\r
125 \r
126 <element name="DigestValue" type="ds:DigestValueType"/>\r
127 <simpleType name="DigestValueType">\r
128   <restriction base="base64Binary"/>\r
129 </simpleType>\r
130 \r
131 <!-- End SignedInfo -->\r
132 \r
133 <!-- Start KeyInfo -->\r
134 \r
135 <element name="KeyInfo" type="ds:KeyInfoType"/> \r
136 <complexType name="KeyInfoType" mixed="true">\r
137   <choice maxOccurs="unbounded">     \r
138     <element ref="ds:KeyName"/> \r
139     <element ref="ds:KeyValue"/> \r
140     <element ref="ds:RetrievalMethod"/> \r
141     <element ref="ds:X509Data"/> \r
142     <element ref="ds:PGPData"/> \r
143     <element ref="ds:SPKIData"/>\r
144     <element ref="ds:MgmtData"/>\r
145     <any processContents="lax" namespace="##other"/>\r
146     <!-- (1,1) elements from (0,unbounded) namespaces -->\r
147   </choice>\r
148   <attribute name="Id" type="ID" use="optional"/> \r
149 </complexType>\r
150 \r
151   <element name="KeyName" type="string"/>\r
152   <element name="MgmtData" type="string"/>\r
153 \r
154   <element name="KeyValue" type="ds:KeyValueType"/> \r
155   <complexType name="KeyValueType" mixed="true">\r
156    <choice>\r
157      <element ref="ds:DSAKeyValue"/>\r
158      <element ref="ds:RSAKeyValue"/>\r
159      <any namespace="##other" processContents="lax"/>\r
160    </choice>\r
161   </complexType>\r
162 \r
163   <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> \r
164   <complexType name="RetrievalMethodType">\r
165     <sequence>\r
166       <element ref="ds:Transforms" minOccurs="0"/> \r
167     </sequence>  \r
168     <attribute name="URI" type="anyURI" use="required"/>\r
169     <attribute name="Type" type="anyURI" use="optional"/>\r
170   </complexType>\r
171 \r
172 <!-- Start X509Data -->\r
173 \r
174 <element name="X509Data" type="ds:X509DataType"/> \r
175 <complexType name="X509DataType">\r
176   <sequence maxOccurs="unbounded">\r
177     <choice>\r
178       <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>\r
179       <element name="X509SKI" type="base64Binary"/>\r
180       <element name="X509SubjectName" type="string"/>\r
181       <element name="X509Certificate" type="base64Binary"/>\r
182       <element name="X509CRL" type="base64Binary"/>\r
183       <any namespace="##other" processContents="lax"/>\r
184     </choice>\r
185   </sequence>\r
186 </complexType>\r
187 \r
188 <complexType name="X509IssuerSerialType"> \r
189   <sequence> \r
190     <element name="X509IssuerName" type="string"/> \r
191     <element name="X509SerialNumber" type="integer"/> \r
192   </sequence>\r
193 </complexType>\r
194 \r
195 <!-- End X509Data -->\r
196 \r
197 <!-- Begin PGPData -->\r
198 \r
199 <element name="PGPData" type="ds:PGPDataType"/> \r
200 <complexType name="PGPDataType"> \r
201   <choice>\r
202     <sequence>\r
203       <element name="PGPKeyID" type="base64Binary"/> \r
204       <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> \r
205       <any namespace="##other" processContents="lax" minOccurs="0"\r
206        maxOccurs="unbounded"/>\r
207     </sequence>\r
208     <sequence>\r
209       <element name="PGPKeyPacket" type="base64Binary"/> \r
210       <any namespace="##other" processContents="lax" minOccurs="0"\r
211        maxOccurs="unbounded"/>\r
212     </sequence>\r
213   </choice>\r
214 </complexType>\r
215 \r
216 <!-- End PGPData -->\r
217 \r
218 <!-- Begin SPKIData -->\r
219 \r
220 <element name="SPKIData" type="ds:SPKIDataType"/> \r
221 <complexType name="SPKIDataType">\r
222   <sequence maxOccurs="unbounded">\r
223     <element name="SPKISexp" type="base64Binary"/>\r
224     <any namespace="##other" processContents="lax" minOccurs="0"/>\r
225   </sequence>\r
226 </complexType> \r
227 \r
228 <!-- End SPKIData -->\r
229 \r
230 <!-- End KeyInfo -->\r
231 \r
232 <!-- Start Object (Manifest, SignatureProperty) -->\r
233 \r
234 <element name="Object" type="ds:ObjectType"/> \r
235 <complexType name="ObjectType" mixed="true">\r
236   <sequence minOccurs="0" maxOccurs="unbounded">\r
237     <any namespace="##any" processContents="lax"/>\r
238   </sequence>\r
239   <attribute name="Id" type="ID" use="optional"/> \r
240   <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->\r
241   <attribute name="Encoding" type="anyURI" use="optional"/> \r
242 </complexType>\r
243 \r
244 <element name="Manifest" type="ds:ManifestType"/> \r
245 <complexType name="ManifestType">\r
246   <sequence>\r
247     <element ref="ds:Reference" maxOccurs="unbounded"/> \r
248   </sequence>\r
249   <attribute name="Id" type="ID" use="optional"/> \r
250 </complexType>\r
251 \r
252 <element name="SignatureProperties" type="ds:SignaturePropertiesType"/> \r
253 <complexType name="SignaturePropertiesType">\r
254   <sequence>\r
255     <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> \r
256   </sequence>\r
257   <attribute name="Id" type="ID" use="optional"/> \r
258 </complexType>\r
259 \r
260    <element name="SignatureProperty" type="ds:SignaturePropertyType"/> \r
261    <complexType name="SignaturePropertyType" mixed="true">\r
262      <choice maxOccurs="unbounded">\r
263        <any namespace="##other" processContents="lax"/>\r
264        <!-- (1,1) elements from (1,unbounded) namespaces -->\r
265      </choice>\r
266      <attribute name="Target" type="anyURI" use="required"/> \r
267      <attribute name="Id" type="ID" use="optional"/> \r
268    </complexType>\r
269 \r
270 <!-- End Object (Manifest, SignatureProperty) -->\r
271 \r
272 <!-- Start Algorithm Parameters -->\r
273 \r
274 <simpleType name="HMACOutputLengthType">\r
275   <restriction base="integer"/>\r
276 </simpleType>\r
277 \r
278 <!-- Start KeyValue Element-types -->\r
279 \r
280 <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>\r
281 <complexType name="DSAKeyValueType">\r
282   <sequence>\r
283     <sequence minOccurs="0">\r
284       <element name="P" type="ds:CryptoBinary"/>\r
285       <element name="Q" type="ds:CryptoBinary"/>\r
286     </sequence>\r
287     <element name="G" type="ds:CryptoBinary" minOccurs="0"/>\r
288     <element name="Y" type="ds:CryptoBinary"/>\r
289     <element name="J" type="ds:CryptoBinary" minOccurs="0"/>\r
290     <sequence minOccurs="0">\r
291       <element name="Seed" type="ds:CryptoBinary"/>\r
292       <element name="PgenCounter" type="ds:CryptoBinary"/>\r
293     </sequence>\r
294   </sequence>\r
295 </complexType>\r
296 \r
297 <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>\r
298 <complexType name="RSAKeyValueType">\r
299   <sequence>\r
300     <element name="Modulus" type="ds:CryptoBinary"/> \r
301     <element name="Exponent" type="ds:CryptoBinary"/> \r
302   </sequence>\r
303 </complexType> \r
304 \r
305 <!-- End KeyValue Element-types -->\r
306 \r
307 <!-- End Signature -->\r
308 \r
309 </schema>\r