X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltooling%2Fsignature%2Fimpl%2FSignatureValidator.cpp;h=667a4393892325f0e58ed2d75f56e0a876185a81;hp=dab1311182a9114a4606cc69c76bb66f6fae40b3;hb=6505807a62569ce65803b448b07a6872c6af2512;hpb=e4d3ad9286b650c25c50b1b2226d1fda5e15f6a3 diff --git a/xmltooling/signature/impl/SignatureValidator.cpp b/xmltooling/signature/impl/SignatureValidator.cpp index dab1311..667a439 100644 --- a/xmltooling/signature/impl/SignatureValidator.cpp +++ b/xmltooling/signature/impl/SignatureValidator.cpp @@ -43,16 +43,17 @@ void SignatureValidator::validate(const Signature* sigObj) const DSIGSignature* sig=sigObj->getXMLSignature(); if (!sig) throw ValidationException("Signature does not exist yet."); - else if (!m_key && !m_resolver) - throw ValidationException("No KeyResolver or signing key set on Validator."); + else if (!m_key && !m_credential) + throw ValidationException("No Credential or key set on Validator."); + + XSECCryptoKey* key = m_key ? m_key : (m_credential ? m_credential->getPublicKey() : NULL); + if (!key) + throw ValidationException("Credential did not contain a verification key."); try { - XSECCryptoKey* key = m_key ? m_key->clone() : m_resolver->resolveKey(sig->getKeyInfoList()); - if (!key) - throw ValidationException("Unable to resolve signing key."); - sig->setSigningKey(key); + sig->setSigningKey(key->clone()); if (!sig->verify()) - throw ValidationException("Digital signature does not validate with the given key."); + throw ValidationException("Digital signature does not validate with the supplied key."); } catch(XSECException& e) { auto_ptr_char temp(e.getMsg());