Reducing header overuse, non-inlining selected methods (CPPOST-35).
[shibboleth/cpp-opensaml.git] / saml / binding / impl / SecurityPolicy.cpp
index 6603e3b..540cdae 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "internal.h"
 #include "exceptions.h"
+#include "binding/SecurityPolicy.h"
 #include "binding/SecurityPolicyRule.h"
 #include "saml2/core/Assertions.h"
 
@@ -47,6 +48,7 @@ namespace opensaml {
 
     namespace saml2 {
         SAML_DLLLOCAL PluginManager<SecurityPolicyRule,string,const DOMElement*>::Factory BearerConfirmationRuleFactory;
+        SAML_DLLLOCAL PluginManager<SecurityPolicyRule,string,const DOMElement*>::Factory DelegationRestrictionRuleFactory;
     }
 };
 
@@ -63,6 +65,7 @@ void SAML_API opensaml::registerSecurityPolicyRules()
     conf.SecurityPolicyRuleManager.registerFactory(XMLSIGNING_POLICY_RULE, XMLSigningRuleFactory);
     conf.SecurityPolicyRuleManager.registerFactory(SAML1BROWSERSSO_POLICY_RULE, saml1::BrowserSSORuleFactory);
     conf.SecurityPolicyRuleManager.registerFactory(BEARER_POLICY_RULE, saml2::BearerConfirmationRuleFactory);
+    conf.SecurityPolicyRuleManager.registerFactory(DELEGATION_POLICY_RULE, saml2::DelegationRestrictionRuleFactory);
 }
 
 SecurityPolicy::IssuerMatchingPolicy SecurityPolicy::m_defaultMatching;
@@ -73,7 +76,6 @@ SecurityPolicy::SecurityPolicy(
     const xmltooling::TrustEngine* trustEngine,
     bool validate
     ) : m_metadataCriteria(NULL),
-        m_messageID(NULL),
         m_issueInstant(0),
         m_issuer(NULL),
         m_issuerRole(NULL),
@@ -84,8 +86,7 @@ SecurityPolicy::SecurityPolicy(
         m_trust(trustEngine),
         m_validate(validate),
         m_entityOnly(true),
-        m_ts(0),
-        m_correlationID(NULL)
+        m_ts(0)
 {
     if (role)
         m_role = new xmltooling::QName(*role);
@@ -93,20 +94,18 @@ SecurityPolicy::SecurityPolicy(
 
 SecurityPolicy::~SecurityPolicy()
 {
-    XMLString::release(&m_messageID);
     delete m_metadataCriteria;
     delete m_issuer;
 }
 
 void SecurityPolicy::reset(bool messageOnly)
 {
-    _reset();
+    _reset(messageOnly);
 }
 
 void SecurityPolicy::_reset(bool messageOnly)
 {
-    XMLString::release(&m_messageID);
-    m_messageID=NULL;
+    m_messageID.erase();
     m_issueInstant=0;
     if (!messageOnly) {
         delete m_issuer;