Evolving macros, reduce casting in accessors, add const collection access.
[shibboleth/xmltooling.git] / xmltooling / signature / KeyInfo.h
1 /*\r
2  *  Copyright 2001-2006 Internet2\r
3  * \r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 /**\r
18  * @file KeyInfo.h\r
19  * \r
20  * XMLObjects representing XML Digital Signature, version 20020212, KeyInfo element\r
21  * and related content.\r
22  */\r
23 \r
24 #ifndef __xmltooling_keyinfo_h__\r
25 #define __xmltooling_keyinfo_h__\r
26 \r
27 #include <xmltooling/ElementProxy.h>\r
28 #include <xmltooling/exceptions.h>\r
29 #include <xmltooling/XMLObjectBuilder.h>\r
30 #include <xmltooling/util/XMLConstants.h>\r
31 #include <xmltooling/validation/ValidatingXMLObject.h>\r
32 \r
33 #include <typeinfo.h>\r
34 \r
35 #define DECL_XMLSIGOBJECTBUILDER(cname) \\r
36     DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,XMLConstants::XMLSIG_NS,XMLConstants::XMLSIG_PREFIX)\r
37 \r
38 namespace xmltooling {\r
39 \r
40     /**\r
41      * XMLObject representing XML Digital Signature, version 20020212, KeyName element.\r
42      */\r
43     BEGIN_XMLOBJECT(XMLTOOL_API,KeyName,XMLObject);\r
44         DECL_XMLOBJECT_CONTENT(Name);\r
45     END_XMLOBJECT;\r
46 \r
47     /**\r
48      * XMLObject representing XML Digital Signature, version 20020212, MgmtData element.\r
49      */\r
50     BEGIN_XMLOBJECT(XMLTOOL_API,MgmtData,XMLObject);\r
51         DECL_XMLOBJECT_CONTENT(Data);\r
52     END_XMLOBJECT;\r
53 \r
54     /**\r
55      * XMLObject representing XML Digital Signature, version 20020212, Modulus element.\r
56      */\r
57     BEGIN_XMLOBJECT(XMLTOOL_API,Modulus,XMLObject);\r
58         DECL_XMLOBJECT_CONTENT(Value);\r
59     END_XMLOBJECT;\r
60 \r
61     /**\r
62      * XMLObject representing XML Digital Signature, version 20020212, Exponent element.\r
63      */\r
64     BEGIN_XMLOBJECT(XMLTOOL_API,Exponent,XMLObject);\r
65         DECL_XMLOBJECT_CONTENT(Value);\r
66     END_XMLOBJECT;\r
67 \r
68     /**\r
69      * XMLObject representing XML Digital Signature, version 20020212, RSAKeyValue element.\r
70      */\r
71     BEGIN_XMLOBJECT(XMLTOOL_API,RSAKeyValue,XMLObject);\r
72         DECL_XMLOBJECT_CHILD(Modulus);\r
73         DECL_XMLOBJECT_CHILD(Exponent);\r
74         /** RSAKeyValueType local name */\r
75         static const XMLCh TYPE_NAME[];\r
76     END_XMLOBJECT;\r
77 \r
78     /**\r
79      * XMLObject representing XML Digital Signature, version 20020212, KeyInfo element.\r
80      */\r
81     BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfo,ElementProxy);\r
82         DECL_XMLOBJECT_ATTRIB(Id,ID);\r
83         DECL_XMLOBJECT_CHILDREN(KeyName);\r
84         DECL_XMLOBJECT_CHILDREN(MgmtData);\r
85         /** KeyInfoType local name */\r
86         static const XMLCh TYPE_NAME[];\r
87     END_XMLOBJECT;\r
88 \r
89     DECL_XMLSIGOBJECTBUILDER(KeyName);\r
90     DECL_XMLSIGOBJECTBUILDER(MgmtData);\r
91     DECL_XMLSIGOBJECTBUILDER(Modulus);\r
92     DECL_XMLSIGOBJECTBUILDER(Exponent);\r
93     DECL_XMLSIGOBJECTBUILDER(RSAKeyValue);\r
94     DECL_XMLSIGOBJECTBUILDER(KeyInfo);\r
95     \r
96     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,KeyName);\r
97         XMLOBJECTVALIDATOR_REQUIRE(KeyName,Name);\r
98     END_XMLOBJECTVALIDATOR;\r
99     \r
100     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,MgmtData);\r
101         XMLOBJECTVALIDATOR_REQUIRE(MgmtData,Data);\r
102     END_XMLOBJECTVALIDATOR;\r
103 \r
104     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Modulus);\r
105         XMLOBJECTVALIDATOR_REQUIRE(Modulus,Value);\r
106     END_XMLOBJECTVALIDATOR;\r
107 \r
108     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Exponent);\r
109         XMLOBJECTVALIDATOR_REQUIRE(Exponent,Value);\r
110     END_XMLOBJECTVALIDATOR;\r
111 \r
112     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,RSAKeyValue);\r
113         XMLOBJECTVALIDATOR_REQUIRE(RSAKeyValue,Modulus);\r
114         XMLOBJECTVALIDATOR_REQUIRE(RSAKeyValue,Exponent);\r
115     END_XMLOBJECTVALIDATOR;\r
116 \r
117     BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,KeyInfo);\r
118         XMLOBJECTVALIDATOR_CHECKEMPTY(KeyInfo,XMLObject);\r
119     END_XMLOBJECTVALIDATOR;\r
120 \r
121 };\r
122 \r
123 #endif /* __xmltooling_keyinfo_h__ */\r