1<?xml version="1.0" encoding="utf-8"?>
2
3<schema xmlns='http://www.w3.org/2001/XMLSchema' version='1.0'
4        xmlns:xenc='http://www.w3.org/2001/04/xmlenc#'
5        xmlns:ds='http://www.w3.org/2000/09/xmldsig#'
6        targetNamespace='http://www.w3.org/2001/04/xmlenc#'
7        elementFormDefault='qualified'>
8
9  <import namespace='http://www.w3.org/2000/09/xmldsig#'
10          schemaLocation='xmldsig-core-schema.xsd'/>
11
12  <complexType name='EncryptedType' abstract='true'>
13    <sequence>
14      <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
15       minOccurs='0'/>
16      <element ref='ds:KeyInfo' minOccurs='0'/>
17      <element ref='xenc:CipherData'/>
18      <element ref='xenc:EncryptionProperties' minOccurs='0'/>
19    </sequence>
20    <attribute name='Id' type='ID' use='optional'/>
21    <attribute name='Type' type='anyURI' use='optional'/>
22    <attribute name='MimeType' type='string' use='optional'/>
23    <attribute name='Encoding' type='anyURI' use='optional'/>
24  </complexType>
25
26  <complexType name='EncryptionMethodType' mixed='true'>
27    <sequence>
28      <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
29      <element name='OAEPparams' minOccurs='0' type='base64Binary'/>
30      <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
31    </sequence>
32    <attribute name='Algorithm' type='anyURI' use='required'/>
33  </complexType>
34
35    <simpleType name='KeySizeType'>
36      <restriction base="integer"/>
37    </simpleType>
38
39  <element name='CipherData' type='xenc:CipherDataType'/>
40  <complexType name='CipherDataType'>
41     <choice>
42       <element name='CipherValue' type='base64Binary'/>
43       <element ref='xenc:CipherReference'/>
44     </choice>
45    </complexType>
46
47   <element name='CipherReference' type='xenc:CipherReferenceType'/>
48   <complexType name='CipherReferenceType'>
49       <choice>
50         <element name='Transforms' type='xenc:TransformsType' minOccurs='0'/>
51       </choice>
52       <attribute name='URI' type='anyURI' use='required'/>
53   </complexType>
54
55     <complexType name='TransformsType'>
56       <sequence>
57         <element ref='ds:Transform' maxOccurs='unbounded'/>
58       </sequence>
59     </complexType>
60
61
62  <element name='EncryptedData' type='xenc:EncryptedDataType'/>
63  <complexType name='EncryptedDataType'>
64    <complexContent>
65      <extension base='xenc:EncryptedType'>
66       </extension>
67    </complexContent>
68  </complexType>
69
70  <!-- Children of ds:KeyInfo -->
71
72  <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
73  <complexType name='EncryptedKeyType'>
74    <complexContent>
75      <extension base='xenc:EncryptedType'>
76        <sequence>
77          <element ref='xenc:ReferenceList' minOccurs='0'/>
78          <element name='CarriedKeyName' type='string' minOccurs='0'/>
79        </sequence>
80        <attribute name='Recipient' type='string'
81         use='optional'/>
82      </extension>
83    </complexContent>
84  </complexType>
85
86    <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
87    <complexType name="AgreementMethodType" mixed="true">
88      <sequence>
89        <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
90        <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
91        <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
92        <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
93        <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
94      </sequence>
95      <attribute name="Algorithm" type="anyURI" use="required"/>
96    </complexType>
97
98  <!-- End Children of ds:KeyInfo -->
99
100  <element name='ReferenceList'>
101    <complexType>
102      <choice minOccurs='1' maxOccurs='unbounded'>
103        <element name='DataReference' type='xenc:ReferenceType'/>
104        <element name='KeyReference' type='xenc:ReferenceType'/>
105      </choice>
106    </complexType>
107  </element>
108
109  <complexType name='ReferenceType'>
110    <sequence>
111      <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
112    </sequence>
113    <attribute name='URI' type='anyURI' use='required'/>
114  </complexType>
115
116
117  <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
118  <complexType name='EncryptionPropertiesType'>
119    <sequence>
120      <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
121    </sequence>
122    <attribute name='Id' type='ID' use='optional'/>
123  </complexType>
124
125    <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
126    <complexType name='EncryptionPropertyType' mixed='true'>
127      <choice maxOccurs='unbounded'>
128        <any namespace='##other' processContents='lax'/>
129      </choice>
130      <attribute name='Target' type='anyURI' use='optional'/>
131      <attribute name='Id' type='ID' use='optional'/>
132      <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
133    </complexType>
134
135</schema>
136
137