[cpp-opensaml] branch master updated: CPPOST-108 - auto_ptr cleanup

Scott Cantor cantor.2 at osu.edu
Mon Apr 9 16:25:43 EDT 2018


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch master
in repository cpp-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-opensaml.git;a=commit;h=b5859487c0fed5c8a5e39c8844557731f2c66927

The following commit(s) were added to refs/heads/master by this push:
       new  b585948   CPPOST-108 - auto_ptr cleanup
b585948 is described below

commit b5859487c0fed5c8a5e39c8844557731f2c66927
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Apr 9 16:25:04 2018 -0400

    CPPOST-108 - auto_ptr cleanup
    
    https://issues.shibboleth.net/jira/browse/CPPOST-108
---
 saml/binding/SecurityPolicy.h                      |  8 ++---
 saml/binding/impl/SOAPClient.cpp                   |  2 +-
 saml/binding/impl/SimpleSigningRule.cpp            |  3 +-
 saml/profile/impl/IgnoreRule.cpp                   |  9 +++---
 saml/saml1/binding/impl/SAML1ArtifactEncoder.cpp   |  4 ++-
 saml/saml1/binding/impl/SAML1SOAPClient.cpp        |  6 ++--
 saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp   |  4 ++-
 saml/saml2/binding/impl/SAML2ECPEncoder.cpp        |  4 ++-
 saml/saml2/binding/impl/SAML2POSTEncoder.cpp       |  4 ++-
 saml/saml2/binding/impl/SAML2SOAPClient.cpp        |  6 ++--
 .../impl/AbstractDynamicMetadataProvider.cpp       |  4 ++-
 .../metadata/impl/ChainingMetadataProvider.cpp     |  2 +-
 .../metadata/impl/EntityRoleMetadataFilter.cpp     |  6 ++--
 saml/saml2/metadata/impl/NullMetadataProvider.cpp  |  4 ++-
 .../metadata/impl/SignatureMetadataFilter.cpp      |  6 ++--
 samlsign/samlsign.cpp                              |  8 +++--
 samltest/data/saml2/metadata/BadChain.xml          |  4 +--
 .../data/saml2/metadata/XMLMetadataProvider.xml    |  4 +--
 .../saml2/metadata/XMLMetadataProviderBadSig.xml   |  4 +--
 samltest/encryption/EncryptedAssertionTest.h       | 29 +++++++++--------
 samltest/internal.h                                | 37 +++++++++++-----------
 samltest/saml1/binding/SAML1ArtifactTest.h         |  6 ++--
 samltest/saml1/binding/SAML1POSTTest.h             |  6 ++--
 samltest/saml1/core/impl/ActionTest.h              |  4 +--
 samltest/saml1/core/impl/AdviceTest.h              |  4 +--
 .../saml1/core/impl/AssertionIDReferenceTest.h     |  4 +--
 samltest/saml1/core/impl/AssertionTest.h           | 18 +++++------
 samltest/saml1/core/impl/AttributeDesignatorTest.h |  4 +--
 samltest/saml1/core/impl/AttributeStatementTest.h  |  4 +--
 samltest/saml1/core/impl/AttributeTest.h           |  6 ++--
 .../core/impl/AudienceRestrictionConditionTest.h   |  4 +--
 samltest/saml1/core/impl/AudienceTest.h            |  4 +--
 .../saml1/core/impl/AuthenticationStatementTest.h  | 10 +++---
 samltest/saml2/binding/SAML2ArtifactTest.h         | 10 +++---
 samltest/saml2/binding/SAML2POSTTest.h             | 16 +++++-----
 samltest/saml2/binding/SAML2RedirectTest.h         |  8 ++---
 samltest/saml2/core/impl/Advice20Test.h            |  4 +--
 samltest/saml2/core/impl/Artifact20Test.h          |  2 +-
 samltest/saml2/core/impl/ArtifactResolve20Test.h   | 23 +++++++-------
 samltest/saml2/core/impl/ArtifactResponse20Test.h  | 25 +++++++--------
 samltest/saml2/core/impl/Assertion20Test.h         | 17 +++++-----
 samltest/saml2/core/impl/AssertionIDRef20Test.h    |  2 +-
 .../saml2/core/impl/AssertionIDRequest20Test.h     | 23 +++++++-------
 samltest/saml2/core/impl/AssertionURIRef20Test.h   |  3 +-
 samltest/saml2/core/impl/Attribute20Test.h         |  6 ++--
 samltest/saml2/core/impl/AttributeQuery20Test.h    | 23 +++++++-------
 .../saml2/core/impl/AttributeStatement20Test.h     |  4 +--
 samltest/saml2/core/impl/Audience20Test.h          |  2 +-
 .../saml2/core/impl/AudienceRestriction20Test.h    |  4 +--
 .../core/impl/AuthenticatingAuthority20Test.h      |  2 +-
 samltest/saml2/core/impl/AuthnContext20Test.h      |  4 +--
 .../saml2/core/impl/AuthnContextClassRef20Test.h   |  2 +-
 .../saml2/core/impl/AuthnContextDeclRef20Test.h    |  2 +-
 samltest/saml2/core/impl/AuthnQuery20Test.h        | 23 +++++++-------
 samltest/saml2/core/impl/AuthnRequest20Test.h      | 23 +++++++-------
 samltest/saml2/core/impl/AuthnStatement20Test.h    | 16 +++++-----
 .../saml2/core/impl/AuthzDecisionQuery20Test.h     | 23 +++++++-------
 .../saml2/core/impl/AuthzDecisionStatement20Test.h |  4 +--
 samltest/saml2/core/impl/Conditions20Test.h        | 23 +++++++-------
 samltest/saml2/core/impl/Evidence20Test.h          |  4 +--
 samltest/saml2/core/impl/GetComplete20Test.h       |  2 +-
 samltest/saml2/core/impl/IDPEntry20Test.h          |  4 +--
 samltest/saml2/core/impl/IDPList20Test.h           |  4 +--
 samltest/saml2/core/impl/Issuer20Test.h            |  4 +--
 .../core/impl/KeyInfoConfirmationDataType20Test.h  | 22 ++++++-------
 samltest/saml2/core/impl/LogoutRequest20Test.h     | 31 +++++++++---------
 samltest/saml2/core/impl/LogoutResponse20Test.h    | 23 +++++++-------
 .../saml2/core/impl/ManageNameIDRequest20Test.h    | 23 +++++++-------
 .../saml2/core/impl/ManageNameIDResponse20Test.h   | 23 +++++++-------
 samltest/saml2/core/impl/NameID20Test.h            |  4 +--
 .../saml2/core/impl/NameIDMappingRequest20Test.h   | 23 +++++++-------
 .../saml2/core/impl/NameIDMappingResponse20Test.h  | 23 +++++++-------
 samltest/saml2/core/impl/NameIDPolicy20Test.h      |  4 +--
 samltest/saml2/core/impl/NameIDType20Test.h        |  4 +--
 samltest/saml2/core/impl/NewEncryptedID20Test.h    |  6 ++--
 samltest/saml2/core/impl/NewID20Test.h             |  2 +-
 samltest/saml2/core/impl/OneTimeUse20Test.h        |  3 +-
 samltest/saml2/core/impl/ProxyRestriction20Test.h  |  6 ++--
 .../saml2/core/impl/RequestedAuthnContext20Test.h  |  9 +++---
 samltest/saml2/core/impl/RequesterID20Test.h       |  2 +-
 samltest/saml2/core/impl/Response20Test.h          | 29 ++++++++---------
 samltest/saml2/core/impl/Scoping20Test.h           |  6 ++--
 samltest/saml2/core/impl/SessionIndex20Test.h      |  2 +-
 samltest/saml2/core/impl/Status20Test.h            |  4 +--
 samltest/saml2/core/impl/StatusCode20Test.h        |  4 +--
 samltest/saml2/core/impl/StatusDetail20Test.h      |  4 +--
 samltest/saml2/core/impl/StatusMessage20Test.h     |  2 +-
 samltest/saml2/core/impl/Subject20Test.h           |  4 +--
 .../saml2/core/impl/SubjectConfirmation20Test.h    |  4 +--
 .../core/impl/SubjectConfirmationData20Test.h      | 22 ++++++-------
 samltest/saml2/core/impl/SubjectLocality20Test.h   |  4 +--
 samltest/saml2/core/impl/Terminate20Test.h         |  2 +-
 samltest/saml2/metadata/XMLMetadataProviderTest.h  | 36 ++++++++++-----------
 samltest/saml2/profile/SAML2PolicyTest.h           | 14 ++++----
 samltest/security/ExplicitKeyTrustEngineTest.h     |  8 ++---
 samltest/security/StaticPKIXTrustEngineTest.h      |  8 ++---
 samltest/signature/SAML1AssertionTest.h            | 10 +++---
 samltest/signature/SAML1RequestTest.h              | 10 +++---
 samltest/signature/SAML1ResponseTest.h             | 10 +++---
 samltest/signature/SAML2AssertionTest.h            | 10 +++---
 samltest/signature/SAMLSignatureTestBase.h         | 11 ++++---
 101 files changed, 481 insertions(+), 475 deletions(-)

diff --git a/saml/binding/SecurityPolicy.h b/saml/binding/SecurityPolicy.h
index 5d0ba22..47b29ec 100644
--- a/saml/binding/SecurityPolicy.h
+++ b/saml/binding/SecurityPolicy.h
@@ -31,7 +31,7 @@
 
 #include <ctime>
 #include <vector>
-#include <memory>
+#include <boost/scoped_ptr.hpp>
 #include <xmltooling/unicode.h>
 
 #if defined (_MSC_VER)
@@ -403,15 +403,15 @@ namespace opensaml {
         // information extracted from message
         xmltooling::xstring m_messageID;
         time_t m_issueInstant;
-        std::auto_ptr<saml2::Issuer> m_issuer;
+        boost::scoped_ptr<saml2::Issuer> m_issuer;
         const saml2md::RoleDescriptor* m_issuerRole;
         bool m_authenticated;
 
         // components governing policy rules
-        std::auto_ptr<IssuerMatchingPolicy> m_matchingPolicy;
+        boost::scoped_ptr<IssuerMatchingPolicy> m_matchingPolicy;
         std::vector<const SecurityPolicyRule*> m_rules;
         const saml2md::MetadataProvider* m_metadata;
-        std::auto_ptr<xmltooling::QName> m_role;
+        boost::scoped_ptr<xmltooling::QName> m_role;
         const xmltooling::TrustEngine* m_trust;
         bool m_validate;
         bool m_entityOnly;
diff --git a/saml/binding/impl/SOAPClient.cpp b/saml/binding/impl/SOAPClient.cpp
index 9345e66..772ac21 100644
--- a/saml/binding/impl/SOAPClient.cpp
+++ b/saml/binding/impl/SOAPClient.cpp
@@ -110,7 +110,7 @@ soap11::Envelope* SOAPClient::receive()
         }
 
         // Run policy against SOAP layer.
-        m_policy.evaluate(*(env.get()));
+        m_policy.evaluate(*env);
     }
     return env.release();
 }
diff --git a/saml/binding/impl/SimpleSigningRule.cpp b/saml/binding/impl/SimpleSigningRule.cpp
index 584431b..4f7ca24 100644
--- a/saml/binding/impl/SimpleSigningRule.cpp
+++ b/saml/binding/impl/SimpleSigningRule.cpp
@@ -50,6 +50,7 @@ using namespace std;
 
 using xmlsignature::KeyInfo;
 using xmlsignature::SignatureException;
+using boost::scoped_ptr;
 
 namespace opensaml {
     class SAML_DLLLOCAL SimpleSigningRule : public SecurityPolicyRule
@@ -205,7 +206,7 @@ bool SimpleSigningRule::evaluate(const XMLObject& message, const GenericRequest*
         }
     }
     
-    auto_ptr<KeyInfo> kjanitor(keyInfo);
+    scoped_ptr<KeyInfo> kjanitor(keyInfo);
     auto_ptr_XMLCh alg(sigAlgorithm);
 
     // Set up criteria object.
diff --git a/saml/profile/impl/IgnoreRule.cpp b/saml/profile/impl/IgnoreRule.cpp
index 5b9aa3a..9064289 100644
--- a/saml/profile/impl/IgnoreRule.cpp
+++ b/saml/profile/impl/IgnoreRule.cpp
@@ -39,6 +39,7 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
 
 namespace opensaml {
     class SAML_DLLLOCAL IgnoreRule : public SecurityPolicyRule
@@ -46,7 +47,7 @@ namespace opensaml {
     public:
         IgnoreRule(const DOMElement* e)
             : m_log(Category::getInstance(SAML_LOGCAT ".SecurityPolicyRule.Ignore")), m_qname(XMLHelper::getNodeValueAsQName(e)) {
-            if (!m_qname.get())
+            if (!m_qname)
                 throw SecurityPolicyException("No schema type or element name supplied to Ignore rule.");
         }
         virtual ~IgnoreRule() {}
@@ -56,12 +57,12 @@ namespace opensaml {
         }
         bool evaluate(const XMLObject& message, const GenericRequest* request, SecurityPolicy& policy) const {
             if (message.getSchemaType()) {
-                if (*m_qname.get() != *(message.getSchemaType()))
+                if (*m_qname != *(message.getSchemaType()))
                     return false;
                 m_log.info("ignoring condition with type (%s)", message.getSchemaType()->toString().c_str());
             }
             else {
-                if (*m_qname.get() != message.getElementQName())
+                if (*m_qname != message.getElementQName())
                     return false;
                 m_log.info("ignoring condition (%s)", message.getElementQName().toString().c_str());
             }
@@ -70,7 +71,7 @@ namespace opensaml {
 
     private:
         Category& m_log;
-        auto_ptr<xmltooling::QName> m_qname;
+        scoped_ptr<xmltooling::QName> m_qname;
     };
 
     SecurityPolicyRule* SAML_DLLLOCAL IgnoreRuleFactory(const DOMElement* const & e)
diff --git a/saml/saml1/binding/impl/SAML1ArtifactEncoder.cpp b/saml/saml1/binding/impl/SAML1ArtifactEncoder.cpp
index 552c214..dc733b0 100644
--- a/saml/saml1/binding/impl/SAML1ArtifactEncoder.cpp
+++ b/saml/saml1/binding/impl/SAML1ArtifactEncoder.cpp
@@ -48,6 +48,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml1p {              
         class SAML_DLLLOCAL SAML1ArtifactEncoder : public MessageEncoder
@@ -124,7 +126,7 @@ long SAML1ArtifactEncoder::encode(
     
     auto_ptr_char recipientID(recipient ? recipient->getEntityID() : nullptr);
     log.debug("obtaining new artifact for relying party (%s)", recipientID.get() ? recipientID.get() : "unknown");
-    auto_ptr<SAMLArtifact> artifact(artifactGenerator->generateSAML1Artifact(recipient));
+    scoped_ptr<SAMLArtifact> artifact(artifactGenerator->generateSAML1Artifact(recipient));
     
     // Store the assertion. Last step in storage will be to delete the XML.
     log.debug("storing artifact and content in map");
diff --git a/saml/saml1/binding/impl/SAML1SOAPClient.cpp b/saml/saml1/binding/impl/SAML1SOAPClient.cpp
index 60f5d7b..e436b47 100644
--- a/saml/saml1/binding/impl/SAML1SOAPClient.cpp
+++ b/saml/saml1/binding/impl/SAML1SOAPClient.cpp
@@ -43,6 +43,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 SAML1SOAPClient::SAML1SOAPClient(opensaml::SOAPClient& soaper, bool fatalSAMLErrors) : m_soaper(soaper), m_fatal(fatalSAMLErrors), m_correlate(nullptr)
 {
 }
@@ -54,11 +56,11 @@ SAML1SOAPClient::~SAML1SOAPClient()
 
 void SAML1SOAPClient::sendSAML(Request* request, const char* from, MetadataCredentialCriteria& to, const char* endpoint)
 {
-    auto_ptr<Envelope> env(EnvelopeBuilder::buildEnvelope());
+    scoped_ptr<Envelope> env(EnvelopeBuilder::buildEnvelope());
     Body* body = BodyBuilder::buildBody();
     env->setBody(body);
     body->getUnknownXMLObjects().push_back(request);
-    m_soaper.send(*env.get(), from, to, endpoint);
+    m_soaper.send(*env, from, to, endpoint);
     m_correlate = XMLString::replicate(request->getRequestID());
 }
 
diff --git a/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp b/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp
index 2e5c8ee..23bb28c 100644
--- a/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp
+++ b/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp
@@ -52,6 +52,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml2p {              
         class SAML_DLLLOCAL SAML2ArtifactEncoder : public MessageEncoder
@@ -172,7 +174,7 @@ long SAML2ArtifactEncoder::encode(
         throw BindingException("SAML 2.0 HTTP-Artifact Encoder requires an ArtifactGenerator instance.");
     auto_ptr_char recipientID(recipient ? recipient->getEntityID() : nullptr);
     log.debug("obtaining new artifact for relying party (%s)", recipientID.get() ? recipientID.get() : "unknown");
-    auto_ptr<SAMLArtifact> artifact(artifactGenerator->generateSAML2Artifact(recipient));
+    scoped_ptr<SAMLArtifact> artifact(artifactGenerator->generateSAML2Artifact(recipient));
 
     if (credential) {
         // Signature based on native XML signing.
diff --git a/saml/saml2/binding/impl/SAML2ECPEncoder.cpp b/saml/saml2/binding/impl/SAML2ECPEncoder.cpp
index 5ba1e43..2f84396 100644
--- a/saml/saml2/binding/impl/SAML2ECPEncoder.cpp
+++ b/saml/saml2/binding/impl/SAML2ECPEncoder.cpp
@@ -50,6 +50,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml2p {              
         
@@ -80,7 +82,7 @@ namespace opensaml {
         private:
             auto_ptr_XMLCh m_actor;
             const XMLCh* m_providerName;
-            auto_ptr<IDPList> m_idpList;
+            scoped_ptr<IDPList> m_idpList;
             AnyElementBuilder m_anyBuilder;
         };
 
diff --git a/saml/saml2/binding/impl/SAML2POSTEncoder.cpp b/saml/saml2/binding/impl/SAML2POSTEncoder.cpp
index 4040b3f..b66547b 100644
--- a/saml/saml2/binding/impl/SAML2POSTEncoder.cpp
+++ b/saml/saml2/binding/impl/SAML2POSTEncoder.cpp
@@ -52,6 +52,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml2p {              
         class SAML_DLLLOCAL SAML2POSTEncoder : public MessageEncoder
@@ -203,7 +205,7 @@ long SAML2POSTEncoder::encode(
         Signature::createRawSignature(credential->getPrivateKey(), signatureAlg, input.c_str(), input.length(), sigbuf, sizeof(sigbuf)-1);
         pmap.m_map["Signature"] = sigbuf;
 
-        auto_ptr<KeyInfo> keyInfo(credential->getKeyInfo());
+        scoped_ptr<KeyInfo> keyInfo(credential->getKeyInfo());
         if (keyInfo.get()) {
             string& kstring = pmap.m_map["KeyInfo"];
             XMLHelper::serialize(keyInfo->marshall((DOMDocument*)nullptr), kstring);
diff --git a/saml/saml2/binding/impl/SAML2SOAPClient.cpp b/saml/saml2/binding/impl/SAML2SOAPClient.cpp
index a78b8b2..36898c2 100644
--- a/saml/saml2/binding/impl/SAML2SOAPClient.cpp
+++ b/saml/saml2/binding/impl/SAML2SOAPClient.cpp
@@ -45,6 +45,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 SAML2SOAPClient::SAML2SOAPClient(opensaml::SOAPClient& soaper, bool fatalSAMLErrors)
     : m_soaper(soaper), m_fatal(fatalSAMLErrors), m_correlate(nullptr)
 {
@@ -57,11 +59,11 @@ SAML2SOAPClient::~SAML2SOAPClient()
 
 void SAML2SOAPClient::sendSAML(RequestAbstractType* request, const char* from, MetadataCredentialCriteria& to, const char* endpoint)
 {
-    auto_ptr<Envelope> env(EnvelopeBuilder::buildEnvelope());
+    scoped_ptr<Envelope> env(EnvelopeBuilder::buildEnvelope());
     Body* body = BodyBuilder::buildBody();
     env->setBody(body);
     body->getUnknownXMLObjects().push_back(request);
-    m_soaper.send(*env.get(), from, to, endpoint);
+    m_soaper.send(*env, from, to, endpoint);
     m_correlate = XMLString::replicate(request->getID());
 }
 
diff --git a/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp b/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp
index bfeec4d..384c18d 100644
--- a/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp
+++ b/saml/saml2/metadata/impl/AbstractDynamicMetadataProvider.cpp
@@ -51,6 +51,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 #include <limits>
 
 # ifndef min
@@ -147,7 +149,7 @@ void* AbstractDynamicMetadataProvider::cleanup_fn(void* pv)
     xmltooling::NDC ndc("cleanup");
 #endif
 
-    auto_ptr<Mutex> mutex(Mutex::create());
+    scoped_ptr<Mutex> mutex(Mutex::create());
     mutex->lock();
 
     Category& log = Category::getInstance(SAML_LOGCAT ".MetadataProvider.Dynamic");
diff --git a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
index 0cbaf8e..b09f751 100644
--- a/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
+++ b/saml/saml2/metadata/impl/ChainingMetadataProvider.cpp
@@ -125,7 +125,7 @@ namespace opensaml {
         private:
             bool m_firstMatch;
             scoped_ptr<Mutex> m_trackerLock;
-            auto_ptr<ThreadKey> m_tlsKey;
+            scoped_ptr<ThreadKey> m_tlsKey;
             mutable ptr_vector<MetadataProvider> m_providers;
             mutable set<tracker_t*> m_trackers;
             static void tracker_cleanup(void*);
diff --git a/saml/saml2/metadata/impl/EntityRoleMetadataFilter.cpp b/saml/saml2/metadata/impl/EntityRoleMetadataFilter.cpp
index 3f4b9ac..ce725fb 100644
--- a/saml/saml2/metadata/impl/EntityRoleMetadataFilter.cpp
+++ b/saml/saml2/metadata/impl/EntityRoleMetadataFilter.cpp
@@ -35,6 +35,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml2md {
 
@@ -75,8 +77,8 @@ EntityRoleMetadataFilter::EntityRoleMetadataFilter(const DOMElement* e)
 {
     e = XMLHelper::getFirstChildElement(e, RetainedRole);
     while (e) {
-        auto_ptr<xmltooling::QName> q(XMLHelper::getNodeValueAsQName(e));
-        if (q.get()) {
+        scoped_ptr<xmltooling::QName> q(XMLHelper::getNodeValueAsQName(e));
+        if (q) {
             if (*q == IDPSSODescriptor::ELEMENT_QNAME)
                 m_idp = true;
             else if (*q == SPSSODescriptor::ELEMENT_QNAME)
diff --git a/saml/saml2/metadata/impl/NullMetadataProvider.cpp b/saml/saml2/metadata/impl/NullMetadataProvider.cpp
index 2a06110..c1c052e 100644
--- a/saml/saml2/metadata/impl/NullMetadataProvider.cpp
+++ b/saml/saml2/metadata/impl/NullMetadataProvider.cpp
@@ -34,6 +34,8 @@ using namespace opensaml::saml2md;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml2md {
         class SAML_DLLLOCAL NullMetadataProvider : public AbstractDynamicMetadataProvider
@@ -53,7 +55,7 @@ namespace opensaml {
             EntityDescriptor* resolve(const MetadataProvider::Criteria& criteria) const;
 
         private:
-            auto_ptr<EntityDescriptor> m_template;
+            scoped_ptr<EntityDescriptor> m_template;
         }; 
 
         MetadataProvider* SAML_DLLLOCAL NullMetadataProviderFactory(const DOMElement* const & e)
diff --git a/saml/saml2/metadata/impl/SignatureMetadataFilter.cpp b/saml/saml2/metadata/impl/SignatureMetadataFilter.cpp
index a5f1f3f..9d83fbd 100644
--- a/saml/saml2/metadata/impl/SignatureMetadataFilter.cpp
+++ b/saml/saml2/metadata/impl/SignatureMetadataFilter.cpp
@@ -46,6 +46,8 @@ using namespace xmltooling::logging;
 using namespace xmltooling;
 using namespace std;
 
+using boost::scoped_ptr;
+
 namespace opensaml {
     namespace saml2md {
 
@@ -65,8 +67,8 @@ namespace opensaml {
             void verifySignature(Signature* sig, const XMLCh* peerName) const;
 
             bool m_verifyRoles,m_verifyName,m_verifyBackup;
-            auto_ptr<CredentialResolver> m_credResolver,m_dummyResolver;
-            auto_ptr<SignatureTrustEngine> m_trust;
+            scoped_ptr<CredentialResolver> m_credResolver,m_dummyResolver;
+            scoped_ptr<SignatureTrustEngine> m_trust;
             SignatureProfileValidator m_profileValidator;
             Category& m_log;
         };
diff --git a/samlsign/samlsign.cpp b/samlsign/samlsign.cpp
index a86fdeb..c868e41 100644
--- a/samlsign/samlsign.cpp
+++ b/samlsign/samlsign.cpp
@@ -66,6 +66,8 @@ using namespace opensaml;
 using namespace xercesc;
 using namespace std;
 
+using boost::scoped_ptr;
+
 template<class T> T* buildPlugin(const char* path, PluginManager<T,string,const DOMElement*>& mgr)
 {
     ifstream in(path);
@@ -237,7 +239,7 @@ int main(int argc,char* argv[])
 
         // Unmarshall it.
         XercesJanitor<DOMDocument> jan(doc);
-        auto_ptr<XMLObject> sourcewrapper(XMLObjectBuilder::buildOneFromElement(doc->getDocumentElement(), true));
+        scoped_ptr<XMLObject> sourcewrapper(XMLObjectBuilder::buildOneFromElement(doc->getDocumentElement(), true));
         jan.release();
 
         // Navigate to the selected node, or use the root if no ID specified.
@@ -313,7 +315,7 @@ int main(int argc,char* argv[])
                         cerr << "use of metadata option requires a protocol option" << endl;
                         return -1;
                     }
-                    auto_ptr<MetadataProvider> metadata(buildPlugin(m_param, conf.MetadataProviderManager));
+                    scoped_ptr<MetadataProvider> metadata(buildPlugin(m_param, conf.MetadataProviderManager));
                     metadata->init();
 
                     const XMLCh* ns = rns ? XMLString::transcode(rns) : samlconstants::SAML20MD_NS;
@@ -351,7 +353,7 @@ int main(int argc,char* argv[])
         }
         else {
             // Build a resolver to supply a credential.
-            auto_ptr<CredentialResolver> cr(
+            scoped_ptr<CredentialResolver> cr(
                 cr_param ? buildPlugin(cr_param, xmlconf.CredentialResolverManager) : buildSimpleResolver(key_param, cert_param)
                 );
             Locker locker(cr.get());
diff --git a/samltest/data/saml2/metadata/BadChain.xml b/samltest/data/saml2/metadata/BadChain.xml
index 7686f61..376e2f1 100644
--- a/samltest/data/saml2/metadata/BadChain.xml
+++ b/samltest/data/saml2/metadata/BadChain.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <MetadataProvider type="Chaining">
-    <MetadataFilter type="Signature" certificate="../../../samltest/data/incommon.pem" />
-    <MetadataFilter type="Signature" certificate="../../../samltest/data/incommon.pem" />
+    <MetadataFilter type="Signature" certificate="../samltest/data/incommon.pem" />
+    <MetadataFilter type="Signature" certificate="../samltest/data/incommon.pem" />
 </MetadataProvider>
diff --git a/samltest/data/saml2/metadata/XMLMetadataProvider.xml b/samltest/data/saml2/metadata/XMLMetadataProvider.xml
index 362b928..9ca8d46 100644
--- a/samltest/data/saml2/metadata/XMLMetadataProvider.xml
+++ b/samltest/data/saml2/metadata/XMLMetadataProvider.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<FilesystemMetadataProvider path="../../../samltest/data/saml2/metadata/InCommon-metadata.xml" validate="0">
+<FilesystemMetadataProvider path="../samltest/data/saml2/metadata/InCommon-metadata.xml" validate="0">
     <MetadataFilter type="Signature">
         <CredentialResolver type="File">
             <Certificate>
-                <Path>../../../samltest/data/incommon.pem</Path>
+                <Path>../samltest/data/incommon.pem</Path>
             </Certificate>
         </CredentialResolver>
     </MetadataFilter>
diff --git a/samltest/data/saml2/metadata/XMLMetadataProviderBadSig.xml b/samltest/data/saml2/metadata/XMLMetadataProviderBadSig.xml
index 1af0aea..3eb1b75 100644
--- a/samltest/data/saml2/metadata/XMLMetadataProviderBadSig.xml
+++ b/samltest/data/saml2/metadata/XMLMetadataProviderBadSig.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
- <FilesystemMetadataProvider path="../../../samltest/data/saml2/metadata/InCommon-metadata.xml" validate="0">
+ <FilesystemMetadataProvider path="../samltest/data/saml2/metadata/InCommon-metadata.xml" validate="0">
      <MetadataFilter type="Signature">
         <CredentialResolver type="File">
             <Certificate>
-                <Path>../../../samltest/data/cert.pem</Path>
+                <Path>../samltest/data/cert.pem</Path>
             </Certificate>
         </CredentialResolver>
     </MetadataFilter>
diff --git a/samltest/encryption/EncryptedAssertionTest.h b/samltest/encryption/EncryptedAssertionTest.h
index 43eb34c..2148a38 100644
--- a/samltest/encryption/EncryptedAssertionTest.h
+++ b/samltest/encryption/EncryptedAssertionTest.h
@@ -35,7 +35,7 @@ using namespace opensaml::saml2md;
 using namespace opensaml::saml2;
 
 class EncryptedAssertionTest : public CxxTest::TestSuite, public SAMLSignatureTestBase {
-    MetadataProvider* m_metadata;
+    scoped_ptr<MetadataProvider> m_metadata;
 public:
     void setUp() {
         childElementsFile  = data_path + "signature/SAML2Assertion.xml";
@@ -51,15 +51,16 @@ public:
         auto_ptr_XMLCh file(s.c_str());
         doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get());
 
-        m_metadata = opensaml::SAMLConfig::getConfig().MetadataProviderManager.newPlugin(
-            XML_METADATA_PROVIDER,doc->getDocumentElement()
+        m_metadata.reset(
+            opensaml::SAMLConfig::getConfig().MetadataProviderManager.newPlugin(
+                XML_METADATA_PROVIDER, doc->getDocumentElement()
+                )
             );
         m_metadata->init();
     }
 
     void tearDown() {
-        delete m_metadata;
-        m_metadata=nullptr;
+        m_metadata.reset(nullptr);
         SAMLSignatureTestBase::tearDown();
     }
 
@@ -87,7 +88,7 @@ public:
         ac->setAuthnContextClassRef(acc);
         statement->setAuthnContext(ac);
         
-        auto_ptr<Assertion> assertion(AssertionBuilder::buildAssertion());
+        scoped_ptr<Assertion> assertion(AssertionBuilder::buildAssertion());
         assertion->setID(id.get());
         assertion->setIssueInstant(issueInstant.get());
         assertion->setIssuer(is);
@@ -102,7 +103,7 @@ public:
         vector<Signature*> sigs(1,sig);
         CredentialCriteria cc;
         cc.setUsage(Credential::SIGNING_CREDENTIAL);
-        Locker locker(m_resolver);
+        Locker locker(m_resolver.get());
         const Credential* cred = m_resolver->resolve(&cc);
         TSM_ASSERT("Retrieved credential was null", cred!=nullptr);
 
@@ -110,21 +111,21 @@ public:
         try {
             rootElement=assertion->marshall((DOMDocument*)nullptr,&sigs,cred);
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
         
         // Now encrypt this puppy to the SP role in the example metadata.
-        auto_ptr<EncryptedAssertion> encrypted(EncryptedAssertionBuilder::buildEncryptedAssertion());
-        Locker mlocker(m_metadata);
+        scoped_ptr<EncryptedAssertion> encrypted(EncryptedAssertionBuilder::buildEncryptedAssertion());
+        Locker mlocker(m_metadata.get());
         MetadataProvider::Criteria mc("https://sp.example.org/", &SPSSODescriptor::ELEMENT_QNAME, samlconstants::SAML20P_NS);
         pair<const EntityDescriptor*,const RoleDescriptor*> sp = m_metadata->getEntityDescriptor(mc);
         TSM_ASSERT("No metadata for recipient.", sp.first!=nullptr); 
         TSM_ASSERT("No SP role for recipient.", sp.second!=nullptr);
         MetadataCredentialCriteria mcc(*sp.second);
         vector< pair<const MetadataProvider*,MetadataCredentialCriteria*> > recipients(
-            1, pair<const MetadataProvider*,MetadataCredentialCriteria*>(m_metadata, &mcc)
+            1, pair<const MetadataProvider*,MetadataCredentialCriteria*>(m_metadata.get(), &mcc)
             );
 #ifdef XSEC_OPENSSL_HAVE_GCM
         encrypted->encrypt(*assertion.get(), recipients, false, DSIGConstants::s_unicodeStrURIAES256_GCM);
@@ -141,8 +142,8 @@ public:
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
         
         // Unpack, then decypt with our key.
-        auto_ptr<EncryptedAssertion> encrypted2(dynamic_cast<EncryptedAssertion*>(b->buildFromDocument(doc)));
-        auto_ptr<Assertion> assertion2(dynamic_cast<Assertion*>(encrypted2->decrypt(*m_resolver, sp.first->getEntityID())));
+        scoped_ptr<EncryptedAssertion> encrypted2(dynamic_cast<EncryptedAssertion*>(b->buildFromDocument(doc)));
+        scoped_ptr<Assertion> assertion2(dynamic_cast<Assertion*>(encrypted2->decrypt(*m_resolver, sp.first->getEntityID())));
         assertEquals("Unmarshalled assertion does not match", expectedChildElementsDOM, assertion2.get(), false);
         
         // And check the signature.
@@ -152,7 +153,7 @@ public:
             spv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());
             sv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
diff --git a/samltest/internal.h b/samltest/internal.h
index 0352e8d..10706f4 100644
--- a/samltest/internal.h
+++ b/samltest/internal.h
@@ -39,6 +39,8 @@ using namespace xmltooling;
 using namespace xercesc;
 using namespace std;
 
+using boost::scoped_ptr;
+
 extern string data_path;
 
 class SAMLObjectBaseTestCase
@@ -152,15 +154,13 @@ public:
 class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
 
     public:
-        SAMLObjectValidatorBaseTestCase() : target(nullptr), targetQName(nullptr), builder(nullptr), validator(nullptr) {}
+        SAMLObjectValidatorBaseTestCase() : builder(nullptr) {}
 
-        virtual ~SAMLObjectValidatorBaseTestCase() {
-            delete validator;
-        }
+        virtual ~SAMLObjectValidatorBaseTestCase() {}
 
     protected: 
         /** The primary XMLObject which will be the target of a given test run */
-        XMLObject* target;
+        scoped_ptr<XMLObject> target;
 
         /** QName of the object to be tested */
         xmltooling::QName targetQName;
@@ -169,7 +169,7 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
         const XMLObjectBuilder* builder;
 
         /** Validator for the type corresponding to the test target */
-        Validator* validator;
+        scoped_ptr<Validator> validator;
 
         /** Subclasses should override to populate required elements and attributes */
         virtual void populateRequiredData() { }
@@ -191,10 +191,10 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
          * @param message
          * @param validateTarget
          */
-        void assertValidationPass(const char* message, XMLObject* validateTarget) {
+        void assertValidationPass(const char* message, scoped_ptr<XMLObject>& validateTarget) {
             try {
-                validator->validate(validateTarget);
-            } catch (ValidationException &e) {
+                validator->validate(validateTarget.get());
+            } catch (const ValidationException &e) {
                 TS_TRACE(message);
                 TS_TRACE("Expected success, but validation failure raised following ValidationException: ");
                 TS_FAIL(e.getMessage());
@@ -218,12 +218,12 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
          * @param message
          * @param validateTarget
          */
-        void assertValidationFail(const char* message, XMLObject* validateTarget) {
+        void assertValidationFail(const char* message, scoped_ptr<XMLObject>& validateTarget) {
             try {
-                validator->validate(validateTarget);
+                validator->validate(validateTarget.get());
                 TS_TRACE(message);
                 TS_FAIL("Validation success, expected failure to raise ValidationException");
-            } catch (ValidationException&) {
+            } catch (const ValidationException&) {
             }
         }
 
@@ -233,7 +233,7 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
          * @param targetQName QName of the type of object to build
          * @returns new XMLObject of type targetQName
          */
-        XMLObject* buildXMLObject(xmltooling::QName &targetQName) {
+        XMLObject* buildXMLObject(const xmltooling::QName &targetQName) {
             // Create the builder on the first request only, for efficiency
             if (builder == nullptr) {
                 builder = XMLObjectBuilder::getBuilder(targetQName);
@@ -250,18 +250,17 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
 
             TSM_ASSERT("targetQName was empty", targetQName.hasLocalPart());
 
-            TSM_ASSERT("validator was null", validator!=nullptr);
+            TSM_ASSERT("validator was null", validator.get() != nullptr);
 
-            target = buildXMLObject(targetQName);
-            TSM_ASSERT("XMLObject target was NULL", target!=nullptr);
+            target.reset(buildXMLObject(targetQName));
+            TSM_ASSERT("XMLObject target was NULL", target.get() != nullptr);
             populateRequiredData();
         }
 
         void tearDown() {
-            delete target;
-            target=nullptr;
+            target.reset(nullptr);
+            validator.reset(nullptr);
             SAMLObjectBaseTestCase::tearDown();
         }
 
 };
-
diff --git a/samltest/saml1/binding/SAML1ArtifactTest.h b/samltest/saml1/binding/SAML1ArtifactTest.h
index 7b8b6d0..adc1ed2 100644
--- a/samltest/saml1/binding/SAML1ArtifactTest.h
+++ b/samltest/saml1/binding/SAML1ArtifactTest.h
@@ -65,7 +65,7 @@ public:
             TSM_ASSERT("Retrieved credential was null", cred!=nullptr);
 
             // Encode message.
-            boost::scoped_ptr<MessageEncoder> encoder(
+            scoped_ptr<MessageEncoder> encoder(
                 SAMLConfig::getConfig().MessageEncoderManager.newPlugin(samlconstants::SAML1_PROFILE_BROWSER_ARTIFACT, nullptr)
                 );
             Locker locker(m_metadata.get());
@@ -82,11 +82,11 @@ public:
             
             // Decode message.
             string relayState;
-            boost::scoped_ptr<MessageDecoder> decoder(
+            scoped_ptr<MessageDecoder> decoder(
                 SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML1_PROFILE_BROWSER_ARTIFACT, nullptr)
                 );
             decoder->setArtifactResolver(this);
-            boost::scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+            scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
             
             // Test the results.
             TSM_ASSERT_EQUALS("TARGET was not the expected result.", relayState, "state");
diff --git a/samltest/saml1/binding/SAML1POSTTest.h b/samltest/saml1/binding/SAML1POSTTest.h
index b48e9bd..c79c9a9 100644
--- a/samltest/saml1/binding/SAML1POSTTest.h
+++ b/samltest/saml1/binding/SAML1POSTTest.h
@@ -70,7 +70,7 @@ public:
             XercesJanitor<DOMDocument> janitor2(encoder_config);
             encoder_config->appendChild(encoder_config->createElementNS(nullptr,lit1.get()));
             encoder_config->getDocumentElement()->setAttributeNS(nullptr,lit2.get(),lit3.get());
-            boost::scoped_ptr<MessageEncoder> encoder(
+            scoped_ptr<MessageEncoder> encoder(
                 SAMLConfig::getConfig().MessageEncoderManager.newPlugin(
                     samlconstants::SAML1_PROFILE_BROWSER_POST, encoder_config->getDocumentElement()
                     )
@@ -90,10 +90,10 @@ public:
             
             // Decode message.
             string relayState;
-            boost::scoped_ptr<MessageDecoder> decoder(
+            scoped_ptr<MessageDecoder> decoder(
                 SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML1_PROFILE_BROWSER_POST, nullptr)
                 );
-            boost::scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+            scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
             
             // Test the results.
             TSM_ASSERT_EQUALS("TARGET was not the expected result.", relayState, "state");
diff --git a/samltest/saml1/core/impl/ActionTest.h b/samltest/saml1/core/impl/ActionTest.h
index a4bb0a6..6ae3d5e 100644
--- a/samltest/saml1/core/impl/ActionTest.h
+++ b/samltest/saml1/core/impl/ActionTest.h
@@ -43,7 +43,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Action* action = dynamic_cast<Action*>(xo.get());
         TS_ASSERT(action!=nullptr);
         TSM_ASSERT("namespace attribute present", action->getNamespace()==nullptr);
@@ -51,7 +51,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Action* action = dynamic_cast<Action*>(xo.get());
         assertEquals("namespace attribute ", expectedNamespace, action->getNamespace());
         assertEquals("Contents ", expectedContents, action->getAction());
diff --git a/samltest/saml1/core/impl/AdviceTest.h b/samltest/saml1/core/impl/AdviceTest.h
index 81ae759..15546f9 100644
--- a/samltest/saml1/core/impl/AdviceTest.h
+++ b/samltest/saml1/core/impl/AdviceTest.h
@@ -43,7 +43,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Advice* advice = dynamic_cast<Advice*>(xo.get());
         TS_ASSERT(advice!=nullptr);
         TSM_ASSERT_EQUALS("Number of child AssertIDReference elements", 0, advice->getAssertionIDReferences().size());
@@ -51,7 +51,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Advice* advice = dynamic_cast<Advice*>(xo.get());
         TSM_ASSERT_EQUALS("Number of child AssertIDReference elements", 2, advice->getAssertionIDReferences().size());
         TSM_ASSERT_EQUALS("Number of child Assertion elements", 1, advice->getAssertions().size());
diff --git a/samltest/saml1/core/impl/AssertionIDReferenceTest.h b/samltest/saml1/core/impl/AssertionIDReferenceTest.h
index d47917a..49e7285 100644
--- a/samltest/saml1/core/impl/AssertionIDReferenceTest.h
+++ b/samltest/saml1/core/impl/AssertionIDReferenceTest.h
@@ -40,14 +40,14 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AssertionIDReference* assertionIDReference = dynamic_cast<AssertionIDReference*>(xo.get());
         TS_ASSERT(assertionIDReference!=nullptr);
         TSM_ASSERT("NCName present", assertionIDReference->getAssertionID()==nullptr);
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AssertionIDReference* assertionIDReference = dynamic_cast<AssertionIDReference*>(xo.get());
         assertEquals("NCName ", expectedNCName, assertionIDReference->getAssertionID());
     }
diff --git a/samltest/saml1/core/impl/AssertionTest.h b/samltest/saml1/core/impl/AssertionTest.h
index 70723cf..02eaa4a 100644
--- a/samltest/saml1/core/impl/AssertionTest.h
+++ b/samltest/saml1/core/impl/AssertionTest.h
@@ -26,14 +26,14 @@ using namespace opensaml::saml1;
 class AssertionTest : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
     int expectedMinorVersion;
     XMLCh* expectedIssuer;
-    XMLDateTime* expectedIssueInstant;
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedID;
 
 public:
     void setUp() {
         expectedID=XMLString::transcode("ident");
         expectedMinorVersion=1;
-        expectedIssueInstant=new XMLDateTime(XMLString::transcode("1970-01-02T01:01:02.100Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("1970-01-02T01:01:02.100Z")));
         expectedIssueInstant->parseDateTime();
         expectedIssuer=XMLString::transcode("issuer");
         singleElementFile = data_path + "saml1/core/impl/singleAssertion.xml";
@@ -45,12 +45,12 @@ public:
     void tearDown() {
         XMLString::release(&expectedID);
         XMLString::release(&expectedIssuer);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Assertion& assertion = dynamic_cast<Assertion&>(*xo.get());
         TSM_ASSERT("Issuer attribute", assertion.getIssuer()==nullptr);
         TSM_ASSERT_EQUALS("IssueInstant attribute", expectedIssueInstant->getEpoch(), assertion.getIssueInstant()->getEpoch());
@@ -67,7 +67,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Assertion& assertion = dynamic_cast<Assertion&>(*xo.get());
 
         assertEquals("Issuer attribute", expectedIssuer, assertion.getIssuer());
@@ -86,7 +86,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Assertion& assertion = dynamic_cast<Assertion&>(*xo.get());
 
         TSM_ASSERT("Issuer attribute", assertion.getIssuer()==nullptr);
@@ -104,13 +104,13 @@ public:
     void testSingleElementMarshall() {
         Assertion* assertion=AssertionBuilder::buildAssertion();
         assertion->setAssertionID(expectedID);
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertEquals(expectedDOM, assertion);
     }
 
     void testSingleElementOptionalAttributesMarshall() {
         Assertion* assertion=AssertionBuilder::buildAssertion();
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setAssertionID(expectedID);
         assertion->setIssuer(expectedIssuer);
         assertEquals(expectedOptionalAttributesDOM, assertion);
@@ -118,7 +118,7 @@ public:
 
     void testChildElementsMarshall() {
         Assertion* assertion=AssertionBuilder::buildAssertion();
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setAssertionID(expectedID);
         assertion->setConditions(ConditionsBuilder::buildConditions());
         assertion->setAdvice(AdviceBuilder::buildAdvice());
diff --git a/samltest/saml1/core/impl/AttributeDesignatorTest.h b/samltest/saml1/core/impl/AttributeDesignatorTest.h
index d61f2bd..c9d78a0 100644
--- a/samltest/saml1/core/impl/AttributeDesignatorTest.h
+++ b/samltest/saml1/core/impl/AttributeDesignatorTest.h
@@ -43,14 +43,14 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AttributeDesignator& ad = dynamic_cast<AttributeDesignator&>(*xo.get());
         TSM_ASSERT("AttributeName", ad.getAttributeName()==nullptr);
         TSM_ASSERT("AttributeNamespace", ad.getAttributeNamespace()==nullptr);
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AttributeDesignator& ad = dynamic_cast<AttributeDesignator&>(*xo.get());
         assertEquals("AttributeName", expectedAttributeName, ad.getAttributeName());
         assertEquals("AttributeNamespace", expectedAttributeNamespace, ad.getAttributeNamespace());
diff --git a/samltest/saml1/core/impl/AttributeStatementTest.h b/samltest/saml1/core/impl/AttributeStatementTest.h
index a370ebb..b0ca117 100644
--- a/samltest/saml1/core/impl/AttributeStatementTest.h
+++ b/samltest/saml1/core/impl/AttributeStatementTest.h
@@ -36,14 +36,14 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AttributeStatement& as = dynamic_cast<AttributeStatement&>(*xo.get());
         TSM_ASSERT("<Subject> element present", as.getSubject()==nullptr);
         TSM_ASSERT_EQUALS("Non zero count of <Attribute> elements", 0, as.getAttributes().size());
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AttributeStatement& as = dynamic_cast<AttributeStatement&>(*xo.get());
         TSM_ASSERT("<Subject> element not present", as.getSubject()!=nullptr);
         TSM_ASSERT_EQUALS("count of <Attribute> elements", 5, as.getAttributes().size());
diff --git a/samltest/saml1/core/impl/AttributeTest.h b/samltest/saml1/core/impl/AttributeTest.h
index bcb17cf..87bfa84 100644
--- a/samltest/saml1/core/impl/AttributeTest.h
+++ b/samltest/saml1/core/impl/AttributeTest.h
@@ -44,7 +44,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Attribute& a = dynamic_cast<Attribute&>(*xo.get());
         TSM_ASSERT("AttributeName", a.getAttributeName()==nullptr);
         TSM_ASSERT("AttributeNamespace", a.getAttributeNamespace()==nullptr);
@@ -52,14 +52,14 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Attribute& a = dynamic_cast<Attribute&>(*xo.get());
         assertEquals("AttributeName", expectedAttributeName, a.getAttributeName());
         assertEquals("AttributeNamespace", expectedAttributeNamespace, a.getAttributeNamespace());
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Attribute& a = dynamic_cast<Attribute&>(*xo.get());
         TSM_ASSERT_EQUALS("Number of <AttributeValue> subelements", 4, a.getAttributeValues().size());
     }
diff --git a/samltest/saml1/core/impl/AudienceRestrictionConditionTest.h b/samltest/saml1/core/impl/AudienceRestrictionConditionTest.h
index b0e7567..9856d92 100644
--- a/samltest/saml1/core/impl/AudienceRestrictionConditionTest.h
+++ b/samltest/saml1/core/impl/AudienceRestrictionConditionTest.h
@@ -36,13 +36,13 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AudienceRestrictionCondition& a = dynamic_cast<AudienceRestrictionCondition&>(*xo.get());
         TSM_ASSERT_EQUALS("Count of child Audience elements !=0", 0, a.getAudiences().size());
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AudienceRestrictionCondition& a = dynamic_cast<AudienceRestrictionCondition&>(*xo.get());
         TSM_ASSERT_EQUALS("Count of child Audience elements", 2, a.getAudiences().size());
     }
diff --git a/samltest/saml1/core/impl/AudienceTest.h b/samltest/saml1/core/impl/AudienceTest.h
index 2da4cab..c54e71f 100644
--- a/samltest/saml1/core/impl/AudienceTest.h
+++ b/samltest/saml1/core/impl/AudienceTest.h
@@ -40,13 +40,13 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Audience& a = dynamic_cast<Audience&>(*xo.get());
         TSM_ASSERT("Uri is non-null", a.getAudienceURI()==nullptr);
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Audience& a = dynamic_cast<Audience&>(*xo.get());
         assertEquals("Uri", expectedUri, a.getAudienceURI());
     }
diff --git a/samltest/saml1/core/impl/AuthenticationStatementTest.h b/samltest/saml1/core/impl/AuthenticationStatementTest.h
index 8468b85..84f9a6b 100644
--- a/samltest/saml1/core/impl/AuthenticationStatementTest.h
+++ b/samltest/saml1/core/impl/AuthenticationStatementTest.h
@@ -44,7 +44,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthenticationStatement& as = dynamic_cast<AuthenticationStatement&>(*xo.get());
         TSM_ASSERT("AuthenticationMethod attribute present", as.getAuthenticationMethod()==nullptr);
         TSM_ASSERT("AuthenticationInstant attribute present", as.getAuthenticationInstant()==nullptr);
@@ -55,7 +55,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AuthenticationStatement& as = dynamic_cast<AuthenticationStatement&>(*xo.get());
 
         assertEquals("AuthenticationMethod attribute", expectedAuthenticationMethod, as.getAuthenticationMethod());
@@ -63,11 +63,11 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthenticationStatement& as1 = dynamic_cast<AuthenticationStatement&>(*xo.get());
         as1.releaseThisAndChildrenDOM();
-        auto_ptr<AuthenticationStatement> as2(as1.cloneAuthenticationStatement());
-        AuthenticationStatement& as=*as2.get();
+        scoped_ptr<AuthenticationStatement> as2(as1.cloneAuthenticationStatement());
+        AuthenticationStatement& as=*as2;
 
         TSM_ASSERT("Subject element", as.getSubject()!=nullptr);
         TSM_ASSERT("SubjectLocality element", as.getSubjectLocality()!=nullptr);
diff --git a/samltest/saml2/binding/SAML2ArtifactTest.h b/samltest/saml2/binding/SAML2ArtifactTest.h
index d51d22b..c2339c7 100644
--- a/samltest/saml2/binding/SAML2ArtifactTest.h
+++ b/samltest/saml2/binding/SAML2ArtifactTest.h
@@ -66,7 +66,7 @@ public:
             toSend->setIssueInstant(time(nullptr));
 
             // Encode message.
-            boost::scoped_ptr<MessageEncoder> encoder(
+            scoped_ptr<MessageEncoder> encoder(
                 SAMLConfig::getConfig().MessageEncoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_ARTIFACT, nullptr)
                 );
             Locker locker(m_metadata.get());
@@ -83,11 +83,11 @@ public:
             
             // Decode message.
             string relayState;
-            boost::scoped_ptr<MessageDecoder> decoder(
+            scoped_ptr<MessageDecoder> decoder(
                 SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_ARTIFACT, nullptr)
                 );
             decoder->setArtifactResolver(this);
-            boost::scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+            scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
             
             // Test the results.
             TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");
@@ -101,7 +101,7 @@ public:
             policy.reset();
             TSM_ASSERT_THROWS("Did not catch the replay.", decoder->decode(relayState,*this,policy), BindingException);
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -145,7 +145,7 @@ public:
         sc->setValue(StatusCode::SUCCESS);
         response->marshall();
         SchemaValidators.validate(response.get());
-        policy.evaluate(*(response.get()), this);
+        policy.evaluate(*response, this);
         return response.release();
     }
 };
diff --git a/samltest/saml2/binding/SAML2POSTTest.h b/samltest/saml2/binding/SAML2POSTTest.h
index e8f01f9..7d8b947 100644
--- a/samltest/saml2/binding/SAML2POSTTest.h
+++ b/samltest/saml2/binding/SAML2POSTTest.h
@@ -70,7 +70,7 @@ public:
             XercesJanitor<DOMDocument> janitor2(encoder_config);
             encoder_config->appendChild(encoder_config->createElementNS(nullptr,lit1.get()));
             encoder_config->getDocumentElement()->setAttributeNS(nullptr,lit2.get(),lit3.get());
-            boost::scoped_ptr<MessageEncoder> encoder(
+            scoped_ptr<MessageEncoder> encoder(
                 SAMLConfig::getConfig().MessageEncoderManager.newPlugin(
                     samlconstants::SAML20_BINDING_HTTP_POST, encoder_config->getDocumentElement()
                     )
@@ -89,10 +89,10 @@ public:
             
             // Decode message.
             string relayState;
-            boost::scoped_ptr<MessageDecoder> decoder(
+            scoped_ptr<MessageDecoder> decoder(
                 SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_POST, nullptr)
                 );
-            boost::scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+            scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
             
             // Test the results.
             TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");
@@ -106,7 +106,7 @@ public:
             policy.reset();
             TSM_ASSERT_THROWS("Did not catch the replay.", decoder->decode(relayState,*this,policy), SecurityPolicyException);
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -147,7 +147,7 @@ public:
             XercesJanitor<DOMDocument> janitor2(encoder_config);
             encoder_config->appendChild(encoder_config->createElementNS(nullptr,lit1.get()));
             encoder_config->getDocumentElement()->setAttributeNS(nullptr,lit2.get(),lit3.get());
-            boost::scoped_ptr<MessageEncoder> encoder(
+            scoped_ptr<MessageEncoder> encoder(
                 SAMLConfig::getConfig().MessageEncoderManager.newPlugin(
                     samlconstants::SAML20_BINDING_HTTP_POST_SIMPLESIGN, encoder_config->getDocumentElement()
                     )
@@ -166,10 +166,10 @@ public:
             
             // Decode message.
             string relayState;
-            boost::scoped_ptr<MessageDecoder> decoder(
+            scoped_ptr<MessageDecoder> decoder(
                 SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_POST_SIMPLESIGN, nullptr)
                 );
-            boost::scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+            scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
             
             // Test the results.
             TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");
@@ -183,7 +183,7 @@ public:
             policy.reset();
             TSM_ASSERT_THROWS("Did not catch the replay.", decoder->decode(relayState,*this,policy), SecurityPolicyException);
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
diff --git a/samltest/saml2/binding/SAML2RedirectTest.h b/samltest/saml2/binding/SAML2RedirectTest.h
index 6ab4d99..ee08c53 100644
--- a/samltest/saml2/binding/SAML2RedirectTest.h
+++ b/samltest/saml2/binding/SAML2RedirectTest.h
@@ -62,7 +62,7 @@ public:
             toSend->setID(nullptr);
     
             // Encode message.
-            boost::scoped_ptr<MessageEncoder> encoder(
+            scoped_ptr<MessageEncoder> encoder(
                 SAMLConfig::getConfig().MessageEncoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_REDIRECT, nullptr)
                 );
             Locker locker(m_metadata.get());
@@ -79,10 +79,10 @@ public:
             
             // Decode message.
             string relayState;
-            boost::scoped_ptr<MessageDecoder> decoder(
+            scoped_ptr<MessageDecoder> decoder(
                 SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_REDIRECT, nullptr)
                 );
-            boost::scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+            scoped_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
             
             // Test the results.
             TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");
@@ -96,7 +96,7 @@ public:
             policy.reset();
             TSM_ASSERT_THROWS("Did not catch the replay.", decoder->decode(relayState,*this,policy), SecurityPolicyException);
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
diff --git a/samltest/saml2/core/impl/Advice20Test.h b/samltest/saml2/core/impl/Advice20Test.h
index dc3d92b..ec2e5c5 100644
--- a/samltest/saml2/core/impl/Advice20Test.h
+++ b/samltest/saml2/core/impl/Advice20Test.h
@@ -40,7 +40,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Advice* advice = dynamic_cast<Advice*>(xo.get());
         TS_ASSERT(advice!=nullptr);
 
@@ -52,7 +52,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Advice* advice= dynamic_cast<Advice*>(xo.get());
         TS_ASSERT(advice!=nullptr);
 
diff --git a/samltest/saml2/core/impl/Artifact20Test.h b/samltest/saml2/core/impl/Artifact20Test.h
index 7650e42..2899c5c 100644
--- a/samltest/saml2/core/impl/Artifact20Test.h
+++ b/samltest/saml2/core/impl/Artifact20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Artifact* artifact = dynamic_cast<Artifact*>(xo.get());
         TS_ASSERT(artifact!=nullptr);
         assertEquals("Artifact text content", expectedContent, artifact->getArtifact());
diff --git a/samltest/saml2/core/impl/ArtifactResolve20Test.h b/samltest/saml2/core/impl/ArtifactResolve20Test.h
index 3ec11d1..821d26e 100644
--- a/samltest/saml2/core/impl/ArtifactResolve20Test.h
+++ b/samltest/saml2/core/impl/ArtifactResolve20Test.h
@@ -30,7 +30,7 @@ class ArtifactResolve20Test : public CxxTest::TestSuite, public SAMLObjectBaseTe
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
 public:
     void setUp() {
@@ -38,7 +38,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/ArtifactResolve.xml";
@@ -52,12 +52,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         ArtifactResolve* request = dynamic_cast<ArtifactResolve*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("ID attribute", expectedID, request->getID());
@@ -71,7 +71,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         ArtifactResolve* request = dynamic_cast<ArtifactResolve*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("Consent attribute", expectedConsent, request->getConsent());
@@ -84,7 +84,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         ArtifactResolve* request= dynamic_cast<ArtifactResolve*>(xo.get());
         TS_ASSERT(request!=nullptr);
         TS_ASSERT(request->getIssuer()!=nullptr);
@@ -96,7 +96,7 @@ public:
     void testSingleElementMarshall() {
         ArtifactResolve* request=ArtifactResolveBuilder::buildArtifactResolve();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         assertEquals(expectedDOM, request);
     }
@@ -104,7 +104,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         ArtifactResolve* request=ArtifactResolveBuilder::buildArtifactResolve();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         request->setConsent(expectedConsent);
         request->setDestination(expectedDestination);
@@ -114,14 +114,13 @@ public:
     void testChildElementsMarshall() {
         ArtifactResolve* request=ArtifactResolveBuilder::buildArtifactResolve();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        request->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        request->addNamespace(ns);
         request->setIssuer(IssuerBuilder::buildIssuer());
         request->setArtifact(ArtifactBuilder::buildArtifact());
         assertEquals(expectedChildElementsDOM, request);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/ArtifactResponse20Test.h b/samltest/saml2/core/impl/ArtifactResponse20Test.h
index 077f4f9..fc95786 100644
--- a/samltest/saml2/core/impl/ArtifactResponse20Test.h
+++ b/samltest/saml2/core/impl/ArtifactResponse20Test.h
@@ -31,7 +31,7 @@ class ArtifactResponse20Test : public CxxTest::TestSuite, public SAMLObjectBaseT
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant;
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
     // The payload will be an AuthnRequest in this test.
     // AuthnRequest marshaller autogenerates ID, Version and IssueInstant if they are nullptr,
@@ -45,7 +45,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://sp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         authnRequestID = XMLString::transcode("test1"); 
@@ -63,12 +63,12 @@ public:
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
         XMLString::release(&authnRequestID);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         ArtifactResponse* response = dynamic_cast<ArtifactResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -84,7 +84,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         ArtifactResponse* response = dynamic_cast<ArtifactResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -100,7 +100,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         ArtifactResponse* response= dynamic_cast<ArtifactResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -116,7 +116,7 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         assertEquals(expectedDOM, response);
     }
@@ -127,7 +127,7 @@ public:
 
         response->setID(expectedID);
         response->setInResponseTo(expectedInResponseTo);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         response->setConsent(expectedConsent);
         response->setDestination(expectedDestination);
@@ -140,20 +140,19 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        response->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        response->addNamespace(ns);
         response->setIssuer(IssuerBuilder::buildIssuer());
         response->setStatus(StatusBuilder::buildStatus());
 
         AuthnRequest* authnRequest = AuthnRequestBuilder::buildAuthnRequest();
-        authnRequest->setIssueInstant(expectedIssueInstant);
+        authnRequest->setIssueInstant(expectedIssueInstant.get());
         authnRequest->setID(authnRequestID);
         response->setPayload(authnRequest);
 
         assertEquals(expectedChildElementsDOM, response);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/Assertion20Test.h b/samltest/saml2/core/impl/Assertion20Test.h
index 1899144..bda478f 100644
--- a/samltest/saml2/core/impl/Assertion20Test.h
+++ b/samltest/saml2/core/impl/Assertion20Test.h
@@ -27,16 +27,15 @@ using namespace opensaml::saml2;
 class Assertion20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
     const XMLCh* expectedVersion;
     XMLCh* expectedID;
-    XMLDateTime* expectedIssueInstant;
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
 public:
     void setUp() {
         expectedVersion = samlconstants::SAML20_VERSION;
         expectedID = XMLString::transcode("abc123");
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z")));
         expectedIssueInstant->parseDateTime();
 
-
         singleElementFile = data_path + "saml2/core/impl/Assertion.xml";
         singleElementOptionalAttributesFile = data_path + "saml2/core/impl/AssertionOptionalAttributes.xml";
         childElementsFile  = data_path + "saml2/core/impl/AssertionChildElements.xml";
@@ -44,13 +43,13 @@ public:
     }
 
     void tearDown() {
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         XMLString::release(&expectedID);
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Assertion* assertion = dynamic_cast<Assertion*>(xo.get());
         TS_ASSERT(assertion!=nullptr);
 
@@ -71,7 +70,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Assertion* assertion= dynamic_cast<Assertion*>(xo.get());
         TS_ASSERT(assertion!=nullptr);
 
@@ -94,7 +93,7 @@ public:
     void testSingleElementMarshall() {
         Assertion* assertion=AssertionBuilder::buildAssertion();
         assertion->setID(expectedID);
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertEquals(expectedDOM, assertion);
     }
 
@@ -103,7 +102,7 @@ public:
 
         Assertion* assertion=AssertionBuilder::buildAssertion();
         assertion->setID(expectedID);
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setIssuer(IssuerBuilder::buildIssuer());
         assertion->setSubject(SubjectBuilder::buildSubject());
         assertion->setConditions(ConditionsBuilder::buildConditions());
@@ -123,7 +122,7 @@ public:
         assertion=nullptr;
         assertion=AssertionBuilder::buildAssertion();
         assertion->setID(expectedID);
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setIssuer(IssuerBuilder::buildIssuer());
         assertion->setSubject(SubjectBuilder::buildSubject());
         assertion->setConditions(ConditionsBuilder::buildConditions());
diff --git a/samltest/saml2/core/impl/AssertionIDRef20Test.h b/samltest/saml2/core/impl/AssertionIDRef20Test.h
index 52aad45..9969860 100644
--- a/samltest/saml2/core/impl/AssertionIDRef20Test.h
+++ b/samltest/saml2/core/impl/AssertionIDRef20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AssertionIDRef* idref = dynamic_cast<AssertionIDRef*>(xo.get());
         TS_ASSERT(idref!=nullptr);
         assertEquals("AssertionIDRef text content", expectedContent, idref->getAssertionID());
diff --git a/samltest/saml2/core/impl/AssertionIDRequest20Test.h b/samltest/saml2/core/impl/AssertionIDRequest20Test.h
index d248606..0283225 100644
--- a/samltest/saml2/core/impl/AssertionIDRequest20Test.h
+++ b/samltest/saml2/core/impl/AssertionIDRequest20Test.h
@@ -30,7 +30,7 @@ class AssertionIDRequest20Test : public CxxTest::TestSuite, public SAMLObjectBas
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant; 
 
 public:
     void setUp() {
@@ -38,7 +38,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/AssertionIDRequest.xml";
@@ -52,12 +52,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AssertionIDRequest* request = dynamic_cast<AssertionIDRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("ID attribute", expectedID, request->getID());
@@ -71,7 +71,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AssertionIDRequest* request = dynamic_cast<AssertionIDRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("Consent attribute", expectedConsent, request->getConsent());
@@ -84,7 +84,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AssertionIDRequest* request= dynamic_cast<AssertionIDRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         TS_ASSERT(request->getIssuer()!=nullptr);
@@ -96,7 +96,7 @@ public:
     void testSingleElementMarshall() {
         AssertionIDRequest* request=AssertionIDRequestBuilder::buildAssertionIDRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         assertEquals(expectedDOM, request);
     }
@@ -104,7 +104,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         AssertionIDRequest* request=AssertionIDRequestBuilder::buildAssertionIDRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         request->setConsent(expectedConsent);
         request->setDestination(expectedDestination);
@@ -114,16 +114,15 @@ public:
     void testChildElementsMarshall() {
         AssertionIDRequest* request=AssertionIDRequestBuilder::buildAssertionIDRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        request->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        request->addNamespace(ns);
         request->setIssuer(IssuerBuilder::buildIssuer());
         request->getAssertionIDRefs().push_back(AssertionIDRefBuilder::buildAssertionIDRef());
         request->getAssertionIDRefs().push_back(AssertionIDRefBuilder::buildAssertionIDRef());
         request->getAssertionIDRefs().push_back(AssertionIDRefBuilder::buildAssertionIDRef());
         assertEquals(expectedChildElementsDOM, request);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/AssertionURIRef20Test.h b/samltest/saml2/core/impl/AssertionURIRef20Test.h
index f874a16..441af0b 100644
--- a/samltest/saml2/core/impl/AssertionURIRef20Test.h
+++ b/samltest/saml2/core/impl/AssertionURIRef20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AssertionURIRef* uriref = dynamic_cast<AssertionURIRef*>(xo.get());
         TS_ASSERT(uriref!=nullptr);
         assertEquals("AssertionURIRef text content", expectedContent, uriref->getAssertionURI());
@@ -51,5 +51,4 @@ public:
         assertEquals(expectedDOM, uriref);
     }
 
-
 };
diff --git a/samltest/saml2/core/impl/Attribute20Test.h b/samltest/saml2/core/impl/Attribute20Test.h
index 31d1198..674bb89 100644
--- a/samltest/saml2/core/impl/Attribute20Test.h
+++ b/samltest/saml2/core/impl/Attribute20Test.h
@@ -49,7 +49,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Attribute* attribute = dynamic_cast<Attribute*>(xo.get());
         TS_ASSERT(attribute!=nullptr);
 
@@ -62,7 +62,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Attribute* attribute = dynamic_cast<Attribute*>(xo.get());
         TS_ASSERT(attribute!=nullptr);
 
@@ -74,7 +74,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Attribute* attribute= dynamic_cast<Attribute*>(xo.get());
         TS_ASSERT(attribute!=nullptr);
 
diff --git a/samltest/saml2/core/impl/AttributeQuery20Test.h b/samltest/saml2/core/impl/AttributeQuery20Test.h
index 20ccae8..6a5d617 100644
--- a/samltest/saml2/core/impl/AttributeQuery20Test.h
+++ b/samltest/saml2/core/impl/AttributeQuery20Test.h
@@ -30,7 +30,7 @@ class AttributeQuery20Test : public CxxTest::TestSuite, public SAMLObjectBaseTes
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
 public:
     void setUp() {
@@ -38,7 +38,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/AttributeQuery.xml";
@@ -52,12 +52,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AttributeQuery* query = dynamic_cast<AttributeQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         assertEquals("ID attribute", expectedID, query->getID());
@@ -71,7 +71,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AttributeQuery* query = dynamic_cast<AttributeQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         assertEquals("Consent attribute", expectedConsent, query->getConsent());
@@ -84,7 +84,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AttributeQuery* query= dynamic_cast<AttributeQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         TS_ASSERT(query->getIssuer()!=nullptr);
@@ -97,7 +97,7 @@ public:
     void testSingleElementMarshall() {
         AttributeQuery* query=AttributeQueryBuilder::buildAttributeQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         //query->setVersion(expectedVersion);
         assertEquals(expectedDOM, query);
     }
@@ -105,7 +105,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         AttributeQuery* query=AttributeQueryBuilder::buildAttributeQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         //query->setVersion(expectedVersion);
         query->setConsent(expectedConsent);
         query->setDestination(expectedDestination);
@@ -115,10 +115,10 @@ public:
     void testChildElementsMarshall() {
         AttributeQuery* query=AttributeQueryBuilder::buildAttributeQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        query->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        query->addNamespace(ns);
         query->setIssuer(IssuerBuilder::buildIssuer());
         query->setSubject(SubjectBuilder::buildSubject());
         query->getAttributes().push_back(AttributeBuilder::buildAttribute());
@@ -126,7 +126,6 @@ public:
         query->getAttributes().push_back(AttributeBuilder::buildAttribute());
         query->getAttributes().push_back(AttributeBuilder::buildAttribute());
         assertEquals(expectedChildElementsDOM, query);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/AttributeStatement20Test.h b/samltest/saml2/core/impl/AttributeStatement20Test.h
index e3b672b..82f543c 100644
--- a/samltest/saml2/core/impl/AttributeStatement20Test.h
+++ b/samltest/saml2/core/impl/AttributeStatement20Test.h
@@ -38,7 +38,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AttributeStatement* statement = dynamic_cast<AttributeStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
@@ -47,7 +47,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AttributeStatement* statement= dynamic_cast<AttributeStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
diff --git a/samltest/saml2/core/impl/Audience20Test.h b/samltest/saml2/core/impl/Audience20Test.h
index 1ae38bb..31d8693 100644
--- a/samltest/saml2/core/impl/Audience20Test.h
+++ b/samltest/saml2/core/impl/Audience20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Audience* audience = dynamic_cast<Audience*>(xo.get());
         TS_ASSERT(audience!=nullptr);
         assertEquals("Audience text content", expectedContent, audience->getAudienceURI());
diff --git a/samltest/saml2/core/impl/AudienceRestriction20Test.h b/samltest/saml2/core/impl/AudienceRestriction20Test.h
index 7d86dfa..602ba6e 100644
--- a/samltest/saml2/core/impl/AudienceRestriction20Test.h
+++ b/samltest/saml2/core/impl/AudienceRestriction20Test.h
@@ -38,7 +38,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AudienceRestriction* ar = dynamic_cast<AudienceRestriction*>(xo.get());
         TS_ASSERT(ar!=nullptr);
 
@@ -46,7 +46,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AudienceRestriction* ar= dynamic_cast<AudienceRestriction*>(xo.get());
         TS_ASSERT(ar!=nullptr);
 
diff --git a/samltest/saml2/core/impl/AuthenticatingAuthority20Test.h b/samltest/saml2/core/impl/AuthenticatingAuthority20Test.h
index 0b41be4..45b5707 100644
--- a/samltest/saml2/core/impl/AuthenticatingAuthority20Test.h
+++ b/samltest/saml2/core/impl/AuthenticatingAuthority20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthenticatingAuthority* aa = dynamic_cast<AuthenticatingAuthority*>(xo.get());
         TS_ASSERT(aa!=nullptr);
         assertEquals("AuthenticatingAuthority text content", expectedContent, aa->getID());
diff --git a/samltest/saml2/core/impl/AuthnContext20Test.h b/samltest/saml2/core/impl/AuthnContext20Test.h
index 602cf72..0dcb4e6 100644
--- a/samltest/saml2/core/impl/AuthnContext20Test.h
+++ b/samltest/saml2/core/impl/AuthnContext20Test.h
@@ -38,7 +38,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthnContext* ac = dynamic_cast<AuthnContext*>(xo.get());
         TS_ASSERT(ac!=nullptr);
 
@@ -49,7 +49,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthnContext* ac= dynamic_cast<AuthnContext*>(xo.get());
         TS_ASSERT(ac!=nullptr);
 
diff --git a/samltest/saml2/core/impl/AuthnContextClassRef20Test.h b/samltest/saml2/core/impl/AuthnContextClassRef20Test.h
index 159b504..e87de8f 100644
--- a/samltest/saml2/core/impl/AuthnContextClassRef20Test.h
+++ b/samltest/saml2/core/impl/AuthnContextClassRef20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthnContextClassRef* classref = dynamic_cast<AuthnContextClassRef*>(xo.get());
         TS_ASSERT(classref!=nullptr);
         assertEquals("AuthnContextClassRef text content", expectedContent, classref->getReference());
diff --git a/samltest/saml2/core/impl/AuthnContextDeclRef20Test.h b/samltest/saml2/core/impl/AuthnContextDeclRef20Test.h
index 84610b4..18a3aad 100644
--- a/samltest/saml2/core/impl/AuthnContextDeclRef20Test.h
+++ b/samltest/saml2/core/impl/AuthnContextDeclRef20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthnContextDeclRef* declref = dynamic_cast<AuthnContextDeclRef*>(xo.get());
         TS_ASSERT(declref!=nullptr);
         assertEquals("AuthnContextDeclRef text content", expectedContent, declref->getReference());
diff --git a/samltest/saml2/core/impl/AuthnQuery20Test.h b/samltest/saml2/core/impl/AuthnQuery20Test.h
index 153bc9e..609d367 100644
--- a/samltest/saml2/core/impl/AuthnQuery20Test.h
+++ b/samltest/saml2/core/impl/AuthnQuery20Test.h
@@ -30,7 +30,7 @@ class AuthnQuery20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCas
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedSessionIndex; 
 
 public:
@@ -39,7 +39,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
         expectedSessionIndex = XMLString::transcode("session12345"); 
 
@@ -55,12 +55,12 @@ public:
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
         XMLString::release(&expectedSessionIndex);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthnQuery* query = dynamic_cast<AuthnQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         assertEquals("ID attribute", expectedID, query->getID());
@@ -75,7 +75,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AuthnQuery* query = dynamic_cast<AuthnQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         assertEquals("Consent attribute", expectedConsent, query->getConsent());
@@ -90,7 +90,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthnQuery* query= dynamic_cast<AuthnQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         TS_ASSERT(query->getIssuer()!=nullptr);
@@ -103,7 +103,7 @@ public:
     void testSingleElementMarshall() {
         AuthnQuery* query=AuthnQueryBuilder::buildAuthnQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         //query->setVersion(expectedVersion);
         assertEquals(expectedDOM, query);
     }
@@ -111,7 +111,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         AuthnQuery* query=AuthnQueryBuilder::buildAuthnQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         //query->setVersion(expectedVersion);
         query->setConsent(expectedConsent);
         query->setDestination(expectedDestination);
@@ -122,15 +122,14 @@ public:
     void testChildElementsMarshall() {
         AuthnQuery* query=AuthnQueryBuilder::buildAuthnQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        query->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        query->addNamespace(ns);
         query->setIssuer(IssuerBuilder::buildIssuer());
         query->setSubject(SubjectBuilder::buildSubject());
         query->setRequestedAuthnContext(RequestedAuthnContextBuilder::buildRequestedAuthnContext());
         assertEquals(expectedChildElementsDOM, query);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/AuthnRequest20Test.h b/samltest/saml2/core/impl/AuthnRequest20Test.h
index ffd17ea..12bac00 100644
--- a/samltest/saml2/core/impl/AuthnRequest20Test.h
+++ b/samltest/saml2/core/impl/AuthnRequest20Test.h
@@ -28,7 +28,7 @@ using namespace opensaml::saml2;
 class AuthnRequest20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
     XMLCh* expectedID; 
     XMLCh* expectedVersion; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
     bool expectedForceAuthn; 
@@ -43,7 +43,7 @@ public:
     void setUp() {
         expectedID = XMLString::transcode("abc123");; 
         expectedVersion = XMLString::transcode("2.0"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
@@ -69,12 +69,12 @@ public:
         XMLString::release(&expectedProtocolBinding);
         XMLString::release(&expectedAssertionConsumerServiceURL);
         XMLString::release(&expectedProviderName);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthnRequest* request = dynamic_cast<AuthnRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("ID attribute", expectedID, request->getID());
@@ -96,7 +96,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AuthnRequest* request = dynamic_cast<AuthnRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
 
@@ -123,7 +123,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthnRequest* request= dynamic_cast<AuthnRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         TS_ASSERT(request->getIssuer()!=nullptr);
@@ -143,7 +143,7 @@ public:
     void testSingleElementMarshall() {
         AuthnRequest* request=AuthnRequestBuilder::buildAuthnRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         assertEquals(expectedDOM, request);
     }
@@ -151,7 +151,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         AuthnRequest* request=AuthnRequestBuilder::buildAuthnRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         request->setConsent(expectedConsent);
         request->setDestination(expectedDestination);
@@ -168,10 +168,10 @@ public:
     void testChildElementsMarshall() {
         AuthnRequest* request=AuthnRequestBuilder::buildAuthnRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        request->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        request->addNamespace(ns);
         request->setIssuer(IssuerBuilder::buildIssuer());
         request->setSubject(SubjectBuilder::buildSubject());
         request->setNameIDPolicy(NameIDPolicyBuilder::buildNameIDPolicy());
@@ -179,7 +179,6 @@ public:
         request->setRequestedAuthnContext(RequestedAuthnContextBuilder::buildRequestedAuthnContext());
         request->setScoping(ScopingBuilder::buildScoping());
         assertEquals(expectedChildElementsDOM, request);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/AuthnStatement20Test.h b/samltest/saml2/core/impl/AuthnStatement20Test.h
index 71614d0..0530f60 100644
--- a/samltest/saml2/core/impl/AuthnStatement20Test.h
+++ b/samltest/saml2/core/impl/AuthnStatement20Test.h
@@ -25,13 +25,13 @@
 using namespace opensaml::saml2;
 
 class AuthnStatement20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
-    XMLDateTime* expectedAuthnInstant;
+    scoped_ptr<XMLDateTime> expectedAuthnInstant;
     XMLCh* expectedSessionIndex;
     XMLDateTime* expectedSessionNotOnOrAfter;
 
 public:
     void setUp() {
-        expectedAuthnInstant = new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z"));
+        expectedAuthnInstant.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z")));
         expectedAuthnInstant->parseDateTime();
         expectedSessionIndex = (XMLString::transcode("abc123"));
         expectedSessionNotOnOrAfter = new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z"));
@@ -44,14 +44,14 @@ public:
     }
     
     void tearDown() {
-        delete expectedAuthnInstant;
+        expectedAuthnInstant.reset();
         XMLString::release(&expectedSessionIndex);
         delete expectedSessionNotOnOrAfter;
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthnStatement* statement = dynamic_cast<AuthnStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
@@ -64,7 +64,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AuthnStatement* statement = dynamic_cast<AuthnStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
@@ -78,7 +78,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthnStatement* statement= dynamic_cast<AuthnStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
@@ -93,13 +93,13 @@ public:
 
     void testSingleElementMarshall() {
         AuthnStatement* statement=AuthnStatementBuilder::buildAuthnStatement();
-        statement->setAuthnInstant(expectedAuthnInstant);
+        statement->setAuthnInstant(expectedAuthnInstant.get());
         assertEquals(expectedDOM, statement);
     }
 
     void testSingleElementOptionalAttributesMarshall() {
         AuthnStatement* statement=AuthnStatementBuilder::buildAuthnStatement();
-        statement->setAuthnInstant(expectedAuthnInstant);
+        statement->setAuthnInstant(expectedAuthnInstant.get());
         statement->setSessionIndex(expectedSessionIndex);
         statement->setSessionNotOnOrAfter(expectedSessionNotOnOrAfter);
         assertEquals(expectedOptionalAttributesDOM, statement);
diff --git a/samltest/saml2/core/impl/AuthzDecisionQuery20Test.h b/samltest/saml2/core/impl/AuthzDecisionQuery20Test.h
index 01fa247..a98e64b 100644
--- a/samltest/saml2/core/impl/AuthzDecisionQuery20Test.h
+++ b/samltest/saml2/core/impl/AuthzDecisionQuery20Test.h
@@ -30,7 +30,7 @@ class AuthzDecisionQuery20Test : public CxxTest::TestSuite, public SAMLObjectBas
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedResource; 
 
 public:
@@ -39,7 +39,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
         expectedResource = XMLString::transcode("urn:string:resource");
 
@@ -55,12 +55,12 @@ public:
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
         XMLString::release(&expectedResource);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthzDecisionQuery* query = dynamic_cast<AuthzDecisionQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         assertEquals("ID attribute", expectedID, query->getID());
@@ -77,7 +77,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         AuthzDecisionQuery* query = dynamic_cast<AuthzDecisionQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         assertEquals("Consent attribute", expectedConsent, query->getConsent());
@@ -92,7 +92,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthzDecisionQuery* query= dynamic_cast<AuthzDecisionQuery*>(xo.get());
         TS_ASSERT(query!=nullptr);
         TS_ASSERT(query->getIssuer()!=nullptr);
@@ -106,7 +106,7 @@ public:
     void testSingleElementMarshall() {
         AuthzDecisionQuery* query=AuthzDecisionQueryBuilder::buildAuthzDecisionQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         //query->setVersion(expectedVersion);
         query->setResource(expectedResource);
         assertEquals(expectedDOM, query);
@@ -115,7 +115,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         AuthzDecisionQuery* query=AuthzDecisionQueryBuilder::buildAuthzDecisionQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         //query->setVersion(expectedVersion);
         query->setConsent(expectedConsent);
         query->setDestination(expectedDestination);
@@ -126,17 +126,16 @@ public:
     void testChildElementsMarshall() {
         AuthzDecisionQuery* query=AuthzDecisionQueryBuilder::buildAuthzDecisionQuery();
         query->setID(expectedID);
-        query->setIssueInstant(expectedIssueInstant);
+        query->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        query->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        query->addNamespace(ns);
         query->setIssuer(IssuerBuilder::buildIssuer());
         query->setSubject(SubjectBuilder::buildSubject());
         query->getActions().push_back(ActionBuilder::buildAction());
         query->getActions().push_back(ActionBuilder::buildAction());
         query->setEvidence(EvidenceBuilder::buildEvidence());
         assertEquals(expectedChildElementsDOM, query);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/AuthzDecisionStatement20Test.h b/samltest/saml2/core/impl/AuthzDecisionStatement20Test.h
index 16cd0db..a0c1242 100644
--- a/samltest/saml2/core/impl/AuthzDecisionStatement20Test.h
+++ b/samltest/saml2/core/impl/AuthzDecisionStatement20Test.h
@@ -44,7 +44,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         AuthzDecisionStatement* statement = dynamic_cast<AuthzDecisionStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
@@ -56,7 +56,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         AuthzDecisionStatement* statement= dynamic_cast<AuthzDecisionStatement*>(xo.get());
         TS_ASSERT(statement!=nullptr);
 
diff --git a/samltest/saml2/core/impl/Conditions20Test.h b/samltest/saml2/core/impl/Conditions20Test.h
index ccc7d0e..159b049 100644
--- a/samltest/saml2/core/impl/Conditions20Test.h
+++ b/samltest/saml2/core/impl/Conditions20Test.h
@@ -25,14 +25,14 @@
 using namespace opensaml::saml2;
 
 class Conditions20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
-    XMLDateTime* expectedNotBefore;
-    XMLDateTime* expectedNotOnOrAfter;
+    scoped_ptr<XMLDateTime> expectedNotBefore;
+    scoped_ptr<XMLDateTime> expectedNotOnOrAfter;
 
 public:
     void setUp() {
-        expectedNotBefore = new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z"));
+        expectedNotBefore.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z")));
         expectedNotBefore->parseDateTime();
-        expectedNotOnOrAfter = new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z"));
+        expectedNotOnOrAfter.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z")));
         expectedNotOnOrAfter->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/Conditions.xml";
@@ -42,13 +42,13 @@ public:
     }
 
     void tearDown() {
-        delete expectedNotBefore;
-        delete expectedNotOnOrAfter;
+        expectedNotBefore.reset();
+        expectedNotOnOrAfter.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Conditions* conditions = dynamic_cast<Conditions*>(xo.get());
         TS_ASSERT(conditions!=nullptr);
 
@@ -63,7 +63,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Conditions* conditions = dynamic_cast<Conditions*>(xo.get());
         TS_ASSERT(conditions!=nullptr);
 
@@ -77,7 +77,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Conditions* conditions= dynamic_cast<Conditions*>(xo.get());
         TS_ASSERT(conditions!=nullptr);
 
@@ -97,8 +97,8 @@ public:
 
     void testSingleElementOptionalAttributesMarshall() {
         Conditions* conditions=ConditionsBuilder::buildConditions();
-        conditions->setNotBefore(expectedNotBefore);
-        conditions->setNotOnOrAfter(expectedNotOnOrAfter);
+        conditions->setNotBefore(expectedNotBefore.get());
+        conditions->setNotOnOrAfter(expectedNotOnOrAfter.get());
         assertEquals(expectedOptionalAttributesDOM, conditions);
     }
 
@@ -117,7 +117,6 @@ public:
         assertEquals(expectedChildElementsDOM, conditions);
 
         // Note: assertEquals() above has already 'delete'-ed the XMLObject* it was passed
-        conditions=nullptr;
         conditions=ConditionsBuilder::buildConditions();
 
         //Test storing children as a Condition (each is a derived type of ConditionAbstractType)
diff --git a/samltest/saml2/core/impl/Evidence20Test.h b/samltest/saml2/core/impl/Evidence20Test.h
index 12723ef..f910577 100644
--- a/samltest/saml2/core/impl/Evidence20Test.h
+++ b/samltest/saml2/core/impl/Evidence20Test.h
@@ -38,7 +38,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Evidence* evidence = dynamic_cast<Evidence*>(xo.get());
         TS_ASSERT(evidence!=nullptr);
 
@@ -49,7 +49,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Evidence* evidence= dynamic_cast<Evidence*>(xo.get());
         TS_ASSERT(evidence!=nullptr);
 
diff --git a/samltest/saml2/core/impl/GetComplete20Test.h b/samltest/saml2/core/impl/GetComplete20Test.h
index 0483b77..c4a0695 100644
--- a/samltest/saml2/core/impl/GetComplete20Test.h
+++ b/samltest/saml2/core/impl/GetComplete20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         GetComplete* gc = dynamic_cast<GetComplete*>(xo.get());
         TS_ASSERT(gc!=nullptr);
         assertEquals("GetComplete text content", expectedContent, gc->getGetComplete());
diff --git a/samltest/saml2/core/impl/IDPEntry20Test.h b/samltest/saml2/core/impl/IDPEntry20Test.h
index 418720a..15c0557 100644
--- a/samltest/saml2/core/impl/IDPEntry20Test.h
+++ b/samltest/saml2/core/impl/IDPEntry20Test.h
@@ -49,14 +49,14 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         IDPEntry* entry = dynamic_cast<IDPEntry*>(xo.get());
         TS_ASSERT(entry!=nullptr);
         assertEquals("ProviderID attribute", expectedProviderID, entry->getProviderID());
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         IDPEntry* entry = dynamic_cast<IDPEntry*>(xo.get());
         TS_ASSERT(entry!=nullptr);
         assertEquals("ProviderID attribute", expectedProviderID, entry->getProviderID());
diff --git a/samltest/saml2/core/impl/IDPList20Test.h b/samltest/saml2/core/impl/IDPList20Test.h
index 2880553..e6aa790 100644
--- a/samltest/saml2/core/impl/IDPList20Test.h
+++ b/samltest/saml2/core/impl/IDPList20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         IDPList* list = dynamic_cast<IDPList*>(xo.get());
         TS_ASSERT(list!=nullptr);
 
@@ -48,7 +48,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         IDPList* list= dynamic_cast<IDPList*>(xo.get());
         TS_ASSERT(list!=nullptr);
         TS_ASSERT(list->getGetComplete()!=nullptr);
diff --git a/samltest/saml2/core/impl/Issuer20Test.h b/samltest/saml2/core/impl/Issuer20Test.h
index 328d474..50bf28f 100644
--- a/samltest/saml2/core/impl/Issuer20Test.h
+++ b/samltest/saml2/core/impl/Issuer20Test.h
@@ -54,7 +54,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Issuer* issuer = dynamic_cast<Issuer*>(xo.get());
         TS_ASSERT(issuer!=nullptr);
 
@@ -62,7 +62,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Issuer* issuer = dynamic_cast<Issuer*>(xo.get());
         TS_ASSERT(issuer!=nullptr);
 
diff --git a/samltest/saml2/core/impl/KeyInfoConfirmationDataType20Test.h b/samltest/saml2/core/impl/KeyInfoConfirmationDataType20Test.h
index 2589868..a3bc1aa 100644
--- a/samltest/saml2/core/impl/KeyInfoConfirmationDataType20Test.h
+++ b/samltest/saml2/core/impl/KeyInfoConfirmationDataType20Test.h
@@ -29,17 +29,17 @@ using xmlsignature::KeyInfoBuilder;
 //TODO need testing for ElementProxy and wildcard attributes/elements
 
 class KeyInfoConfirmationDataType20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
-    XMLDateTime* expectedNotBefore;
-    XMLDateTime* expectedNotOnOrAfter;
+    scoped_ptr<XMLDateTime> expectedNotBefore;
+    scoped_ptr<XMLDateTime> expectedNotOnOrAfter;
     XMLCh* expectedRecipient;
     XMLCh* expectedInResponseTo;
     XMLCh* expectedAddress;
 
 public:
     void setUp() {
-        expectedNotBefore = new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z"));
+        expectedNotBefore.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z")));
         expectedNotBefore->parseDateTime();
-        expectedNotOnOrAfter = new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z"));
+        expectedNotOnOrAfter.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z")));
         expectedNotOnOrAfter->parseDateTime();
         expectedRecipient = (XMLString::transcode("recipient"));
         expectedInResponseTo = (XMLString::transcode("inresponse"));
@@ -52,8 +52,8 @@ public:
     }
     
     void tearDown() {
-        delete expectedNotBefore;
-        delete expectedNotOnOrAfter;
+        expectedNotBefore.reset();
+        expectedNotOnOrAfter.reset();
         XMLString::release(&expectedRecipient);
         XMLString::release(&expectedInResponseTo);
         XMLString::release(&expectedAddress);
@@ -61,7 +61,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         KeyInfoConfirmationDataType* scd = dynamic_cast<KeyInfoConfirmationDataType*>(xo.get());
         TS_ASSERT(scd!=nullptr);
 
@@ -74,7 +74,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         KeyInfoConfirmationDataType* scd = dynamic_cast<KeyInfoConfirmationDataType*>(xo.get());
         TS_ASSERT(scd!=nullptr);
 
@@ -89,7 +89,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         KeyInfoConfirmationDataType* scd= dynamic_cast<KeyInfoConfirmationDataType*>(xo.get());
         TS_ASSERT(scd!=nullptr);
 
@@ -110,8 +110,8 @@ public:
 
     void testSingleElementOptionalAttributesMarshall() {
         KeyInfoConfirmationDataType* scd=KeyInfoConfirmationDataTypeBuilder::buildKeyInfoConfirmationDataType();
-        scd->setNotBefore(expectedNotBefore);
-        scd->setNotOnOrAfter(expectedNotOnOrAfter);
+        scd->setNotBefore(expectedNotBefore.get());
+        scd->setNotOnOrAfter(expectedNotOnOrAfter.get());
         scd->setRecipient(expectedRecipient);
         scd->setInResponseTo(expectedInResponseTo);
         scd->setAddress(expectedAddress);
diff --git a/samltest/saml2/core/impl/LogoutRequest20Test.h b/samltest/saml2/core/impl/LogoutRequest20Test.h
index d6c43d2..ff1daa1 100644
--- a/samltest/saml2/core/impl/LogoutRequest20Test.h
+++ b/samltest/saml2/core/impl/LogoutRequest20Test.h
@@ -28,22 +28,22 @@ using namespace opensaml::saml2;
 class LogoutRequest20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
     XMLCh* expectedID; 
     XMLCh* expectedVersion; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
     XMLCh* expectedReason; 
-    XMLDateTime* expectedNotOnOrAfter; 
+    scoped_ptr<XMLDateTime> expectedNotOnOrAfter;
 
 public:
     void setUp() {
         expectedID = XMLString::transcode("abc123");; 
         expectedVersion = XMLString::transcode("2.0"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
         expectedReason = XMLString::transcode("urn:string:reason"); 
-        expectedNotOnOrAfter = new XMLDateTime(XMLString::transcode("2006-02-21T20:45:00.000Z"));
+        expectedNotOnOrAfter.reset(new XMLDateTime(XMLString::transcode("2006-02-21T20:45:00.000Z")));
         expectedNotOnOrAfter->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/LogoutRequest.xml";
@@ -58,13 +58,13 @@ public:
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
         XMLString::release(&expectedReason);
-        delete expectedIssueInstant;
-        delete expectedNotOnOrAfter;
+        expectedIssueInstant.reset();
+        expectedNotOnOrAfter.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         LogoutRequest* request = dynamic_cast<LogoutRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("ID attribute", expectedID, request->getID());
@@ -81,7 +81,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         LogoutRequest* request = dynamic_cast<LogoutRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
 
@@ -100,7 +100,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         LogoutRequest* request= dynamic_cast<LogoutRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         TS_ASSERT(request->getIssuer()!=nullptr);
@@ -115,7 +115,7 @@ public:
     void testSingleElementMarshall() {
         LogoutRequest* request=LogoutRequestBuilder::buildLogoutRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         assertEquals(expectedDOM, request);
     }
@@ -123,28 +123,27 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         LogoutRequest* request=LogoutRequestBuilder::buildLogoutRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         request->setConsent(expectedConsent);
         request->setDestination(expectedDestination);
         request->setReason(expectedReason);
-        request->setNotOnOrAfter(expectedNotOnOrAfter);
+        request->setNotOnOrAfter(expectedNotOnOrAfter.get());
         assertEquals(expectedOptionalAttributesDOM, request);
     }
 
     void testChildElementsMarshall() {
         LogoutRequest* request=LogoutRequestBuilder::buildLogoutRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        request->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        request->addNamespace(ns);
         request->setIssuer(IssuerBuilder::buildIssuer());
         request->setNameID(NameIDBuilder::buildNameID());
         request->getSessionIndexs().push_back(SessionIndexBuilder::buildSessionIndex());
         request->getSessionIndexs().push_back(SessionIndexBuilder::buildSessionIndex());
         assertEquals(expectedChildElementsDOM, request);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/LogoutResponse20Test.h b/samltest/saml2/core/impl/LogoutResponse20Test.h
index 27aba5c..bade115 100644
--- a/samltest/saml2/core/impl/LogoutResponse20Test.h
+++ b/samltest/saml2/core/impl/LogoutResponse20Test.h
@@ -31,7 +31,7 @@ class LogoutResponse20Test : public CxxTest::TestSuite, public SAMLObjectBaseTes
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
 public:
     void setUp() {
@@ -40,7 +40,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://sp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/LogoutResponse.xml";
@@ -55,12 +55,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         LogoutResponse* response = dynamic_cast<LogoutResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -75,7 +75,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         LogoutResponse* response = dynamic_cast<LogoutResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -90,7 +90,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         LogoutResponse* response= dynamic_cast<LogoutResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -105,7 +105,7 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         assertEquals(expectedDOM, response);
     }
@@ -116,7 +116,7 @@ public:
 
         response->setID(expectedID);
         response->setInResponseTo(expectedInResponseTo);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         response->setConsent(expectedConsent);
         response->setDestination(expectedDestination);
@@ -129,15 +129,14 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        response->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        response->addNamespace(ns);
         response->setIssuer(IssuerBuilder::buildIssuer());
         response->setStatus(StatusBuilder::buildStatus());
 
         assertEquals(expectedChildElementsDOM, response);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/ManageNameIDRequest20Test.h b/samltest/saml2/core/impl/ManageNameIDRequest20Test.h
index e220a71..cc7c19d 100644
--- a/samltest/saml2/core/impl/ManageNameIDRequest20Test.h
+++ b/samltest/saml2/core/impl/ManageNameIDRequest20Test.h
@@ -28,7 +28,7 @@ using namespace opensaml::saml2;
 class ManageNameIDRequest20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
     XMLCh* expectedID; 
     XMLCh* expectedVersion; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
 
@@ -36,7 +36,7 @@ public:
     void setUp() {
         expectedID = XMLString::transcode("abc123");; 
         expectedVersion = XMLString::transcode("2.0"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
@@ -52,12 +52,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         ManageNameIDRequest* request = dynamic_cast<ManageNameIDRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("ID attribute", expectedID, request->getID());
@@ -75,7 +75,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         ManageNameIDRequest* request = dynamic_cast<ManageNameIDRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
 
@@ -93,7 +93,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         ManageNameIDRequest* request= dynamic_cast<ManageNameIDRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         TS_ASSERT(request->getIssuer()!=nullptr);
@@ -109,7 +109,7 @@ public:
     void testSingleElementMarshall() {
         ManageNameIDRequest* request=ManageNameIDRequestBuilder::buildManageNameIDRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         assertEquals(expectedDOM, request);
     }
@@ -117,7 +117,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         ManageNameIDRequest* request=ManageNameIDRequestBuilder::buildManageNameIDRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         request->setConsent(expectedConsent);
         request->setDestination(expectedDestination);
@@ -127,15 +127,14 @@ public:
     void testChildElementsMarshall() {
         ManageNameIDRequest* request=ManageNameIDRequestBuilder::buildManageNameIDRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        request->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        request->addNamespace(ns);
         request->setIssuer(IssuerBuilder::buildIssuer());
         request->setNameID(NameIDBuilder::buildNameID());
         request->setNewID(NewIDBuilder::buildNewID());
         assertEquals(expectedChildElementsDOM, request);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/ManageNameIDResponse20Test.h b/samltest/saml2/core/impl/ManageNameIDResponse20Test.h
index 3f019dd..1e5a85c 100644
--- a/samltest/saml2/core/impl/ManageNameIDResponse20Test.h
+++ b/samltest/saml2/core/impl/ManageNameIDResponse20Test.h
@@ -31,7 +31,7 @@ class ManageNameIDResponse20Test : public CxxTest::TestSuite, public SAMLObjectB
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
 public:
     void setUp() {
@@ -40,7 +40,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://sp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/ManageNameIDResponse.xml";
@@ -55,12 +55,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         ManageNameIDResponse* response = dynamic_cast<ManageNameIDResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -75,7 +75,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         ManageNameIDResponse* response = dynamic_cast<ManageNameIDResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -90,7 +90,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         ManageNameIDResponse* response= dynamic_cast<ManageNameIDResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -105,7 +105,7 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         assertEquals(expectedDOM, response);
     }
@@ -116,7 +116,7 @@ public:
 
         response->setID(expectedID);
         response->setInResponseTo(expectedInResponseTo);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         response->setConsent(expectedConsent);
         response->setDestination(expectedDestination);
@@ -129,15 +129,14 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        response->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        response->addNamespace(ns);
         response->setIssuer(IssuerBuilder::buildIssuer());
         response->setStatus(StatusBuilder::buildStatus());
 
         assertEquals(expectedChildElementsDOM, response);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/NameID20Test.h b/samltest/saml2/core/impl/NameID20Test.h
index 8b5617d..6850479 100644
--- a/samltest/saml2/core/impl/NameID20Test.h
+++ b/samltest/saml2/core/impl/NameID20Test.h
@@ -54,7 +54,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NameID* nameid = dynamic_cast<NameID*>(xo.get());
         TS_ASSERT(nameid!=nullptr);
 
@@ -62,7 +62,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         NameID* nameid = dynamic_cast<NameID*>(xo.get());
         TS_ASSERT(nameid!=nullptr);
 
diff --git a/samltest/saml2/core/impl/NameIDMappingRequest20Test.h b/samltest/saml2/core/impl/NameIDMappingRequest20Test.h
index 9191ef2..e4afc39 100644
--- a/samltest/saml2/core/impl/NameIDMappingRequest20Test.h
+++ b/samltest/saml2/core/impl/NameIDMappingRequest20Test.h
@@ -28,7 +28,7 @@ using namespace opensaml::saml2;
 class NameIDMappingRequest20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
     XMLCh* expectedID; 
     XMLCh* expectedVersion; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
 
@@ -36,7 +36,7 @@ public:
     void setUp() {
         expectedID = XMLString::transcode("abc123");; 
         expectedVersion = XMLString::transcode("2.0"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://idp.example.org/endpoint"); 
@@ -52,12 +52,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NameIDMappingRequest* request = dynamic_cast<NameIDMappingRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         assertEquals("ID attribute", expectedID, request->getID());
@@ -74,7 +74,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         NameIDMappingRequest* request = dynamic_cast<NameIDMappingRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
 
@@ -91,7 +91,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         NameIDMappingRequest* request= dynamic_cast<NameIDMappingRequest*>(xo.get());
         TS_ASSERT(request!=nullptr);
         TS_ASSERT(request->getIssuer()!=nullptr);
@@ -106,7 +106,7 @@ public:
     void testSingleElementMarshall() {
         NameIDMappingRequest* request=NameIDMappingRequestBuilder::buildNameIDMappingRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         assertEquals(expectedDOM, request);
     }
@@ -114,7 +114,7 @@ public:
     void testSingleElementOptionalAttributesMarshall() {
         NameIDMappingRequest* request=NameIDMappingRequestBuilder::buildNameIDMappingRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         //request->setVersion(expectedVersion);
         request->setConsent(expectedConsent);
         request->setDestination(expectedDestination);
@@ -124,15 +124,14 @@ public:
     void testChildElementsMarshall() {
         NameIDMappingRequest* request=NameIDMappingRequestBuilder::buildNameIDMappingRequest();
         request->setID(expectedID);
-        request->setIssueInstant(expectedIssueInstant);
+        request->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        request->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        request->addNamespace(ns);
         request->setIssuer(IssuerBuilder::buildIssuer());
         request->setNameID(NameIDBuilder::buildNameID());
         request->setNameIDPolicy(NameIDPolicyBuilder::buildNameIDPolicy());
         assertEquals(expectedChildElementsDOM, request);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/NameIDMappingResponse20Test.h b/samltest/saml2/core/impl/NameIDMappingResponse20Test.h
index bbe213d..f966c10 100644
--- a/samltest/saml2/core/impl/NameIDMappingResponse20Test.h
+++ b/samltest/saml2/core/impl/NameIDMappingResponse20Test.h
@@ -31,7 +31,7 @@ class NameIDMappingResponse20Test : public CxxTest::TestSuite, public SAMLObject
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
 public:
     void setUp() {
@@ -40,7 +40,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://sp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         singleElementFile = data_path + "saml2/core/impl/NameIDMappingResponse.xml";
@@ -55,12 +55,12 @@ public:
         XMLString::release(&expectedVersion);
         XMLString::release(&expectedConsent);
         XMLString::release(&expectedDestination);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NameIDMappingResponse* response = dynamic_cast<NameIDMappingResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -77,7 +77,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         NameIDMappingResponse* response = dynamic_cast<NameIDMappingResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -94,7 +94,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         NameIDMappingResponse* response= dynamic_cast<NameIDMappingResponse*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -111,7 +111,7 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         assertEquals(expectedDOM, response);
     }
@@ -122,7 +122,7 @@ public:
 
         response->setID(expectedID);
         response->setInResponseTo(expectedInResponseTo);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         response->setConsent(expectedConsent);
         response->setDestination(expectedDestination);
@@ -135,16 +135,15 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        response->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        response->addNamespace(ns);
         response->setIssuer(IssuerBuilder::buildIssuer());
         response->setStatus(StatusBuilder::buildStatus());
         response->setNameID(NameIDBuilder::buildNameID());
 
         assertEquals(expectedChildElementsDOM, response);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/NameIDPolicy20Test.h b/samltest/saml2/core/impl/NameIDPolicy20Test.h
index c21dcae..c8e083b 100644
--- a/samltest/saml2/core/impl/NameIDPolicy20Test.h
+++ b/samltest/saml2/core/impl/NameIDPolicy20Test.h
@@ -48,14 +48,14 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NameIDPolicy* policy = dynamic_cast<NameIDPolicy*>(xo.get());
         TS_ASSERT(policy!=nullptr);
         TSM_ASSERT_EQUALS("AllowCreate attribute presence", xmlconstants::XML_BOOL_NULL, policy->getAllowCreate());
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         NameIDPolicy* policy = dynamic_cast<NameIDPolicy*>(xo.get());
         TS_ASSERT(policy!=nullptr);
         assertEquals("Format attribute", expectedFormat, policy->getFormat());
diff --git a/samltest/saml2/core/impl/NameIDType20Test.h b/samltest/saml2/core/impl/NameIDType20Test.h
index 522662a..0754f8e 100644
--- a/samltest/saml2/core/impl/NameIDType20Test.h
+++ b/samltest/saml2/core/impl/NameIDType20Test.h
@@ -94,7 +94,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
         TS_ASSERT(nameid!=nullptr);
 
@@ -104,7 +104,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
         TS_ASSERT(nameid!=nullptr);
 
diff --git a/samltest/saml2/core/impl/NewEncryptedID20Test.h b/samltest/saml2/core/impl/NewEncryptedID20Test.h
index 51c72c8..8bc3419 100644
--- a/samltest/saml2/core/impl/NewEncryptedID20Test.h
+++ b/samltest/saml2/core/impl/NewEncryptedID20Test.h
@@ -41,7 +41,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NewEncryptedID* encID = dynamic_cast<NewEncryptedID*>(xo.get());
         TS_ASSERT(encID!=nullptr);
         TSM_ASSERT("EncryptedData child element", encID->getEncryptedData()==nullptr);
@@ -49,7 +49,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         NewEncryptedID* encID = dynamic_cast<NewEncryptedID*>(xo.get());
         TS_ASSERT(encID!=nullptr);
         TSM_ASSERT("EncryptedData child element", encID->getEncryptedData()!=nullptr);
@@ -64,7 +64,7 @@ public:
     void testChildElementsMarshall() {
         NewEncryptedID* encID=NewEncryptedIDBuilder::buildNewEncryptedID();
         // Do this just so don't have to redeclare the xenc namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(xmlconstants::XMLENC_NS, xmlconstants::XMLENC_PREFIX);
+        scoped_ptr<Namespace> ns(new Namespace(xmlconstants::XMLENC_NS, xmlconstants::XMLENC_PREFIX));
         encID->addNamespace(*ns);
         encID->setEncryptedData(EncryptedDataBuilder::buildEncryptedData());
         encID->getEncryptedKeys().push_back(EncryptedKeyBuilder::buildEncryptedKey());
diff --git a/samltest/saml2/core/impl/NewID20Test.h b/samltest/saml2/core/impl/NewID20Test.h
index c8b218a..8e5fb84 100644
--- a/samltest/saml2/core/impl/NewID20Test.h
+++ b/samltest/saml2/core/impl/NewID20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         NewID* newid = dynamic_cast<NewID*>(xo.get());
         TS_ASSERT(newid!=nullptr);
         assertEquals("NewID text content", expectedContent, newid->getNewID());
diff --git a/samltest/saml2/core/impl/OneTimeUse20Test.h b/samltest/saml2/core/impl/OneTimeUse20Test.h
index 4089d9a..5f6c845 100644
--- a/samltest/saml2/core/impl/OneTimeUse20Test.h
+++ b/samltest/saml2/core/impl/OneTimeUse20Test.h
@@ -36,7 +36,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         OneTimeUse* otu = dynamic_cast<OneTimeUse*>(xo.get());
         TS_ASSERT(otu!=nullptr);
     }
@@ -46,5 +46,4 @@ public:
         assertEquals(expectedDOM, otu);
     }
 
-
 };
diff --git a/samltest/saml2/core/impl/ProxyRestriction20Test.h b/samltest/saml2/core/impl/ProxyRestriction20Test.h
index 457e552..022331a 100644
--- a/samltest/saml2/core/impl/ProxyRestriction20Test.h
+++ b/samltest/saml2/core/impl/ProxyRestriction20Test.h
@@ -41,7 +41,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         ProxyRestriction* pr = dynamic_cast<ProxyRestriction*>(xo.get());
         TS_ASSERT(pr!=nullptr);
 
@@ -50,7 +50,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         ProxyRestriction* pr = dynamic_cast<ProxyRestriction*>(xo.get());
         TS_ASSERT(pr!=nullptr);
 
@@ -60,7 +60,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         ProxyRestriction* pr= dynamic_cast<ProxyRestriction*>(xo.get());
         TS_ASSERT(pr!=nullptr);
 
diff --git a/samltest/saml2/core/impl/RequestedAuthnContext20Test.h b/samltest/saml2/core/impl/RequestedAuthnContext20Test.h
index 7fbf8ee..f6e88c6 100644
--- a/samltest/saml2/core/impl/RequestedAuthnContext20Test.h
+++ b/samltest/saml2/core/impl/RequestedAuthnContext20Test.h
@@ -44,7 +44,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         RequestedAuthnContext* rac = dynamic_cast<RequestedAuthnContext*>(xo.get());
         TS_ASSERT(rac !=nullptr);
         TS_ASSERT(rac->getComparison()==nullptr);
@@ -54,7 +54,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         RequestedAuthnContext* rac = dynamic_cast<RequestedAuthnContext*>(xo.get());
         TS_ASSERT(rac!=nullptr);
         assertEquals("Comparison attribute", expectedComparison, rac->getComparison());
@@ -64,7 +64,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         RequestedAuthnContext* rac = dynamic_cast<RequestedAuthnContext*>(xo.get());
         TS_ASSERT(rac !=nullptr);
         TS_ASSERT(rac->getComparison()==nullptr);
@@ -87,13 +87,12 @@ public:
     void testChildElementsMarshall() {
         RequestedAuthnContext* rac=RequestedAuthnContextBuilder::buildRequestedAuthnContext();
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        scoped_ptr<Namespace> ns(new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX));
         rac->addNamespace(*ns);
         rac->getAuthnContextClassRefs().push_back(AuthnContextClassRefBuilder::buildAuthnContextClassRef());
         rac->getAuthnContextClassRefs().push_back(AuthnContextClassRefBuilder::buildAuthnContextClassRef());
         rac->getAuthnContextClassRefs().push_back(AuthnContextClassRefBuilder::buildAuthnContextClassRef());
         assertEquals(expectedChildElementsDOM, rac);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/RequesterID20Test.h b/samltest/saml2/core/impl/RequesterID20Test.h
index 25997b5..3afc21a 100644
--- a/samltest/saml2/core/impl/RequesterID20Test.h
+++ b/samltest/saml2/core/impl/RequesterID20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         RequesterID* reqid = dynamic_cast<RequesterID*>(xo.get());
         TS_ASSERT(reqid!=nullptr);
         assertEquals("RequesterID text content", expectedContent, reqid->getRequesterID());
diff --git a/samltest/saml2/core/impl/Response20Test.h b/samltest/saml2/core/impl/Response20Test.h
index 4d20af8..8181bb7 100644
--- a/samltest/saml2/core/impl/Response20Test.h
+++ b/samltest/saml2/core/impl/Response20Test.h
@@ -33,7 +33,7 @@ class Response20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase
     XMLCh* expectedVersion; 
     XMLCh* expectedConsent; 
     XMLCh* expectedDestination; 
-    XMLDateTime* expectedIssueInstant; 
+    scoped_ptr<XMLDateTime> expectedIssueInstant;
 
     // Assertion marshaller autogenerates ID, Version and IssueInstant if they are nullptr,
     // so have to agree on something to put in the control XML
@@ -46,7 +46,7 @@ public:
         expectedVersion = XMLString::transcode("2.0"); 
         expectedConsent = XMLString::transcode("urn:string:consent"); 
         expectedDestination = XMLString::transcode("http://sp.example.org/endpoint"); 
-        expectedIssueInstant = new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z"));
+        expectedIssueInstant.reset(new XMLDateTime(XMLString::transcode("2006-02-21T16:40:00.000Z")));
         expectedIssueInstant->parseDateTime();
 
         assertionID1 = XMLString::transcode("test1"); 
@@ -68,12 +68,12 @@ public:
         XMLString::release(&assertionID1);
         XMLString::release(&assertionID2);
         XMLString::release(&assertionID3);
-        delete expectedIssueInstant;
+        expectedIssueInstant.reset();
         SAMLObjectBaseTestCase::tearDown();
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Response* response = dynamic_cast<Response*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -90,7 +90,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Response* response = dynamic_cast<Response*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -107,7 +107,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Response* response= dynamic_cast<Response*>(xo.get());
         TS_ASSERT(response!=nullptr);
 
@@ -124,7 +124,7 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         assertEquals(expectedDOM, response);
     }
@@ -135,7 +135,7 @@ public:
 
         response->setID(expectedID);
         response->setInResponseTo(expectedInResponseTo);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         //response->setVersion(expectedVersion);
         response->setConsent(expectedConsent);
         response->setDestination(expectedDestination);
@@ -148,10 +148,10 @@ public:
         TS_ASSERT(response!=nullptr);
 
         response->setID(expectedID);
-        response->setIssueInstant(expectedIssueInstant);
+        response->setIssueInstant(expectedIssueInstant.get());
         // Do this just so don't have to redeclare the saml namespace prefix on every child element in the control XML file
-        Namespace* ns = new Namespace(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
-        response->addNamespace(*ns);
+        Namespace ns(samlconstants::SAML20_NS, samlconstants::SAML20_PREFIX);
+        response->addNamespace(ns);
         response->setIssuer(IssuerBuilder::buildIssuer());
         // If the form of the default, basic, empty signature that is emittted changes wrt whitespace, etc,
         // this will probably break the test.  In that case need to fix the control XML.
@@ -162,25 +162,24 @@ public:
         Assertion* assertion=nullptr;
 
         assertion = AssertionBuilder::buildAssertion();
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setID(assertionID1);
         response->getAssertions().push_back(assertion);
 
         assertion = AssertionBuilder::buildAssertion();
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setID(assertionID2);
         response->getAssertions().push_back(assertion);
 
         response->getEncryptedAssertions().push_back((EncryptedAssertionBuilder::buildEncryptedAssertion()));
 
         assertion = AssertionBuilder::buildAssertion();
-        assertion->setIssueInstant(expectedIssueInstant);
+        assertion->setIssueInstant(expectedIssueInstant.get());
         assertion->setID(assertionID3);
         response->getAssertions().push_back(assertion);
 
 
         assertEquals(expectedChildElementsDOM, response);
-        delete ns;
     }
 
 };
diff --git a/samltest/saml2/core/impl/Scoping20Test.h b/samltest/saml2/core/impl/Scoping20Test.h
index a397864..41b49d0 100644
--- a/samltest/saml2/core/impl/Scoping20Test.h
+++ b/samltest/saml2/core/impl/Scoping20Test.h
@@ -42,7 +42,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Scoping* scoping = dynamic_cast<Scoping*>(xo.get());
         TS_ASSERT(scoping!=nullptr);
 
@@ -52,7 +52,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         Scoping* scoping = dynamic_cast<Scoping*>(xo.get());
         TS_ASSERT(scoping!=nullptr);
 
@@ -63,7 +63,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Scoping* scoping= dynamic_cast<Scoping*>(xo.get());
         TS_ASSERT(scoping!=nullptr);
 
diff --git a/samltest/saml2/core/impl/SessionIndex20Test.h b/samltest/saml2/core/impl/SessionIndex20Test.h
index 01cfb64..2d91066 100644
--- a/samltest/saml2/core/impl/SessionIndex20Test.h
+++ b/samltest/saml2/core/impl/SessionIndex20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         SessionIndex* si = dynamic_cast<SessionIndex*>(xo.get());
         TS_ASSERT(si!=nullptr);
         assertEquals("SessionIndex text content", expectedContent, si->getSessionIndex());
diff --git a/samltest/saml2/core/impl/Status20Test.h b/samltest/saml2/core/impl/Status20Test.h
index a7057b7..221d795 100644
--- a/samltest/saml2/core/impl/Status20Test.h
+++ b/samltest/saml2/core/impl/Status20Test.h
@@ -37,7 +37,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Status* status = dynamic_cast<Status*>(xo.get());
         TS_ASSERT(status!=nullptr);
         TSM_ASSERT("StatusCode child element", status->getStatusCode()==nullptr);
@@ -46,7 +46,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Status* status = dynamic_cast<Status*>(xo.get());
         TS_ASSERT(status!=nullptr);
         TSM_ASSERT("StatusCode child element", status->getStatusCode()!=nullptr);
diff --git a/samltest/saml2/core/impl/StatusCode20Test.h b/samltest/saml2/core/impl/StatusCode20Test.h
index 5ca162f..8f1fe54 100644
--- a/samltest/saml2/core/impl/StatusCode20Test.h
+++ b/samltest/saml2/core/impl/StatusCode20Test.h
@@ -40,7 +40,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         StatusCode* sc = dynamic_cast<StatusCode*>(xo.get());
         TS_ASSERT(sc!=nullptr);
         assertEquals("Value attribute", Value, sc->getValue());
@@ -48,7 +48,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         StatusCode* sc = dynamic_cast<StatusCode*>(xo.get());
         TS_ASSERT(sc!=nullptr);
         TSM_ASSERT("StatusCode child element", sc->getStatusCode()!=nullptr);
diff --git a/samltest/saml2/core/impl/StatusDetail20Test.h b/samltest/saml2/core/impl/StatusDetail20Test.h
index 954666a..25cb9eb 100644
--- a/samltest/saml2/core/impl/StatusDetail20Test.h
+++ b/samltest/saml2/core/impl/StatusDetail20Test.h
@@ -37,7 +37,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         StatusDetail* sd= dynamic_cast<StatusDetail*>(xo.get());
         TS_ASSERT(sd!=nullptr);
         TSM_ASSERT_EQUALS("StatusDetail child elements", sd->getUnknownXMLObjects().size(), 0);
@@ -45,7 +45,7 @@ public:
 
     //TODO test with some XMLObject child elements from another namespace
     void IGNOREtestChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         StatusDetail* sd= dynamic_cast<StatusDetail*>(xo.get());
         TS_ASSERT(sd!=nullptr);
         TSM_ASSERT_EQUALS("StatusDetail child elements", sd->getUnknownXMLObjects().size(), 3);
diff --git a/samltest/saml2/core/impl/StatusMessage20Test.h b/samltest/saml2/core/impl/StatusMessage20Test.h
index 776ea8b..af731e2 100644
--- a/samltest/saml2/core/impl/StatusMessage20Test.h
+++ b/samltest/saml2/core/impl/StatusMessage20Test.h
@@ -39,7 +39,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         StatusMessage* sm = dynamic_cast<StatusMessage*>(xo.get());
         TS_ASSERT(sm!=nullptr);
         assertEquals("StatusMessage text content", expectedContent, sm->getMessage());
diff --git a/samltest/saml2/core/impl/Subject20Test.h b/samltest/saml2/core/impl/Subject20Test.h
index 5ba8adc..be0f7cd 100644
--- a/samltest/saml2/core/impl/Subject20Test.h
+++ b/samltest/saml2/core/impl/Subject20Test.h
@@ -38,7 +38,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Subject* subject = dynamic_cast<Subject*>(xo.get());
         TS_ASSERT(subject!=nullptr);
 
@@ -49,7 +49,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         Subject* subject= dynamic_cast<Subject*>(xo.get());
         TS_ASSERT(subject!=nullptr);
 
diff --git a/samltest/saml2/core/impl/SubjectConfirmation20Test.h b/samltest/saml2/core/impl/SubjectConfirmation20Test.h
index 6aef7e8..c92496a 100644
--- a/samltest/saml2/core/impl/SubjectConfirmation20Test.h
+++ b/samltest/saml2/core/impl/SubjectConfirmation20Test.h
@@ -42,7 +42,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         SubjectConfirmation* sc = dynamic_cast<SubjectConfirmation*>(xo.get());
         TS_ASSERT(sc!=nullptr);
 
@@ -55,7 +55,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         SubjectConfirmation* sc= dynamic_cast<SubjectConfirmation*>(xo.get());
         TS_ASSERT(sc!=nullptr);
 
diff --git a/samltest/saml2/core/impl/SubjectConfirmationData20Test.h b/samltest/saml2/core/impl/SubjectConfirmationData20Test.h
index 4580d7b..a762b61 100644
--- a/samltest/saml2/core/impl/SubjectConfirmationData20Test.h
+++ b/samltest/saml2/core/impl/SubjectConfirmationData20Test.h
@@ -27,17 +27,17 @@ using namespace opensaml::saml2;
 //TODO need testing for ElementProxy and wildcard attributes/elements
 
 class SubjectConfirmationData20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
-    XMLDateTime* expectedNotBefore;
-    XMLDateTime* expectedNotOnOrAfter;
+    scoped_ptr<XMLDateTime> expectedNotBefore;
+    scoped_ptr<XMLDateTime> expectedNotOnOrAfter;
     XMLCh* expectedRecipient;
     XMLCh* expectedInResponseTo;
     XMLCh* expectedAddress;
 
 public:
     void setUp() {
-        expectedNotBefore = new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z"));
+        expectedNotBefore.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:01:30.043Z")));
         expectedNotBefore->parseDateTime();
-        expectedNotOnOrAfter = new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z"));
+        expectedNotOnOrAfter.reset(new XMLDateTime(XMLString::transcode("1984-08-26T10:11:30.043Z")));
         expectedNotOnOrAfter->parseDateTime();
         expectedRecipient = (XMLString::transcode("recipient"));
         expectedInResponseTo = (XMLString::transcode("inresponse"));
@@ -50,8 +50,8 @@ public:
     }
     
     void tearDown() {
-        delete expectedNotBefore;
-        delete expectedNotOnOrAfter;
+        expectedNotBefore.reset();
+        expectedNotOnOrAfter.reset();
         XMLString::release(&expectedRecipient);
         XMLString::release(&expectedInResponseTo);
         XMLString::release(&expectedAddress);
@@ -59,7 +59,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         SubjectConfirmationData* scd = dynamic_cast<SubjectConfirmationData*>(xo.get());
         TS_ASSERT(scd!=nullptr);
 
@@ -71,7 +71,7 @@ public:
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         SubjectConfirmationData* scd = dynamic_cast<SubjectConfirmationData*>(xo.get());
         TS_ASSERT(scd!=nullptr);
 
@@ -85,7 +85,7 @@ public:
     }
 
     void testChildElementsUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(childElementsFile));
         SubjectConfirmationData* scd= dynamic_cast<SubjectConfirmationData*>(xo.get());
         TS_ASSERT(scd!=nullptr);
 
@@ -105,8 +105,8 @@ public:
 
     void testSingleElementOptionalAttributesMarshall() {
         SubjectConfirmationData* scd=SubjectConfirmationDataBuilder::buildSubjectConfirmationData();
-        scd->setNotBefore(expectedNotBefore);
-        scd->setNotOnOrAfter(expectedNotOnOrAfter);
+        scd->setNotBefore(expectedNotBefore.get());
+        scd->setNotOnOrAfter(expectedNotOnOrAfter.get());
         scd->setRecipient(expectedRecipient);
         scd->setInResponseTo(expectedInResponseTo);
         scd->setAddress(expectedAddress);
diff --git a/samltest/saml2/core/impl/SubjectLocality20Test.h b/samltest/saml2/core/impl/SubjectLocality20Test.h
index b9f2b1c..100cb07 100644
--- a/samltest/saml2/core/impl/SubjectLocality20Test.h
+++ b/samltest/saml2/core/impl/SubjectLocality20Test.h
@@ -45,13 +45,13 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         SubjectLocality* sl = dynamic_cast<SubjectLocality*>(xo.get());
         TS_ASSERT(sl!=nullptr);
     }
 
     void testSingleElementOptionalAttributesUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
         SubjectLocality* sl = dynamic_cast<SubjectLocality*>(xo.get());
         TS_ASSERT(sl!=nullptr);
         assertEquals("Address attribute", expectedAddress, sl->getAddress());
diff --git a/samltest/saml2/core/impl/Terminate20Test.h b/samltest/saml2/core/impl/Terminate20Test.h
index 4af543c..f9c2fe3 100644
--- a/samltest/saml2/core/impl/Terminate20Test.h
+++ b/samltest/saml2/core/impl/Terminate20Test.h
@@ -36,7 +36,7 @@ public:
     }
 
     void testSingleElementUnmarshall() {
-        auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
+        scoped_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
         Terminate* terminate = dynamic_cast<Terminate*>(xo.get());
         TS_ASSERT(terminate!=nullptr);
     }
diff --git a/samltest/saml2/metadata/XMLMetadataProviderTest.h b/samltest/saml2/metadata/XMLMetadataProviderTest.h
index 02503e4..939861e 100644
--- a/samltest/saml2/metadata/XMLMetadataProviderTest.h
+++ b/samltest/saml2/metadata/XMLMetadataProviderTest.h
@@ -60,16 +60,16 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         XercesJanitor<DOMDocument> janitor(doc);
 
-        auto_ptr<MetadataProvider> metadataProvider(SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER,
-                                                                                                              doc->getDocumentElement())
-        );
+        scoped_ptr<MetadataProvider> metadataProvider(
+            SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER, doc->getDocumentElement())
+            );
         try {
             metadataProvider->init();
-        } catch (MetadataFilterException& ex) {
+        } catch (const MetadataFilterException& ex) {
             TS_TRACE(ex.what());
             return;
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -82,12 +82,12 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         XercesJanitor<DOMDocument> janitor(doc);
 
-        auto_ptr<MetadataProvider> metadataProvider(
+        scoped_ptr<MetadataProvider> metadataProvider(
             SAMLConfig::getConfig().MetadataProviderManager.newPlugin(CHAINING_METADATA_PROVIDER, doc->getDocumentElement())
-        );
+            );
         try {
             metadataProvider->init();
-        } catch (XMLToolingException& ex) {
+        } catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -104,13 +104,13 @@ public:
         auto_ptr_XMLCh file(s.c_str());
         doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get());
 
-        auto_ptr<MetadataProvider> metadataProvider(
+        scoped_ptr<MetadataProvider> metadataProvider(
             SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER,doc->getDocumentElement())
             );
         try {
             metadataProvider->init();
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -124,7 +124,7 @@ public:
         TSM_ASSERT("Role lookup failed", find_if(descriptor->getIDPSSODescriptors(), isValidForProtocol(supportedProtocol2))!=nullptr);
 
         static const char* providerIdStr = "urn:mace:incommon:washington.edu";
-        auto_ptr<SAML2ArtifactType0004> artifact(
+        scoped_ptr<SAML2ArtifactType0004> artifact(
             new SAML2ArtifactType0004(
                 SecurityHelper::doHash("SHA1", providerIdStr, strlen(providerIdStr), false), 1
                 )
@@ -148,12 +148,12 @@ public:
         auto_ptr_XMLCh file(s.c_str());
         doc->getDocumentElement()->setAttributeNS(nullptr, path.get(), file.get());
 #endif
-        auto_ptr<MetadataProvider> metadataProvider(\
+        scoped_ptr<MetadataProvider> metadataProvider(\
             SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER, doc->getDocumentElement())
             );
         try {
             metadataProvider->init();
-        } catch (XMLToolingException& ex) {
+        } catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -167,7 +167,7 @@ public:
         TSM_ASSERT("Role lookup failed", find_if(descriptor->getIDPSSODescriptors(), isValidForProtocol(supportedProtocol2)) != nullptr);
 
         static const char* providerIdStr = "urn:mace:incommon:washington.edu";
-        auto_ptr<SAML2ArtifactType0004> artifact(
+        scoped_ptr<SAML2ArtifactType0004> artifact(
             new SAML2ArtifactType0004(
                 SecurityHelper::doHash("SHA1", providerIdStr, strlen(providerIdStr), false), 1
                 )
@@ -190,13 +190,13 @@ public:
         auto_ptr_XMLCh file(s.c_str());
         doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get());
 
-        auto_ptr<MetadataProvider> metadataProvider(
+        scoped_ptr<MetadataProvider> metadataProvider(
             SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER,doc->getDocumentElement())
             );
         try {
             metadataProvider->init();
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -220,13 +220,13 @@ public:
         auto_ptr_XMLCh file(s.c_str());
         doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get());
 
-        auto_ptr<MetadataProvider> metadataProvider(
+        scoped_ptr<MetadataProvider> metadataProvider(
             SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER,doc->getDocumentElement())
             );
         try {
             metadataProvider->init();
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
diff --git a/samltest/saml2/profile/SAML2PolicyTest.h b/samltest/saml2/profile/SAML2PolicyTest.h
index 1a7c6cd..11bff02 100644
--- a/samltest/saml2/profile/SAML2PolicyTest.h
+++ b/samltest/saml2/profile/SAML2PolicyTest.h
@@ -28,20 +28,20 @@
 using namespace opensaml;
 
 class SAML2PolicyTest : public CxxTest::TestSuite {
-    SecurityPolicy* m_policy;
+    scoped_ptr<SecurityPolicy> m_policy;
     vector<SecurityPolicyRule*> m_rules;
+
 public:
     void setUp() {
-        m_policy = nullptr;
         m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(CONDITIONS_POLICY_RULE, nullptr));
         m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(BEARER_POLICY_RULE, nullptr));
-        m_policy = new SecurityPolicy();
+        m_policy.reset(new SecurityPolicy());
         m_policy->getRules().assign(m_rules.begin(), m_rules.end());
     }
 
     void tearDown() {
         for_each(m_rules.begin(), m_rules.end(), xmltooling::cleanup<SecurityPolicyRule>());
-        delete m_policy;
+        m_policy.reset();
     }
 
     void testSAML2Policy() {
@@ -51,7 +51,7 @@ public:
             ifstream in(path.c_str());
             DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
             XercesJanitor<DOMDocument> janitor(doc);
-            auto_ptr<saml2::Assertion> assertion(
+            scoped_ptr<saml2::Assertion> assertion(
                 dynamic_cast<saml2::Assertion*>(XMLObjectBuilder::buildOneFromElement(doc->getDocumentElement(),true))
                 );
             janitor.release();
@@ -68,9 +68,9 @@ public:
             dynamic_cast<saml2::SubjectConfirmationData*>(
                 assertion->getSubject()->getSubjectConfirmations().front()->getSubjectConfirmationData()
                 )->setInResponseTo(requestID.get());
-            m_policy->evaluate(*assertion.get());
+            m_policy->evaluate(*assertion);
         }
-        catch (exception& ex) {
+        catch (const exception& ex) {
             TS_TRACE(ex.what());
             throw;
         }
diff --git a/samltest/security/ExplicitKeyTrustEngineTest.h b/samltest/security/ExplicitKeyTrustEngineTest.h
index ec423ca..c12d1ae 100644
--- a/samltest/security/ExplicitKeyTrustEngineTest.h
+++ b/samltest/security/ExplicitKeyTrustEngineTest.h
@@ -52,19 +52,19 @@ public:
         doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get());
 
         // Build metadata provider.
-        auto_ptr<MetadataProvider> metadataProvider(
+        scoped_ptr<MetadataProvider> metadataProvider(
             opensaml::SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER,doc->getDocumentElement())
             );
         try {
             metadataProvider->init();
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
         
         // Build trust engine.
-        auto_ptr<TrustEngine> trustEngine(
+        scoped_ptr<TrustEngine> trustEngine(
             XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(EXPLICIT_KEY_TRUSTENGINE, nullptr)
             );
         
@@ -73,7 +73,7 @@ public:
         ifstream in2(config.c_str());
         DOMDocument* doc2=XMLToolingConfig::getConfig().getParser().parse(in2);
         XercesJanitor<DOMDocument> janitor2(doc2);
-        auto_ptr<Assertion> assertion(dynamic_cast<Assertion*>(XMLObjectBuilder::getBuilder(doc2->getDocumentElement())->buildFromDocument(doc2)));
+        scoped_ptr<Assertion> assertion(dynamic_cast<Assertion*>(XMLObjectBuilder::getBuilder(doc2->getDocumentElement())->buildFromDocument(doc2)));
         janitor2.release();
 
         Locker locker(metadataProvider.get());
diff --git a/samltest/security/StaticPKIXTrustEngineTest.h b/samltest/security/StaticPKIXTrustEngineTest.h
index 8e55582..0e56397 100644
--- a/samltest/security/StaticPKIXTrustEngineTest.h
+++ b/samltest/security/StaticPKIXTrustEngineTest.h
@@ -51,13 +51,13 @@ public:
         doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get());
 
         // Build metadata provider.
-        auto_ptr<MetadataProvider> metadataProvider(
+        scoped_ptr<MetadataProvider> metadataProvider(
             opensaml::SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER,doc->getDocumentElement())
             );
         try {
             metadataProvider->init();
         }
-        catch (XMLToolingException& ex) {
+        catch (const XMLToolingException& ex) {
             TS_TRACE(ex.what());
             throw;
         }
@@ -67,7 +67,7 @@ public:
         ifstream in2(config.c_str());
         DOMDocument* doc2=XMLToolingConfig::getConfig().getParser().parse(in2);
         XercesJanitor<DOMDocument> janitor2(doc2);
-        auto_ptr<TrustEngine> trustEngine(
+        scoped_ptr<TrustEngine> trustEngine(
             XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(STATIC_PKIX_TRUSTENGINE,doc2->getDocumentElement())
             );
         
@@ -76,7 +76,7 @@ public:
         ifstream in3(config.c_str());
         DOMDocument* doc3=XMLToolingConfig::getConfig().getParser().parse(in3);
         XercesJanitor<DOMDocument> janitor3(doc3);
-        auto_ptr<Assertion> assertion(dynamic_cast<Assertion*>(XMLObjectBuilder::getBuilder(doc3->getDocumentElement())->buildFromDocument(doc3)));
+        scoped_ptr<Assertion> assertion(dynamic_cast<Assertion*>(XMLObjectBuilder::getBuilder(doc3->getDocumentElement())->buildFromDocument(doc3)));
         janitor3.release();
 
         Locker locker(metadataProvider.get());
diff --git a/samltest/signature/SAML1AssertionTest.h b/samltest/signature/SAML1AssertionTest.h
index 99d8a2b..395c1a3 100644
--- a/samltest/signature/SAML1AssertionTest.h
+++ b/samltest/signature/SAML1AssertionTest.h
@@ -53,7 +53,7 @@ public:
         statement->setAuthenticationMethod(method.get());
         statement->setSubject(subject);
         
-        auto_ptr<Assertion> assertion(AssertionBuilder::buildAssertion());
+        scoped_ptr<Assertion> assertion(AssertionBuilder::buildAssertion());
         assertion->setAssertionID(id.get());
         assertion->setIssueInstant(issueInstant.get());
         assertion->setIssuer(issuer.get());
@@ -67,7 +67,7 @@ public:
         vector<Signature*> sigs(1,sig);
         CredentialCriteria cc;
         cc.setUsage(Credential::SIGNING_CREDENTIAL);
-        Locker locker(m_resolver);
+        Locker locker(m_resolver.get());
         const Credential* cred = m_resolver->resolve(&cc);
         TSM_ASSERT("Retrieved credential was null", cred!=nullptr);
 
@@ -75,7 +75,7 @@ public:
         try {
             rootElement=assertion->marshall((DOMDocument*)nullptr,&sigs,cred);
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
@@ -86,7 +86,7 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
         
-        auto_ptr<XMLObject> assertion2(b->buildFromDocument(doc));
+        scoped_ptr<XMLObject> assertion2(b->buildFromDocument(doc));
         assertEquals("Unmarshalled assertion does not match", expectedChildElementsDOM, assertion2.get(), false);
         
         try {
@@ -95,7 +95,7 @@ public:
             spv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());
             sv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
diff --git a/samltest/signature/SAML1RequestTest.h b/samltest/signature/SAML1RequestTest.h
index 279bf6f..50344c1 100644
--- a/samltest/signature/SAML1RequestTest.h
+++ b/samltest/signature/SAML1RequestTest.h
@@ -54,7 +54,7 @@ public:
         query->setAuthenticationMethod(method.get());
         query->setSubject(subject);
         
-        auto_ptr<Request> request(RequestBuilder::buildRequest());
+        scoped_ptr<Request> request(RequestBuilder::buildRequest());
         request->setRequestID(id.get());
         request->setIssueInstant(issueInstant.get());
         request->setAuthenticationQuery(query);
@@ -67,7 +67,7 @@ public:
         vector<Signature*> sigs(1,sig);
         CredentialCriteria cc;
         cc.setUsage(Credential::SIGNING_CREDENTIAL);
-        Locker locker(m_resolver);
+        Locker locker(m_resolver.get());
         const Credential* cred = m_resolver->resolve(&cc);
         TSM_ASSERT("Retrieved credential was null", cred!=nullptr);
 
@@ -75,7 +75,7 @@ public:
         try {
             rootElement=request->marshall((DOMDocument*)nullptr,&sigs,cred);
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
@@ -86,7 +86,7 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
 
-        auto_ptr<XMLObject> request2(b->buildFromDocument(doc));
+        scoped_ptr<XMLObject> request2(b->buildFromDocument(doc));
         assertEquals("Unmarshalled request does not match", expectedChildElementsDOM, request2.get(), false);
         
         try {
@@ -95,7 +95,7 @@ public:
             spv.validate(dynamic_cast<Request*>(request2.get())->getSignature());
             sv.validate(dynamic_cast<Request*>(request2.get())->getSignature());
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
diff --git a/samltest/signature/SAML1ResponseTest.h b/samltest/signature/SAML1ResponseTest.h
index 6a6e495..751a316 100644
--- a/samltest/signature/SAML1ResponseTest.h
+++ b/samltest/signature/SAML1ResponseTest.h
@@ -70,7 +70,7 @@ public:
         vector<Signature*> sigs(1,assertion->getSignature());
         CredentialCriteria cc;
         cc.setUsage(Credential::SIGNING_CREDENTIAL);
-        Locker locker(m_resolver);
+        Locker locker(m_resolver.get());
         const Credential* cred = m_resolver->resolve(&cc);
         TSM_ASSERT("Retrieved credential was null", cred!=nullptr);
 
@@ -93,7 +93,7 @@ public:
         sc->setValue(&subcode);
         status->getStatusCode()->setStatusCode(sc);
 
-        auto_ptr<Response> response(ResponseBuilder::buildResponse());
+        scoped_ptr<Response> response(ResponseBuilder::buildResponse());
         response->setResponseID(rid.get());
         response->setIssueInstant(issueInstant.get());
         response->setStatus(status);
@@ -118,10 +118,10 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
         
-        auto_ptr<XMLObject> response2(b->buildFromDocument(doc));
+        scoped_ptr<XMLObject> response2(b->buildFromDocument(doc));
         assertEquals("Unmarshalled response does not match", expectedChildElementsDOM, response2.get(), false);
 
-        auto_ptr<Response> response3(dynamic_cast<Response*>(response2.get())->cloneResponse());
+        scoped_ptr<Response> response3(dynamic_cast<Response*>(response2.get())->cloneResponse());
         
         try {
             opensaml::SignatureProfileValidator spv;
@@ -132,7 +132,7 @@ public:
             sv.validate(dynamic_cast<Response*>(response3.get())->getAssertions().front()->getSignature());
             sv.validate(dynamic_cast<Response*>(response3.get())->getSignature());
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
diff --git a/samltest/signature/SAML2AssertionTest.h b/samltest/signature/SAML2AssertionTest.h
index 11347a8..231ff23 100644
--- a/samltest/signature/SAML2AssertionTest.h
+++ b/samltest/signature/SAML2AssertionTest.h
@@ -60,7 +60,7 @@ public:
         ac->setAuthnContextClassRef(acc);
         statement->setAuthnContext(ac);
         
-        auto_ptr<Assertion> assertion(AssertionBuilder::buildAssertion());
+        scoped_ptr<Assertion> assertion(AssertionBuilder::buildAssertion());
         assertion->setID(id.get());
         assertion->setIssueInstant(issueInstant.get());
         assertion->setIssuer(is);
@@ -75,7 +75,7 @@ public:
         vector<Signature*> sigs(1,sig);
         CredentialCriteria cc;
         cc.setUsage(Credential::SIGNING_CREDENTIAL);
-        Locker locker(m_resolver);
+        Locker locker(m_resolver.get());
         const Credential* cred = m_resolver->resolve(&cc);
         TSM_ASSERT("Retrieved credential was null", cred!=nullptr);
 
@@ -83,7 +83,7 @@ public:
         try {
             rootElement=assertion->marshall((DOMDocument*)nullptr,&sigs,cred);
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
@@ -94,7 +94,7 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
         
-        auto_ptr<XMLObject> assertion2(b->buildFromDocument(doc));
+        scoped_ptr<XMLObject> assertion2(b->buildFromDocument(doc));
         assertEquals("Unmarshalled assertion does not match", expectedChildElementsDOM, assertion2.get(), false);
         
         try {
@@ -103,7 +103,7 @@ public:
             spv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());
             sv.validate(dynamic_cast<Assertion*>(assertion2.get())->getSignature());
         }
-        catch (XMLToolingException& e) {
+        catch (const XMLToolingException& e) {
             TS_TRACE(e.what());
             throw;
         }
diff --git a/samltest/signature/SAMLSignatureTestBase.h b/samltest/signature/SAMLSignatureTestBase.h
index bf8dd7f..17a4ad8 100644
--- a/samltest/signature/SAMLSignatureTestBase.h
+++ b/samltest/signature/SAMLSignatureTestBase.h
@@ -33,22 +33,23 @@ using namespace xmlsignature;
 
 class SAMLSignatureTestBase : public SAMLObjectBaseTestCase {
 protected:
-    CredentialResolver* m_resolver;
+    scoped_ptr<CredentialResolver> m_resolver;
 public:
     void setUp() {
-        m_resolver=nullptr;
         SAMLObjectBaseTestCase::setUp();
         string config = data_path + "FilesystemCredentialResolver.xml";
         ifstream in(config.c_str());
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         XercesJanitor<DOMDocument> janitor(doc);
-        m_resolver = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(
-            FILESYSTEM_CREDENTIAL_RESOLVER,doc->getDocumentElement()
+        m_resolver.reset(
+            XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(
+                FILESYSTEM_CREDENTIAL_RESOLVER, doc->getDocumentElement()
+                )
             );
     }
 
     void tearDown() {
-        delete m_resolver;
+        m_resolver.reset(nullptr);
         SAMLObjectBaseTestCase::tearDown();
     }
 };

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list