Update copyright.
[shibboleth/cpp-xmltooling.git] / xmltooling / encryption / Encryption.h
1 /*
2  *  Copyright 2001-2007 Internet2
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * @file xmltooling/encryption/Encryption.h
19  * 
20  * XMLObjects representing XML Encryption content
21  */
22
23 #ifndef __xmltooling_encryption_h__
24 #define __xmltooling_encryption_h__
25
26 #include <xmltooling/signature/KeyInfo.h>
27
28 /**
29  * Macro for declaring encryption builders.
30  * 
31  * @param cname name of class being built
32  */
33 #define DECL_XMLENCOBJECTBUILDER(cname) \
34     DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,xmlconstants::XMLENC_NS,xmlconstants::XMLENC_PREFIX)
35
36 /**
37  * @namespace xmlencryption
38  * Namespace for XML Encryption schema objects
39  */
40 namespace xmlencryption {
41
42     DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,CarriedKeyName,Name,XML Encryption CarriedKeyName element);
43     DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,CipherValue,Value,XML Encryption CipherValue element);
44     DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,OAEPparams,Name,XML Encryption OAEPparams element);
45
46     BEGIN_XMLOBJECT(XMLTOOL_API,KeySize,xmltooling::XMLObject,XML Encryption KeySize element);
47         DECL_INTEGER_CONTENT(Size);
48     END_XMLOBJECT;
49
50     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptionMethod,xmltooling::ElementExtensibleXMLObject,XML Encryption EncryptionMethod element);
51         DECL_STRING_ATTRIB(Algorithm,ALGORITHM);
52         DECL_TYPED_CHILD(KeySize);
53         DECL_TYPED_CHILD(OAEPparams);
54         /** EncryptionMethodType local name */
55         static const XMLCh TYPE_NAME[];
56     END_XMLOBJECT;
57
58     BEGIN_XMLOBJECT(XMLTOOL_API,Transforms,xmltooling::XMLObject,XML Encryption Transforms element);
59         DECL_TYPED_FOREIGN_CHILDREN(Transform,xmlsignature);
60         /** TransformsType local name */
61         static const XMLCh TYPE_NAME[];
62     END_XMLOBJECT;
63
64     BEGIN_XMLOBJECT(XMLTOOL_API,CipherReference,xmltooling::XMLObject,XML Encryption CipherReference element);
65         DECL_STRING_ATTRIB(URI,URI);
66         DECL_TYPED_CHILD(Transforms);
67         /** CipherReferenceType local name */
68         static const XMLCh TYPE_NAME[];
69     END_XMLOBJECT;
70
71     BEGIN_XMLOBJECT(XMLTOOL_API,CipherData,xmltooling::XMLObject,XML Encryption CipherData element);
72         DECL_TYPED_CHILD(CipherValue);
73         DECL_TYPED_CHILD(CipherReference);
74         /** CipherDataType local name */
75         static const XMLCh TYPE_NAME[];
76     END_XMLOBJECT;
77
78     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptionProperty,xmltooling::ElementProxy,XML Encryption EncryptionProperty element);
79         DECL_STRING_ATTRIB(Target,TARGET);
80         DECL_STRING_ATTRIB(Id,ID);
81         /** EncryptionPropertyType local name */
82         static const XMLCh TYPE_NAME[];
83     END_XMLOBJECT;
84
85     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptionProperties,xmltooling::XMLObject,XML Encryption EncryptionProperties element);
86         DECL_STRING_ATTRIB(Id,ID);
87         DECL_TYPED_CHILDREN(EncryptionProperty);
88         /** EncryptionPropertiesType local name */
89         static const XMLCh TYPE_NAME[];
90     END_XMLOBJECT;
91
92     BEGIN_XMLOBJECT(XMLTOOL_API,ReferenceType,xmltooling::ElementExtensibleXMLObject,XML Encryption ReferenceType type);
93         DECL_STRING_ATTRIB(URI,URI);
94         /** ReferenceType local name */
95         static const XMLCh TYPE_NAME[];
96     END_XMLOBJECT;
97
98     BEGIN_XMLOBJECT(XMLTOOL_API,DataReference,ReferenceType,XML Encryption DataReference element);
99     END_XMLOBJECT;
100
101     BEGIN_XMLOBJECT(XMLTOOL_API,KeyReference,ReferenceType,XML Encryption KeyReference element);
102     END_XMLOBJECT;
103
104     BEGIN_XMLOBJECT(XMLTOOL_API,ReferenceList,xmltooling::XMLObject,XML Encryption ReferenceList element);
105         DECL_TYPED_CHILDREN(DataReference);
106         DECL_TYPED_CHILDREN(KeyReference);
107     END_XMLOBJECT;
108
109     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptedType,xmltooling::XMLObject,XML Encryption EncryptedType abstract type);
110         DECL_STRING_ATTRIB(Id,ID);
111         DECL_STRING_ATTRIB(Type,TYPE);
112         DECL_STRING_ATTRIB(MimeType,MIMETYPE);
113         DECL_STRING_ATTRIB(Encoding,ENCODING);
114         DECL_TYPED_CHILD(EncryptionMethod);
115         DECL_TYPED_FOREIGN_CHILD(KeyInfo,xmlsignature);
116         DECL_TYPED_CHILD(CipherData);
117         DECL_TYPED_CHILD(EncryptionProperties);
118         /** EncryptedType local name */
119         static const XMLCh TYPE_NAME[];
120     END_XMLOBJECT;
121
122     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptedData,EncryptedType,XML Encryption EncryptedData element);
123         /** EncryptedDataType local name */
124         static const XMLCh TYPE_NAME[];
125     END_XMLOBJECT;
126
127     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptedKey,EncryptedType,XML Encryption EncryptedKey element);
128         DECL_STRING_ATTRIB(Recipient,RECIPIENT);
129         DECL_TYPED_CHILD(ReferenceList);
130         DECL_TYPED_CHILD(CarriedKeyName);
131         /** EncryptedKeyType local name */
132         static const XMLCh TYPE_NAME[];
133     END_XMLOBJECT;
134
135     DECL_XMLENCOBJECTBUILDER(CarriedKeyName);
136     DECL_XMLENCOBJECTBUILDER(CipherData);
137     DECL_XMLENCOBJECTBUILDER(CipherReference);
138     DECL_XMLENCOBJECTBUILDER(CipherValue);
139     DECL_XMLENCOBJECTBUILDER(DataReference);
140     DECL_XMLENCOBJECTBUILDER(EncryptedData);
141     DECL_XMLENCOBJECTBUILDER(EncryptedKey);
142     DECL_XMLENCOBJECTBUILDER(EncryptionMethod);
143     DECL_XMLENCOBJECTBUILDER(EncryptionProperties);
144     DECL_XMLENCOBJECTBUILDER(EncryptionProperty);
145     DECL_XMLENCOBJECTBUILDER(KeyReference);
146     DECL_XMLENCOBJECTBUILDER(KeySize);
147     DECL_XMLENCOBJECTBUILDER(OAEPparams);
148     DECL_XMLENCOBJECTBUILDER(ReferenceList);
149     DECL_XMLENCOBJECTBUILDER(Transforms);
150
151     /**
152      * Registers builders and validators for XML Encryption classes into the runtime.
153      */
154     void XMLTOOL_API registerEncryptionClasses();
155 };
156
157 #endif /* __xmltooling_encryption_h__ */