Allow sig validator to use a specific key.
[shibboleth/cpp-xmltooling.git] / xmltooling / signature / impl / SignatureValidator.cpp
index ab41546..ac65a40 100644 (file)
@@ -43,11 +43,11 @@ void SignatureValidator::validate(const Signature* sigObj) const
     DSIGSignature* sig=sigObj->getXMLSignature();\r
     if (!sig)\r
         throw ValidationException("Signature does not exist yet.");\r
-    else if (!m_resolver)\r
-        throw ValidationException("No KeyResolver set on Validator.");\r
+    else if (!m_key && !m_resolver)\r
+        throw ValidationException("No KeyResolver or signing key set on Validator.");\r
 \r
     try {\r
-        XSECCryptoKey* key=m_resolver->resolveKey(sig->getKeyInfoList());\r
+        XSECCryptoKey* key = m_key ? m_key->clone() : m_resolver->resolveKey(sig->getKeyInfoList());\r
         if (!key)\r
             throw ValidationException("Unable to resolve signing key.");\r
         sig->setSigningKey(key);\r