Reducing header overuse, non-inlining selected methods (CPPOST-35).
[shibboleth/cpp-opensaml.git] / saml / encryption / EncryptedKeyResolver.h
index 5d8daa8..c5b9cfe 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2007 Internet2
+ *  Copyright 2001-2009 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 /**
  * @file saml/encryption/EncryptedKeyResolver.h
  * 
- * SAML-specific encrypted key resolver 
+ * SAML-specific encrypted key resolver.
  */
 
 #ifndef __saml_enckeyres_h__
 #define __saml_enckeyres_h__
 
 #include <saml/base.h>
-#include <saml/saml2/core/Assertions.h>
 #include <xmltooling/encryption/EncryptedKeyResolver.h>
 
 namespace opensaml {
 
+    namespace saml2 {
+        class SAML_API EncryptedElementType;
+    };
+
     /**
      * SAML-specific encrypted key resolver.
      * 
@@ -38,23 +41,20 @@ namespace opensaml {
     class SAML_API EncryptedKeyResolver : public xmlencryption::EncryptedKeyResolver
     {
     public:
-        EncryptedKeyResolver(const saml2::EncryptedElementType& ref, const XMLCh* recipient=NULL)
-            : m_ref(ref), m_recipient(XMLString::replicate(recipient)) {
-        }
+        /**
+         * Constructor.
+         * 
+         * @param ref   reference to encrypted element
+         */
+        EncryptedKeyResolver(const saml2::EncryptedElementType& ref);
         
-        virtual ~EncryptedKeyResolver() {
-            XMLString::release(&m_recipient);
-        }
+        virtual ~EncryptedKeyResolver();
 
-        xmlencryption::EncryptedKey* resolveKey(xmlencryption::EncryptedData* encryptedData);
-        
-        EncryptedKeyResolver* clone() const {
-            return new EncryptedKeyResolver(m_ref, m_recipient);
-        }
+        const xmlencryption::EncryptedKey* resolveKey(const xmlencryption::EncryptedData& encryptedData, const XMLCh* recipient=NULL) const;
      
     protected:
+        /** Reference to encrypted element. */
         const saml2::EncryptedElementType& m_ref;
-        XMLCh* m_recipient;
     };
 
 };