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