#if !defined(__xmltooling_sig_h__) && !defined(XMLTOOLING_NO_XMLSEC)\r
#define __xmltooling_sig_h__\r
\r
+#include <xmltooling/exceptions.h>\r
#include <xmltooling/XMLObjectBuilder.h>\r
#include <xmltooling/signature/SigningContext.h>\r
#include <xmltooling/signature/VerifyingContext.h>\r
+#include <xmltooling/util/XMLConstants.h>\r
\r
-namespace xmltooling {\r
+/**\r
+ * @namespace xmlsignature\r
+ * Public namespace of XML Signature classes\r
+ */\r
+namespace xmlsignature {\r
\r
/**\r
* XMLObject representing XML Digital Signature, version 20020212, Signature element.\r
* The default signature settings include Exclusive c14n w/o comments, SHA-1 digests,\r
* and RSA-SHA1 signing. \r
*/\r
- class XMLTOOL_API Signature : public virtual XMLObject\r
+ class XMLTOOL_API Signature : public virtual xmltooling::XMLObject\r
{\r
public:\r
virtual ~Signature() {}\r
\r
- /** Element prefix */\r
- static const XMLCh PREFIX[];\r
-\r
/** Element local name */\r
static const XMLCh LOCAL_NAME[];\r
\r
Signature() {}\r
};\r
\r
-#ifdef XMLTOOLING_DEFINE_CONSTANTS\r
- const XMLCh Signature::LOCAL_NAME[] = {\r
- chLatin_S, chLatin_i, chLatin_g, chLatin_n, chLatin_a, chLatin_t, chLatin_u, chLatin_r, chLatin_e, chNull\r
- }; \r
- const XMLCh Signature::PREFIX[] = {\r
- chLatin_d, chLatin_s, chNull\r
- };\r
-#endif\r
-\r
/**\r
* Builder for Signature objects.\r
*/\r
- class XMLTOOL_API SignatureBuilder : public XMLObjectBuilder\r
+ class XMLTOOL_API SignatureBuilder : public xmltooling::XMLObjectBuilder\r
{\r
public:\r
- virtual ~SignatureBuilder() {}\r
-\r
+ virtual Signature* buildObject(\r
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL\r
+ ) const;\r
+ \r
/**\r
- * Default builder.\r
+ * Default builder\r
+ * \r
+ * @return empty Signature object\r
*/\r
- virtual Signature* buildObject() const=0;\r
+ virtual Signature* buildObject() const;\r
+\r
+ static Signature* newSignature() {\r
+ const SignatureBuilder* b = dynamic_cast<const SignatureBuilder*>(\r
+ xmltooling::XMLObjectBuilder::getBuilder(\r
+ xmltooling::QName(xmltooling::XMLConstants::XMLSIG_NS,Signature::LOCAL_NAME)\r
+ )\r
+ );\r
+ if (b)\r
+ return b->buildObject();\r
+ throw xmltooling::XMLObjectException("Unable to obtain typed builder for Signature.");\r
+ }\r
};\r
+\r
+ DECL_XMLTOOLING_EXCEPTION(SignatureException,XMLTOOL_EXCEPTIONAPI(XMLTOOL_API),xmlsignature,xmltooling::XMLToolingException,Exceptions in signature processing);\r
+\r
};\r
\r
#endif /* __xmltooling_sig_h__ */\r