\r
#include "XMLObjectBaseTestCase.h"\r
\r
+#include <xmltooling/signature/SignatureValidator.h>\r
+\r
#include <fstream>\r
#include <openssl/pem.h>\r
#include <xercesc/util/XMLUniDefs.hpp>\r
}\r
};\r
\r
-class TestValidator : public Validator\r
+class TestValidator : public SignatureValidator\r
{\r
XMLCh* m_uri;\r
\r
+ TestValidator(const TestValidator& src) : SignatureValidator(src) {\r
+ m_uri=XMLString::replicate(src.m_uri);\r
+ }\r
+\r
public:\r
- TestValidator(const XMLCh* uri) {\r
+ TestValidator(const XMLCh* uri, XSECCryptoKey* key) : SignatureValidator(key) {\r
m_uri=XMLString::replicate(uri);\r
}\r
\r
XMLString::release(&m_uri);\r
}\r
\r
- Validator* clone() const {\r
- return new TestValidator(m_uri);\r
+ TestValidator* clone() const {\r
+ return new TestValidator(*this);\r
}\r
\r
- void validate(const XMLObject* xmlObject) const {\r
- DSIGSignature* sig=dynamic_cast<const Signature*>(xmlObject)->getXMLSignature();\r
+ void validate(const Signature* sigObj) const {\r
+ DSIGSignature* sig=sigObj->getXMLSignature();\r
if (!sig)\r
throw SignatureException("Only a marshalled Signature object can be verified.");\r
const XMLCh* uri=sig->getReferenceList()->item(0)->getURI();\r
TSM_ASSERT_SAME_DATA("Reference URI does not match.",uri,m_uri,XMLString::stringLen(uri));\r
- XSECKeyInfoResolverDefault resolver;\r
- sig->setKeyInfoResolver(&resolver); // It will clone the resolver for us.\r
- try {\r
- if (!sig->verify())\r
- throw SignatureException("Signature did not verify.");\r
- }\r
- catch(XSECException& e) {\r
- auto_ptr_char temp(e.getMsg());\r
- throw SignatureException(string("Caught an XMLSecurity exception verifying signature: ") + temp.get());\r
- }\r
- catch(XSECCryptoException& e) {\r
- throw SignatureException(string("Caught an XMLSecurity exception verifying signature: ") + e.getMsg());\r
- }\r
+ SignatureValidator::validate(sigObj);\r
}\r
};\r
\r
auto_ptr<SimpleXMLObject> sxObject2(dynamic_cast<SimpleXMLObject*>(b->buildFromDocument(doc)));\r
TS_ASSERT(sxObject2.get()!=NULL);\r
TS_ASSERT(sxObject2->getSignature()!=NULL);\r
- sxObject2->getSignature()->registerValidator(new TestValidator(&chNull));\r
+ sxObject2->getSignature()->registerValidator(new TestValidator(&chNull,m_key->clone()));\r
\r
try {\r
sxObject2->getSignature()->validate(false);\r