#define __xmltooling_keyinfo_h__\r
\r
#include <xmltooling/ElementProxy.h>\r
+#include <xmltooling/exceptions.h>\r
#include <xmltooling/XMLObjectBuilder.h>\r
+#include <xmltooling/util/XMLConstants.h>\r
#include <xmltooling/validation/ValidatingXMLObject.h>\r
\r
+#include <typeinfo.h>\r
+\r
+#define DECL_XMLSIGOBJECTBUILDER(cname) \\r
+ DECL_XMLOBJECTBUILDER(XMLTOOL_API,cname,XMLConstants::XMLSIG_NS,XMLConstants::XMLSIG_PREFIX)\r
+\r
namespace xmltooling {\r
\r
/**\r
- * XMLObject representing XML Digital Signature, version 20020212, KeyInfo element.\r
+ * XMLObject representing XML Digital Signature, version 20020212, KeyName element.\r
*/\r
- BEGIN_XMLOBJECT(KeyInfo,ElementProxy);\r
- DECL_XMLOBJECT_ATTRIB(Id,ID);\r
- static const XMLCh TYPE_NAME[];\r
+ BEGIN_XMLOBJECT(XMLTOOL_API,KeyName,XMLObject);\r
+ DECL_XMLOBJECT_CONTENT(Name);\r
END_XMLOBJECT;\r
\r
- BEGIN_XMLOBJECTBUILDER(KeyInfo);\r
- END_XMLOBJECTBUILDER;\r
-\r
-#ifdef XMLTOOLING_DEFINE_CONSTANTS\r
- const XMLCh KeyInfo::LOCAL_NAME[] = {\r
- chLatin_K, chLatin_e, chLatin_y, chLatin_I, chLatin_n, chLatin_f, chLatin_o, chNull\r
- }; \r
- const XMLCh KeyInfo::TYPE_NAME[] = {\r
- chLatin_K, chLatin_e, chLatin_y, chLatin_I, chLatin_n, chLatin_f, chLatin_o,\r
- chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull\r
- }; \r
- const XMLCh KeyInfo::ID_ATTRIB_NAME[] = {\r
- chLatin_I, chLatin_d, chNull\r
- };\r
-#endif\r
+ /**\r
+ * XMLObject representing XML Digital Signature, version 20020212, MgmtData element.\r
+ */\r
+ BEGIN_XMLOBJECT(XMLTOOL_API,MgmtData,XMLObject);\r
+ DECL_XMLOBJECT_CONTENT(Data);\r
+ END_XMLOBJECT;\r
\r
/**\r
- * XMLObject representing XML Digital Signature, version 20020212, KeyName element.\r
+ * XMLObject representing XML Digital Signature, version 20020212, Modulus element.\r
*/\r
- BEGIN_XMLOBJECT(KeyName,XMLObject);\r
- DECL_XMLOBJECT_CONTENT(Name);\r
+ BEGIN_XMLOBJECT(XMLTOOL_API,Modulus,XMLObject);\r
+ DECL_XMLOBJECT_CONTENT(Value);\r
END_XMLOBJECT;\r
\r
- BEGIN_XMLOBJECTBUILDER(KeyName);\r
- END_XMLOBJECTBUILDER;\r
+ /**\r
+ * XMLObject representing XML Digital Signature, version 20020212, Exponent element.\r
+ */\r
+ BEGIN_XMLOBJECT(XMLTOOL_API,Exponent,XMLObject);\r
+ DECL_XMLOBJECT_CONTENT(Value);\r
+ END_XMLOBJECT;\r
\r
-#ifdef XMLTOOLING_DEFINE_CONSTANTS\r
- const XMLCh KeyName::LOCAL_NAME[] = {\r
- chLatin_K, chLatin_e, chLatin_y, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chNull\r
- }; \r
-#endif\r
+ /**\r
+ * XMLObject representing XML Digital Signature, version 20020212, RSAKeyValue element.\r
+ */\r
+ BEGIN_XMLOBJECT(XMLTOOL_API,RSAKeyValue,XMLObject);\r
+ DECL_XMLOBJECT_CHILD(Modulus);\r
+ DECL_XMLOBJECT_CHILD(Exponent);\r
+ /** RSAKeyValueType local name */\r
+ static const XMLCh TYPE_NAME[];\r
+ END_XMLOBJECT;\r
\r
/**\r
- * XMLObject representing XML Digital Signature, version 20020212, MgmtData element.\r
+ * XMLObject representing XML Digital Signature, version 20020212, KeyInfo element.\r
*/\r
- BEGIN_XMLOBJECT(MgmtData,XMLObject);\r
- DECL_XMLOBJECT_CONTENT(Data);\r
+ BEGIN_XMLOBJECT(XMLTOOL_API,KeyInfo,ElementProxy);\r
+ DECL_XMLOBJECT_ATTRIB(Id,ID);\r
+ DECL_XMLOBJECT_CHILDREN(KeyName);\r
+ DECL_XMLOBJECT_CHILDREN(MgmtData);\r
+ /** KeyInfoType local name */\r
+ static const XMLCh TYPE_NAME[];\r
END_XMLOBJECT;\r
\r
- BEGIN_XMLOBJECTBUILDER(MgmtData);\r
- END_XMLOBJECTBUILDER;\r
+ DECL_XMLSIGOBJECTBUILDER(KeyName);\r
+ DECL_XMLSIGOBJECTBUILDER(MgmtData);\r
+ DECL_XMLSIGOBJECTBUILDER(Modulus);\r
+ DECL_XMLSIGOBJECTBUILDER(Exponent);\r
+ DECL_XMLSIGOBJECTBUILDER(RSAKeyValue);\r
+ DECL_XMLSIGOBJECTBUILDER(KeyInfo);\r
+ \r
+ BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,KeyName);\r
+ XMLOBJECTVALIDATOR_REQUIRE(KeyName,Name);\r
+ END_XMLOBJECTVALIDATOR;\r
+ \r
+ BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,MgmtData);\r
+ XMLOBJECTVALIDATOR_REQUIRE(MgmtData,Data);\r
+ END_XMLOBJECTVALIDATOR;\r
+\r
+ BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Modulus);\r
+ XMLOBJECTVALIDATOR_REQUIRE(Modulus,Value);\r
+ END_XMLOBJECTVALIDATOR;\r
+\r
+ BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,Exponent);\r
+ XMLOBJECTVALIDATOR_REQUIRE(Exponent,Value);\r
+ END_XMLOBJECTVALIDATOR;\r
+\r
+ BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,RSAKeyValue);\r
+ XMLOBJECTVALIDATOR_REQUIRE(RSAKeyValue,Modulus);\r
+ XMLOBJECTVALIDATOR_REQUIRE(RSAKeyValue,Exponent);\r
+ END_XMLOBJECTVALIDATOR;\r
+\r
+ BEGIN_XMLOBJECTVALIDATOR(XMLTOOL_DLLLOCAL,KeyInfo);\r
+ XMLOBJECTVALIDATOR_CHECKEMPTY(KeyInfo,XMLObject);\r
+ END_XMLOBJECTVALIDATOR;\r
\r
-#ifdef XMLTOOLING_DEFINE_CONSTANTS\r
- const XMLCh MgmtData::LOCAL_NAME[] = {\r
- chLatin_M, chLatin_g, chLatin_m, chLatin_t, chLatin_D, chLatin_a, chLatin_t, chLatin_a, chNull\r
- }; \r
-#endif\r
};\r
\r
#endif /* __xmltooling_keyinfo_h__ */\r