dc3d2c8df9f12ae7106593b325d58651c1e3c193
[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 #if !defined(__xmltooling_encryption_h__) && !defined(XMLTOOLING_NO_XMLSEC)
24 #define __xmltooling_encryption_h__
25
26 #include <xmltooling/signature/KeyInfo.h>
27 #include <cstdio>
28
29 /**
30  * Macro for declaring encryption builders.
31  * 
32  * @param cname name of class being built
33  */
34 #define DECL_XMLENCOBJECTBUILDER(cname) \
35     DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,xmlconstants::XMLENC_NS,xmlconstants::XMLENC_PREFIX)
36
37 /**
38  * @namespace xmlencryption
39  * Namespace for XML Encryption schema objects
40  */
41 namespace xmlencryption {
42
43     DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,CarriedKeyName,Name,XML Encryption CarriedKeyName element);
44     DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,CipherValue,Value,XML Encryption CipherValue element);
45     DECL_XMLOBJECT_SIMPLE(XMLTOOL_API,OAEPparams,Name,XML Encryption OAEPparams element);
46
47     BEGIN_XMLOBJECT(XMLTOOL_API,KeySize,xmltooling::XMLObject,XML Encryption KeySize element);
48         DECL_INTEGER_CONTENT(Size);
49     END_XMLOBJECT;
50
51     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptionMethod,xmltooling::ElementExtensibleXMLObject,XML Encryption EncryptionMethod element);
52         DECL_STRING_ATTRIB(Algorithm,ALGORITHM);
53         DECL_TYPED_CHILD(KeySize);
54         DECL_TYPED_CHILD(OAEPparams);
55         /** EncryptionMethodType local name */
56         static const XMLCh TYPE_NAME[];
57     END_XMLOBJECT;
58
59     BEGIN_XMLOBJECT(XMLTOOL_API,Transforms,xmltooling::XMLObject,XML Encryption Transforms element);
60         DECL_TYPED_FOREIGN_CHILDREN(Transform,xmlsignature);
61         /** TransformsType local name */
62         static const XMLCh TYPE_NAME[];
63     END_XMLOBJECT;
64
65     BEGIN_XMLOBJECT(XMLTOOL_API,CipherReference,xmltooling::XMLObject,XML Encryption CipherReference element);
66         DECL_STRING_ATTRIB(URI,URI);
67         DECL_TYPED_CHILD(Transforms);
68         /** CipherReferenceType local name */
69         static const XMLCh TYPE_NAME[];
70     END_XMLOBJECT;
71
72     BEGIN_XMLOBJECT(XMLTOOL_API,CipherData,xmltooling::XMLObject,XML Encryption CipherData element);
73         DECL_TYPED_CHILD(CipherValue);
74         DECL_TYPED_CHILD(CipherReference);
75         /** CipherDataType local name */
76         static const XMLCh TYPE_NAME[];
77     END_XMLOBJECT;
78
79     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptionProperty,xmltooling::ElementProxy,XML Encryption EncryptionProperty element);
80         DECL_STRING_ATTRIB(Target,TARGET);
81         DECL_STRING_ATTRIB(Id,ID);
82         /** EncryptionPropertyType local name */
83         static const XMLCh TYPE_NAME[];
84     END_XMLOBJECT;
85
86     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptionProperties,xmltooling::XMLObject,XML Encryption EncryptionProperties element);
87         DECL_STRING_ATTRIB(Id,ID);
88         DECL_TYPED_CHILDREN(EncryptionProperty);
89         /** EncryptionPropertiesType local name */
90         static const XMLCh TYPE_NAME[];
91     END_XMLOBJECT;
92
93     BEGIN_XMLOBJECT(XMLTOOL_API,ReferenceType,xmltooling::ElementExtensibleXMLObject,XML Encryption ReferenceType type);
94         DECL_STRING_ATTRIB(URI,URI);
95         /** ReferenceType local name */
96         static const XMLCh TYPE_NAME[];
97     END_XMLOBJECT;
98
99     BEGIN_XMLOBJECT(XMLTOOL_API,DataReference,ReferenceType,XML Encryption DataReference element);
100     END_XMLOBJECT;
101
102     BEGIN_XMLOBJECT(XMLTOOL_API,KeyReference,ReferenceType,XML Encryption KeyReference element);
103     END_XMLOBJECT;
104
105     BEGIN_XMLOBJECT(XMLTOOL_API,ReferenceList,xmltooling::XMLObject,XML Encryption ReferenceList element);
106         DECL_TYPED_CHILDREN(DataReference);
107         DECL_TYPED_CHILDREN(KeyReference);
108     END_XMLOBJECT;
109
110     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptedType,xmltooling::XMLObject,XML Encryption EncryptedType abstract type);
111         DECL_STRING_ATTRIB(Id,ID);
112         DECL_STRING_ATTRIB(Type,TYPE);
113         DECL_STRING_ATTRIB(MimeType,MIMETYPE);
114         DECL_STRING_ATTRIB(Encoding,ENCODING);
115         DECL_TYPED_CHILD(EncryptionMethod);
116         DECL_TYPED_FOREIGN_CHILD(KeyInfo,xmlsignature);
117         DECL_TYPED_CHILD(CipherData);
118         DECL_TYPED_CHILD(EncryptionProperties);
119         /** EncryptedType local name */
120         static const XMLCh TYPE_NAME[];
121     END_XMLOBJECT;
122
123     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptedData,EncryptedType,XML Encryption EncryptedData element);
124         /** EncryptedDataType local name */
125         static const XMLCh TYPE_NAME[];
126     END_XMLOBJECT;
127
128     BEGIN_XMLOBJECT(XMLTOOL_API,EncryptedKey,EncryptedType,XML Encryption EncryptedKey element);
129         DECL_STRING_ATTRIB(Recipient,RECIPIENT);
130         DECL_TYPED_CHILD(ReferenceList);
131         DECL_TYPED_CHILD(CarriedKeyName);
132         /** EncryptedKeyType local name */
133         static const XMLCh TYPE_NAME[];
134     END_XMLOBJECT;
135
136     DECL_XMLENCOBJECTBUILDER(CarriedKeyName);
137     DECL_XMLENCOBJECTBUILDER(CipherData);
138     DECL_XMLENCOBJECTBUILDER(CipherReference);
139     DECL_XMLENCOBJECTBUILDER(CipherValue);
140     DECL_XMLENCOBJECTBUILDER(DataReference);
141     DECL_XMLENCOBJECTBUILDER(EncryptedData);
142     DECL_XMLENCOBJECTBUILDER(EncryptedKey);
143     DECL_XMLENCOBJECTBUILDER(EncryptionMethod);
144     DECL_XMLENCOBJECTBUILDER(EncryptionProperties);
145     DECL_XMLENCOBJECTBUILDER(EncryptionProperty);
146     DECL_XMLENCOBJECTBUILDER(KeyReference);
147     DECL_XMLENCOBJECTBUILDER(KeySize);
148     DECL_XMLENCOBJECTBUILDER(OAEPparams);
149     DECL_XMLENCOBJECTBUILDER(ReferenceList);
150     DECL_XMLENCOBJECTBUILDER(Transforms);
151
152     /**
153      * Registers builders and validators for XML Encryption classes into the runtime.
154      */
155     void XMLTOOL_API registerEncryptionClasses();
156 };
157
158 #endif /* __xmltooling_encryption_h__ */