using namespace xmlencryption;
using namespace std;
-EncryptedKey* opensaml::EncryptedKeyResolver::resolveKey(EncryptedData* encryptedData)
+EncryptedKey* opensaml::EncryptedKeyResolver::resolveKey(EncryptedData& encryptedData) const
{
const vector<EncryptedKey*>& keys=m_ref.getEncryptedKeys();
for (vector<EncryptedKey*>::const_iterator i=keys.begin(); i!=keys.end(); i++) {
XMLString::release(&m_recipient);
}
- xmlencryption::EncryptedKey* resolveKey(xmlencryption::EncryptedData* encryptedData);
-
- EncryptedKeyResolver* clone() const {
- return new EncryptedKeyResolver(m_ref, m_recipient);
- }
+ xmlencryption::EncryptedKey* resolveKey(xmlencryption::EncryptedData& encryptedData) const;
protected:
const saml2::EncryptedElementType& m_ref;
#include <xmltooling/XMLObjectBuilder.h>
#include <xmltooling/encryption/Encryption.h>
-#include <xmltooling/security/KeyResolver.h>
+#include <xmltooling/security/CredentialResolver.h>
#include <xmltooling/signature/Signature.h>
#include <xmltooling/util/DateTime.h>
* inside the message. The key decryption key should be supplied using the provided
* resolver. The recipient name may be used when multiple encrypted keys are found.
* The object returned will be unmarshalled around the decrypted DOM element, but the
- * DOM itself will be released.
+ * DOM itself will be released.
*
- * @param KEKresolver resolver supplying key decryption key
+ * @param KEKresolver locked resolver supplying key decryption key
* @param recipient identifier naming the recipient (the entity performing the decryption)
* @return the decrypted and unmarshalled object
*/
- virtual xmltooling::XMLObject* decrypt(xmltooling::KeyResolver* KEKresolver, const XMLCh* recipient) const=0;
+ virtual xmltooling::XMLObject* decrypt(const xmltooling::CredentialResolver* KEKresolver, const XMLCh* recipient) const=0;
END_XMLOBJECT;
BEGIN_XMLOBJECT(SAML_API,EncryptedID,EncryptedElementType,SAML 2.0 EncryptedID element);
}
}
- XMLObject* decrypt(KeyResolver* KEKresolver, const XMLCh* recipient) const
+ XMLObject* decrypt(const CredentialResolver* KEKresolver, const XMLCh* recipient) const
{
if (!m_EncryptedData)
throw DecryptionException("No encrypted data present.");
- Decrypter decrypter(KEKresolver, new EncryptedKeyResolver(*this, recipient));
- DOMDocumentFragment* frag = decrypter.decryptData(m_EncryptedData);
+ EncryptedKeyResolver ekr(*this, recipient);
+ Decrypter decrypter(KEKresolver, &ekr);
+ DOMDocumentFragment* frag = decrypter.decryptData(*m_EncryptedData);
if (frag->hasChildNodes() && frag->getFirstChild()==frag->getLastChild()) {
DOMNode* plaintext=frag->getFirstChild();
if (plaintext->getNodeType()==DOMNode::ELEMENT_NODE) {
}
}
- XMLObject* decrypt(KeyResolver* KEKresolver, const XMLCh* recipient) const
+ XMLObject* decrypt(const CredentialResolver* KEKresolver, const XMLCh* recipient) const
{
if (!m_EncryptedData)
throw DecryptionException("No encrypted data present.");
- Decrypter decrypter(KEKresolver, new EncryptedKeyResolver(*this, recipient));
- DOMDocumentFragment* frag = decrypter.decryptData(m_EncryptedData);
+ EncryptedKeyResolver ekr(*this, recipient);
+ Decrypter decrypter(KEKresolver, &ekr);
+ DOMDocumentFragment* frag = decrypter.decryptData(*m_EncryptedData);
if (frag->hasChildNodes() && frag->getFirstChild()==frag->getLastChild()) {
DOMNode* plaintext=frag->getFirstChild();
if (plaintext->getNodeType()==DOMNode::ELEMENT_NODE) {