New KeyResolver/Validator/Encrypter/Decrypter classes.
[shibboleth/cpp-xmltooling.git] / xmltooling / signature / impl / SignatureValidator.cpp
index e6b1cec..ab41546 100644 (file)
@@ -43,9 +43,14 @@ 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
 \r
     try {\r
-        sig->setSigningKey(m_key->clone());\r
+        XSECCryptoKey* key=m_resolver->resolveKey(sig->getKeyInfoList());\r
+        if (!key)\r
+            throw ValidationException("Unable to resolve signing key.");\r
+        sig->setSigningKey(key);\r
         if (!sig->verify())\r
             throw ValidationException("Digital signature does not validate with the given key.");\r
     }\r