*/\r
\r
/**\r
- * VerifyingContext.cpp\r
+ * SignatureProfileValidator.cpp\r
* \r
* SAML-specific signature verification \r
*/\r
#include "internal.h"\r
#include <saml/saml1/core/Assertions.h>\r
#include <saml/signature/SignatureProfileValidator.h>\r
-\r
-#include <xmltooling/signature/Signature.h>\r
+#include <xmltooling/signature/SignatureValidator.h>\r
\r
#include <fstream>\r
#include <openssl/pem.h>\r
using namespace opensaml::saml1;\r
using namespace xmlsignature;\r
\r
-class TestValidator : public Validator\r
-{\r
-public:\r
- TestValidator() {}\r
- virtual ~TestValidator() {}\r
-\r
- Validator* clone() const {\r
- return new TestValidator();\r
- }\r
-\r
- void validate(const XMLObject* xmlObject) const {\r
- DSIGSignature* sig=dynamic_cast<const Signature*>(xmlObject)->getXMLSignature();\r
- if (!sig)\r
- throw SignatureException("Only a marshalled Signature object can be verified.");\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
- }\r
-};\r
-\r
class _addcert : public std::binary_function<X509Data*,XSECCryptoX509*,void> {\r
public:\r
void operator()(X509Data* bag, XSECCryptoX509* cert) const {\r
\r
try {\r
assertion->getSignature()->registerValidator(new SignatureProfileValidator());\r
- assertion->getSignature()->registerValidator(new TestValidator());\r
+ assertion->getSignature()->registerValidator(new SignatureValidator(m_key->clone()));\r
assertion->getSignature()->validate(true);\r
}\r
catch (XMLToolingException& e) {\r
#include "internal.h"\r
#include <saml/saml1/core/Protocols.h>\r
#include <saml/signature/SignatureProfileValidator.h>\r
+#include <xmltooling/signature/SignatureValidator.h>\r
\r
-#include <xmltooling/signature/Signature.h>\r
\r
#include <fstream>\r
#include <openssl/pem.h>\r
using namespace opensaml::saml1;\r
using namespace xmlsignature;\r
\r
-class TestValidator : public Validator\r
-{\r
-public:\r
- TestValidator() {}\r
- virtual ~TestValidator() {}\r
-\r
- Validator* clone() const {\r
- return new TestValidator();\r
- }\r
-\r
- void validate(const XMLObject* xmlObject) const {\r
- DSIGSignature* sig=dynamic_cast<const Signature*>(xmlObject)->getXMLSignature();\r
- if (!sig)\r
- throw SignatureException("Only a marshalled Signature object can be verified.");\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
- }\r
-};\r
-\r
class _addcert : public std::binary_function<X509Data*,XSECCryptoX509*,void> {\r
public:\r
void operator()(X509Data* bag, XSECCryptoX509* cert) const {\r
\r
try {\r
request->getSignature()->registerValidator(new SignatureProfileValidator());\r
- request->getSignature()->registerValidator(new TestValidator());\r
+ request->getSignature()->registerValidator(new SignatureValidator(m_key->clone()));\r
request->getSignature()->validate(true);\r
}\r
catch (XMLToolingException& e) {\r
#include "internal.h"\r
#include <saml/saml1/core/Protocols.h>\r
#include <saml/signature/SignatureProfileValidator.h>\r
-\r
-#include <xmltooling/signature/Signature.h>\r
+#include <xmltooling/signature/SignatureValidator.h>\r
\r
#include <fstream>\r
#include <openssl/pem.h>\r
using namespace opensaml::saml1;\r
using namespace xmlsignature;\r
\r
-class TestValidator : public Validator\r
-{\r
-public:\r
- TestValidator() {}\r
- virtual ~TestValidator() {}\r
-\r
- Validator* clone() const {\r
- return new TestValidator();\r
- }\r
-\r
- void validate(const XMLObject* xmlObject) const {\r
- DSIGSignature* sig=dynamic_cast<const Signature*>(xmlObject)->getXMLSignature();\r
- if (!sig)\r
- throw SignatureException("Only a marshalled Signature object can be verified.");\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
- }\r
-};\r
-\r
class _addcert : public std::binary_function<X509Data*,XSECCryptoX509*,void> {\r
public:\r
void operator()(X509Data* bag, XSECCryptoX509* cert) const {\r
\r
try {\r
assertion->getSignature()->registerValidator(new SignatureProfileValidator());\r
- assertion->getSignature()->registerValidator(new TestValidator());\r
+ assertion->getSignature()->registerValidator(new SignatureValidator(m_key->clone()));\r
assertion->getSignature()->validate(true);\r
response->getSignature()->registerValidator(new SignatureProfileValidator());\r
- response->getSignature()->registerValidator(new TestValidator());\r
+ response->getSignature()->registerValidator(new SignatureValidator(m_key->clone()));\r
response->getSignature()->validate(true);\r
}\r
catch (XMLToolingException& e) {\r