X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fcore%2Fimpl%2FAssertions20Impl.cpp;h=b5031e895a0a83c361ec4cbac9e79a0f04ff64d6;hb=e9554c255ad3c91c7c4976e7a1a54905903e66a2;hp=d570abadb8a26a669a949c3f24be497447f48e17;hpb=0703fa970c8d1f15600ce3fd1b350bdb90930bb9;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/core/impl/Assertions20Impl.cpp b/saml/saml2/core/impl/Assertions20Impl.cpp index d570aba..b5031e8 100644 --- a/saml/saml2/core/impl/Assertions20Impl.cpp +++ b/saml/saml2/core/impl/Assertions20Impl.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2001-2006 Internet2 - * + * Copyright 2001-2010 Internet2 + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -16,36 +16,41 @@ /** * Assertions20Impl.cpp - * - * Implementation classes for SAML 2.0 Assertions schema + * + * Implementation classes for SAML 2.0 Assertions schema. */ #include "internal.h" #include "exceptions.h" #include "saml/encryption/EncryptedKeyResolver.h" #include "saml2/core/Assertions.h" +#include "signature/ContentReference.h" #include -#include #include -#include #include #include #include +#include +#include +#include #include #include #include using namespace opensaml::saml2; -using namespace opensaml; using namespace xmlencryption; using namespace xmlsignature; using namespace xmltooling; using namespace std; +using xmlconstants::XSI_NS; using xmlconstants::XMLSIG_NS; using xmlconstants::XMLENC_NS; +using xmlconstants::XML_BOOL_NULL; using samlconstants::SAML20_NS; +using samlconstants::SAML20_DELEGATION_CONDITION_NS; + #if defined (_MSC_VER) #pragma warning( push ) @@ -54,7 +59,7 @@ using samlconstants::SAML20_NS; namespace opensaml { namespace saml2 { - + DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,AssertionIDRef); DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,AssertionURIRef); DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,Audience); @@ -69,14 +74,14 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_Format=m_SPProvidedID=m_NameQualifier=m_SPNameQualifier=NULL; + m_Format=m_SPProvidedID=m_NameQualifier=m_SPNameQualifier=nullptr; } - + protected: NameIDTypeImpl() { init(); } - + public: virtual ~NameIDTypeImpl() { XMLString::release(&m_NameQualifier); @@ -84,12 +89,12 @@ namespace opensaml { XMLString::release(&m_Format); XMLString::release(&m_SPProvidedID); } - - NameIDTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + NameIDTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + NameIDTypeImpl(const NameIDTypeImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -98,26 +103,26 @@ namespace opensaml { setFormat(src.getFormat()); setSPProvidedID(src.getSPProvidedID()); } - + IMPL_XMLOBJECT_CLONE(NameIDType); IMPL_STRING_ATTRIB(NameQualifier); IMPL_STRING_ATTRIB(SPNameQualifier); IMPL_STRING_ATTRIB(Format); IMPL_STRING_ATTRIB(SPProvidedID); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,NULL); - MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL); - MARSHALL_STRING_ATTRIB(Format,FORMAT,NULL); - MARSHALL_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,NULL); + MARSHALL_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,nullptr); + MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,nullptr); + MARSHALL_STRING_ATTRIB(Format,FORMAT,nullptr); + MARSHALL_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,NULL); - PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL); - PROC_STRING_ATTRIB(Format,FORMAT,NULL); - PROC_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,NULL); + PROC_STRING_ATTRIB(NameQualifier,NAMEQUALIFIER,nullptr); + PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,nullptr); + PROC_STRING_ATTRIB(Format,FORMAT,nullptr); + PROC_STRING_ATTRIB(SPProvidedID,SPPROVIDEDID,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; @@ -126,12 +131,12 @@ namespace opensaml { { public: virtual ~NameIDImpl() {} - - NameIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + NameIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - + NameIDImpl(const NameIDImpl& src) : AbstractXMLObject(src), NameIDTypeImpl(src) {} - + IMPL_XMLOBJECT_CLONE(NameID); NameIDType* cloneNameIDType() const { return new NameIDImpl(*this); @@ -142,12 +147,12 @@ namespace opensaml { { public: virtual ~IssuerImpl() {} - - IssuerImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + IssuerImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - + IssuerImpl(const IssuerImpl& src) : AbstractXMLObject(src), NameIDTypeImpl(src) {} - + IMPL_XMLOBJECT_CLONE(Issuer); NameIDType* cloneNameIDType() const { return new IssuerImpl(*this); @@ -163,24 +168,24 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_EncryptedData=NULL; - m_children.push_back(NULL); + m_EncryptedData=nullptr; + m_children.push_back(nullptr); m_pos_EncryptedData=m_children.begin(); } - + protected: EncryptedElementTypeImpl() { init(); } - + public: virtual ~EncryptedElementTypeImpl() {} - - EncryptedElementTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + EncryptedElementTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + EncryptedElementTypeImpl(const EncryptedElementTypeImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -193,29 +198,11 @@ namespace opensaml { } } } - - XMLObject* decrypt(KeyResolver* KEKresolver, const XMLCh* recipient) const - { - if (!m_EncryptedData) - throw DecryptionException("No encrypted data present."); - Decrypter decrypter(KEKresolver, new EncryptedKeyResolver(*this, recipient)); - DOMDocumentFragment* frag = decrypter.decryptData(m_EncryptedData); - if (frag->hasChildNodes() && frag->getFirstChild()==frag->getLastChild()) { - DOMNode* plaintext=frag->getFirstChild(); - if (plaintext->getNodeType()==DOMNode::ELEMENT_NODE) { - auto_ptr ret(XMLObjectBuilder::buildOneFromElement(static_cast(plaintext))); - ret->releaseThisAndChildrenDOM(); - return ret.release(); - } - } - frag->release(); - throw DecryptionException("Decryption did not result in a single element."); - } - + IMPL_XMLOBJECT_CLONE(EncryptedElementType); IMPL_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption); IMPL_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,m_children.end()); - + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLENC_NS,false); @@ -224,23 +211,36 @@ namespace opensaml { } }; - //TODO unit test for this class SAML_DLLLOCAL EncryptedIDImpl : public virtual EncryptedID, public EncryptedElementTypeImpl { public: virtual ~EncryptedIDImpl() {} - - EncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + EncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - + EncryptedIDImpl(const EncryptedIDImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {} - + IMPL_XMLOBJECT_CLONE(EncryptedID); EncryptedElementType* cloneEncryptedElementType() const { return new EncryptedIDImpl(*this); } }; + class SAML_DLLLOCAL ConditionImpl : public virtual Condition, public AnyElementImpl + { + public: + virtual ~ConditionImpl() {} + + ConditionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + } + + ConditionImpl(const ConditionImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {} + + IMPL_XMLOBJECT_CLONE(Condition); + }; + class SAML_DLLLOCAL AudienceRestrictionImpl : public virtual AudienceRestriction, public AbstractComplexElement, public AbstractDOMCachingXMLObject, @@ -249,11 +249,11 @@ namespace opensaml { { public: virtual ~AudienceRestrictionImpl() {} - - AudienceRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AudienceRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - + AudienceRestrictionImpl(const AudienceRestrictionImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { VectorOf(Audience) v=getAudiences(); @@ -263,13 +263,13 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(AudienceRestriction); Condition* cloneCondition() const { return cloneAudienceRestriction(); } IMPL_TYPED_CHILDREN(Audience,m_children.end()); - + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILDREN(Audience,SAML20_NS,false); @@ -285,15 +285,15 @@ namespace opensaml { { public: virtual ~OneTimeUseImpl() {} - - OneTimeUseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + OneTimeUseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - + OneTimeUseImpl(const OneTimeUseImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { } - + IMPL_XMLOBJECT_CLONE(OneTimeUse); Condition* cloneCondition() const { return cloneOneTimeUse(); @@ -310,12 +310,12 @@ namespace opensaml { virtual ~ProxyRestrictionImpl() { XMLString::release(&m_Count); } - - ProxyRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + ProxyRestrictionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { - m_Count=NULL; + m_Count=nullptr; } - + ProxyRestrictionImpl(const ProxyRestrictionImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { setCount(src.m_Count); @@ -326,17 +326,17 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(ProxyRestriction); Condition* cloneCondition() const { return cloneProxyRestriction(); } IMPL_TYPED_CHILDREN(Audience,m_children.end()); IMPL_INTEGER_ATTRIB(Count); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_INTEGER_ATTRIB(Count,COUNT,NULL); + MARSHALL_INTEGER_ATTRIB(Count,COUNT,nullptr); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { @@ -345,11 +345,118 @@ namespace opensaml { } void processAttribute(const DOMAttr* attribute) { - PROC_INTEGER_ATTRIB(Count,COUNT,NULL); + PROC_INTEGER_ATTRIB(Count,COUNT,nullptr); + AbstractXMLObjectUnmarshaller::processAttribute(attribute); + } + }; + + class SAML_DLLLOCAL DelegateImpl : public virtual Delegate, + public AbstractComplexElement, + public AbstractDOMCachingXMLObject, + public AbstractXMLObjectMarshaller, + public AbstractXMLObjectUnmarshaller + { + void init() { + m_ConfirmationMethod=nullptr; + m_DelegationInstant=nullptr; + m_BaseID=nullptr; + m_NameID=nullptr; + m_EncryptedID=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_pos_BaseID=m_children.begin(); + m_pos_NameID=m_pos_BaseID; + ++m_pos_NameID; + m_pos_EncryptedID=m_pos_NameID; + ++m_pos_EncryptedID; + } + public: + virtual ~DelegateImpl() { + XMLString::release(&m_ConfirmationMethod); + delete m_DelegationInstant; + } + + DelegateImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + init(); + } + + DelegateImpl(const DelegateImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + init(); + setConfirmationMethod(src.getConfirmationMethod()); + setDelegationInstant(src.getDelegationInstant()); + if (src.getBaseID()) + setBaseID(src.getBaseID()->cloneBaseID()); + if (src.getNameID()) + setNameID(src.getNameID()->cloneNameID()); + if (src.getEncryptedID()) + setEncryptedID(src.getEncryptedID()->cloneEncryptedID()); + } + + IMPL_XMLOBJECT_CLONE(Delegate); + IMPL_STRING_ATTRIB(ConfirmationMethod); + IMPL_DATETIME_ATTRIB(DelegationInstant,0); + IMPL_TYPED_CHILD(NameID); + IMPL_TYPED_CHILD(BaseID); + IMPL_TYPED_CHILD(EncryptedID); + + protected: + void marshallAttributes(DOMElement* domElement) const { + MARSHALL_STRING_ATTRIB(ConfirmationMethod,CONFIRMATIONMETHOD,nullptr); + MARSHALL_DATETIME_ATTRIB(DelegationInstant,DELEGATIONINSTANT,nullptr); + } + + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { + PROC_TYPED_CHILD(BaseID,SAML20_NS,false); + PROC_TYPED_CHILD(NameID,SAML20_NS,false); + PROC_TYPED_CHILD(EncryptedID,SAML20_NS,false); + AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); + } + + void processAttribute(const DOMAttr* attribute) { + PROC_STRING_ATTRIB(ConfirmationMethod,CONFIRMATIONMETHOD,nullptr); + PROC_DATETIME_ATTRIB(DelegationInstant,DELEGATIONINSTANT,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; + class SAML_DLLLOCAL DelegationRestrictionTypeImpl : public virtual DelegationRestrictionType, + public AbstractComplexElement, + public AbstractDOMCachingXMLObject, + public AbstractXMLObjectMarshaller, + public AbstractXMLObjectUnmarshaller + { + public: + virtual ~DelegationRestrictionTypeImpl() {} + + DelegationRestrictionTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + } + + DelegationRestrictionTypeImpl(const DelegationRestrictionTypeImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + VectorOf(Delegate) v=getDelegates(); + for (vector::const_iterator i=src.m_Delegates.begin(); i!=src.m_Delegates.end(); i++) { + if (*i) { + v.push_back((*i)->cloneDelegate()); + } + } + } + + IMPL_XMLOBJECT_CLONE(DelegationRestrictionType); + Condition* cloneCondition() const { + return cloneDelegationRestrictionType(); + } + IMPL_TYPED_CHILDREN(Delegate,m_children.end()); + + protected: + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { + PROC_TYPED_CHILDREN(Delegate,SAML20_DELEGATION_CONDITION_NS,false); + AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); + } + }; class SAML_DLLLOCAL ConditionsImpl : public virtual Conditions, public AbstractComplexElement, @@ -358,19 +465,19 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_NotBefore=m_NotOnOrAfter=NULL; + m_NotBefore=m_NotOnOrAfter=nullptr; } public: virtual ~ConditionsImpl() { delete m_NotBefore; delete m_NotOnOrAfter; } - - ConditionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + ConditionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + ConditionsImpl(const ConditionsImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -384,13 +491,13 @@ namespace opensaml { getAudienceRestrictions().push_back(arc->cloneAudienceRestriction()); continue; } - + OneTimeUse* dncc=dynamic_cast(*i); if (dncc) { getOneTimeUses().push_back(dncc->cloneOneTimeUse()); continue; } - + ProxyRestriction* prc=dynamic_cast(*i); if (prc) { getProxyRestrictions().push_back(prc->cloneProxyRestriction()); @@ -405,7 +512,7 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(Conditions); IMPL_DATETIME_ATTRIB(NotBefore,0); IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX); @@ -413,13 +520,13 @@ namespace opensaml { IMPL_TYPED_CHILDREN(OneTimeUse,m_children.end()); IMPL_TYPED_CHILDREN(ProxyRestriction, m_children.end()); IMPL_TYPED_CHILDREN(Condition,m_children.end()); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL); - MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); + MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); } - + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILDREN(AudienceRestriction,SAML20_NS,false); PROC_TYPED_CHILDREN(OneTimeUse,SAML20_NS,false); @@ -427,35 +534,41 @@ namespace opensaml { PROC_TYPED_CHILDREN(Condition,SAML20_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } - + void processAttribute(const DOMAttr* attribute) { - PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL); - PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); + PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; - class SAML_DLLLOCAL SubjectConfirmationDataImpl : public virtual SubjectConfirmationData, public AnyElementImpl + class SAML_DLLLOCAL SubjectConfirmationDataTypeImpl : public virtual SubjectConfirmationDataType, public virtual AbstractXMLObject { void init() { - m_NotBefore=m_NotOnOrAfter=NULL; - m_Recipient=m_InResponseTo=m_Address=NULL; + m_NotBefore=m_NotOnOrAfter=nullptr; + m_Recipient=m_InResponseTo=m_Address=nullptr; } + + protected: + SubjectConfirmationDataTypeImpl() { + init(); + } + public: - virtual ~SubjectConfirmationDataImpl() { + virtual ~SubjectConfirmationDataTypeImpl() { delete m_NotBefore; delete m_NotOnOrAfter; XMLString::release(&m_Recipient); XMLString::release(&m_InResponseTo); XMLString::release(&m_Address); } - - SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + SubjectConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - - SubjectConfirmationDataImpl(const SubjectConfirmationDataImpl& src) : AnyElementImpl(src) { + + SubjectConfirmationDataTypeImpl(const SubjectConfirmationDataTypeImpl& src) : AbstractXMLObject(src) { init(); setNotBefore(src.getNotBefore()); setNotOnOrAfter(src.getNotOnOrAfter()); @@ -463,16 +576,51 @@ namespace opensaml { setInResponseTo(src.getInResponseTo()); setAddress(src.getAddress()); } - - IMPL_XMLOBJECT_CLONE(SubjectConfirmationData); + IMPL_DATETIME_ATTRIB(NotBefore,0); IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX); IMPL_STRING_ATTRIB(Recipient); IMPL_STRING_ATTRIB(InResponseTo); IMPL_STRING_ATTRIB(Address); - + + protected: + void marshallAttributes(DOMElement* domElement) const { + MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); + MARSHALL_STRING_ATTRIB(Recipient,RECIPIENT,nullptr); + MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,nullptr); + MARSHALL_STRING_ATTRIB(Address,ADDRESS,nullptr); + } + + void processAttribute(const DOMAttr* attribute) { + PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); + PROC_STRING_ATTRIB(Recipient,RECIPIENT,nullptr); + PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,nullptr); + PROC_STRING_ATTRIB(Address,ADDRESS,nullptr); + } + }; + + class SAML_DLLLOCAL SubjectConfirmationDataImpl : public SubjectConfirmationData, + public SubjectConfirmationDataTypeImpl, public AnyElementImpl + { public: - void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) { + virtual ~SubjectConfirmationDataImpl() {} + + SubjectConfirmationDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + } + + SubjectConfirmationDataImpl(const SubjectConfirmationDataImpl& src) + : AbstractXMLObject(src), SubjectConfirmationDataTypeImpl(src), AnyElementImpl(src) { + } + + IMPL_XMLOBJECT_CLONE(SubjectConfirmationData); + SubjectConfirmationDataType* cloneSubjectConfirmationDataType() const { + return new SubjectConfirmationDataImpl(*this); + } + + void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) { if (!qualifiedName.hasNamespaceURI()) { if (XMLString::equals(qualifiedName.getLocalPart(),NOTBEFORE_ATTRIB_NAME)) { setNotBefore(value); @@ -500,69 +648,52 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL); - MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); - MARSHALL_STRING_ATTRIB(Recipient,RECIPIENT,NULL); - MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL); - MARSHALL_STRING_ATTRIB(Address,ADDRESS,NULL); + SubjectConfirmationDataTypeImpl::marshallAttributes(domElement); AnyElementImpl::marshallAttributes(domElement); } - - // The processAttributes hook is handled by AnyElementImpl + + void processAttribute(const DOMAttr* attribute) { + PROC_DATETIME_ATTRIB(NotBefore,NOTBEFORE,nullptr); + PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,nullptr); + PROC_STRING_ATTRIB(Recipient,RECIPIENT,nullptr); + PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,nullptr); + PROC_STRING_ATTRIB(Address,ADDRESS,nullptr); + AnyElementImpl::processAttribute(attribute); + } }; class SAML_DLLLOCAL KeyInfoConfirmationDataTypeImpl : public virtual KeyInfoConfirmationDataType, + public SubjectConfirmationDataTypeImpl, public AbstractComplexElement, public AbstractAttributeExtensibleXMLObject, public AbstractDOMCachingXMLObject, public AbstractXMLObjectMarshaller, public AbstractXMLObjectUnmarshaller { - void init() { - m_NotBefore=m_NotOnOrAfter=NULL; - m_Recipient=m_InResponseTo=m_Address=NULL; - } public: - virtual ~KeyInfoConfirmationDataTypeImpl() { - delete m_NotBefore; - delete m_NotOnOrAfter; - XMLString::release(&m_Recipient); - XMLString::release(&m_InResponseTo); - XMLString::release(&m_Address); - } - - KeyInfoConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + virtual ~KeyInfoConfirmationDataTypeImpl() {} + + KeyInfoConfirmationDataTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { - init(); } - + KeyInfoConfirmationDataTypeImpl(const KeyInfoConfirmationDataTypeImpl& src) - : AbstractXMLObject(src), AbstractComplexElement(src), + : AbstractXMLObject(src), SubjectConfirmationDataTypeImpl(src), AbstractComplexElement(src), AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) { - init(); - setNotBefore(src.getNotBefore()); - setNotOnOrAfter(src.getNotOnOrAfter()); - setRecipient(src.getRecipient()); - setInResponseTo(src.getInResponseTo()); - setAddress(src.getAddress()); VectorOf(KeyInfo) v=getKeyInfos(); - for (vector::const_iterator i=src.m_KeyInfos.begin(); i!=src.m_KeyInfos.end(); i++) { - if (*i) { - v.push_back((*i)->cloneKeyInfo()); - } - } + for (vector::const_iterator i=src.m_KeyInfos.begin(); i!=src.m_KeyInfos.end(); ++i) + v.push_back((*i)->cloneKeyInfo()); } - + IMPL_XMLOBJECT_CLONE(KeyInfoConfirmationDataType); - IMPL_DATETIME_ATTRIB(NotBefore,0); - IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX); - IMPL_STRING_ATTRIB(Recipient); - IMPL_STRING_ATTRIB(InResponseTo); - IMPL_STRING_ATTRIB(Address); + SubjectConfirmationDataType* cloneSubjectConfirmationDataType() const { + return new KeyInfoConfirmationDataTypeImpl(*this); + } + IMPL_TYPED_CHILDREN(KeyInfo,m_children.end()); - + public: - void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) { + void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) { if (!qualifiedName.hasNamespaceURI()) { if (XMLString::equals(qualifiedName.getLocalPart(),NOTBEFORE_ATTRIB_NAME)) { setNotBefore(value); @@ -590,14 +721,10 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_DATETIME_ATTRIB(NotBefore,NOTBEFORE,NULL); - MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL); - MARSHALL_STRING_ATTRIB(Recipient,RECIPIENT,NULL); - MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL); - MARSHALL_STRING_ATTRIB(Address,ADDRESS,NULL); + SubjectConfirmationDataTypeImpl::marshallAttributes(domElement); marshallExtensionAttributes(domElement); } - + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILDREN(KeyInfo,XMLSIG_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); @@ -615,16 +742,15 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_Method=NULL; - m_BaseID=NULL; - m_NameID=NULL; - m_EncryptedID=NULL; - m_SubjectConfirmationData=NULL; - m_KeyInfoConfirmationDataType=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); + m_Method=nullptr; + m_BaseID=nullptr; + m_NameID=nullptr; + m_EncryptedID=nullptr; + m_SubjectConfirmationData=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_BaseID=m_children.begin(); m_pos_NameID=m_pos_BaseID; ++m_pos_NameID; @@ -632,17 +758,15 @@ namespace opensaml { ++m_pos_EncryptedID; m_pos_SubjectConfirmationData=m_pos_EncryptedID; ++m_pos_SubjectConfirmationData; - m_pos_KeyInfoConfirmationDataType=m_pos_SubjectConfirmationData; - ++m_pos_KeyInfoConfirmationDataType; } public: virtual ~SubjectConfirmationImpl() {} - - SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + SubjectConfirmationImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + SubjectConfirmationImpl(const SubjectConfirmationImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -655,34 +779,30 @@ namespace opensaml { setEncryptedID(src.getEncryptedID()->cloneEncryptedID()); if (src.getSubjectConfirmationData()) setSubjectConfirmationData(src.getSubjectConfirmationData()->clone()); - if (src.getKeyInfoConfirmationDataType()) - setKeyInfoConfirmationDataType(src.getKeyInfoConfirmationDataType()->cloneKeyInfoConfirmationDataType()); } - + IMPL_XMLOBJECT_CLONE(SubjectConfirmation); IMPL_STRING_ATTRIB(Method); IMPL_TYPED_CHILD(BaseID); IMPL_TYPED_CHILD(NameID); IMPL_TYPED_CHILD(EncryptedID); IMPL_XMLOBJECT_CHILD(SubjectConfirmationData); - IMPL_TYPED_CHILD(KeyInfoConfirmationDataType); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Method,METHOD,NULL); + MARSHALL_STRING_ATTRIB(Method,METHOD,nullptr); } void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILD(BaseID,SAML20_NS,false); PROC_TYPED_CHILD(NameID,SAML20_NS,false); PROC_TYPED_CHILD(EncryptedID,SAML20_NS,false); - PROC_TYPED_CHILD(KeyInfoConfirmationDataType,SAML20_NS,false); PROC_XMLOBJECT_CHILD(SubjectConfirmationData,SAML20_NS); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Method,METHOD,NULL); + PROC_STRING_ATTRIB(Method,METHOD,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; @@ -694,12 +814,12 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_BaseID=NULL; - m_NameID=NULL; - m_EncryptedID=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); + m_BaseID=nullptr; + m_NameID=nullptr; + m_EncryptedID=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_BaseID=m_children.begin(); m_pos_NameID=m_pos_BaseID; ++m_pos_NameID; @@ -708,12 +828,12 @@ namespace opensaml { } public: virtual ~SubjectImpl() {} - - SubjectImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + SubjectImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + SubjectImpl(const SubjectImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -730,13 +850,13 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(Subject); IMPL_TYPED_CHILD(NameID); IMPL_TYPED_CHILD(BaseID); IMPL_TYPED_CHILD(EncryptedID); IMPL_TYPED_CHILDREN(SubjectConfirmation,m_children.end()); - + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILD(BaseID,SAML20_NS,false); @@ -754,56 +874,70 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_Address=m_DNSName=NULL; + m_Address=m_DNSName=nullptr; } public: virtual ~SubjectLocalityImpl() { XMLString::release(&m_Address); XMLString::release(&m_DNSName); } - - SubjectLocalityImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + SubjectLocalityImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + SubjectLocalityImpl(const SubjectLocalityImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { init(); setAddress(src.getAddress()); setDNSName(src.getDNSName()); } - + IMPL_XMLOBJECT_CLONE(SubjectLocality); IMPL_STRING_ATTRIB(Address); IMPL_STRING_ATTRIB(DNSName); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Address,ADDRESS,NULL); - MARSHALL_STRING_ATTRIB(DNSName,DNSNAME,NULL); + MARSHALL_STRING_ATTRIB(Address,ADDRESS,nullptr); + MARSHALL_STRING_ATTRIB(DNSName,DNSNAME,nullptr); } - + void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Address,ADDRESS,NULL); - PROC_STRING_ATTRIB(DNSName,DNSNAME,NULL); + PROC_STRING_ATTRIB(Address,ADDRESS,nullptr); + PROC_STRING_ATTRIB(DNSName,DNSNAME,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; + class SAML_DLLLOCAL StatementImpl : public virtual Statement, public AnyElementImpl + { + public: + virtual ~StatementImpl() {} + + StatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + } + + StatementImpl(const StatementImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) {} + + IMPL_XMLOBJECT_CLONE(Statement); + }; + //TODO need unit test for this class SAML_DLLLOCAL AuthnContextDeclImpl : public virtual AuthnContextDecl, public AnyElementImpl { public: virtual ~AuthnContextDeclImpl() {} - - AuthnContextDeclImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AuthnContextDeclImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - - AuthnContextDeclImpl(const AuthnContextDeclImpl& src) : AnyElementImpl(src) { + + AuthnContextDeclImpl(const AuthnContextDeclImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) { } - + IMPL_XMLOBJECT_CLONE(AuthnContextDecl); }; @@ -814,12 +948,12 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_AuthnContextClassRef=NULL; - m_AuthnContextDecl=NULL; - m_AuthnContextDeclRef=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); + m_AuthnContextClassRef=nullptr; + m_AuthnContextDecl=nullptr; + m_AuthnContextDeclRef=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_AuthnContextClassRef=m_children.begin(); m_pos_AuthnContextDecl=m_pos_AuthnContextClassRef; ++m_pos_AuthnContextDecl; @@ -828,12 +962,12 @@ namespace opensaml { } public: virtual ~AuthnContextImpl() {} - - AuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + AuthnContextImpl(const AuthnContextImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -850,13 +984,13 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(AuthnContext); IMPL_TYPED_CHILD(AuthnContextClassRef); IMPL_XMLOBJECT_CHILD(AuthnContextDecl); IMPL_TYPED_CHILD(AuthnContextDeclRef); IMPL_TYPED_CHILDREN(AuthenticatingAuthority,m_children.end()); - + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILD(AuthnContextClassRef,SAML20_NS,false); @@ -874,13 +1008,13 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_AuthnInstant=NULL; - m_SessionIndex=NULL; - m_SessionNotOnOrAfter=NULL; - m_SubjectLocality=NULL; - m_AuthnContext=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); + m_AuthnInstant=nullptr; + m_SessionIndex=nullptr; + m_SessionNotOnOrAfter=nullptr; + m_SubjectLocality=nullptr; + m_AuthnContext=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_SubjectLocality=m_children.begin(); m_pos_AuthnContext=m_pos_SubjectLocality; ++m_pos_AuthnContext; @@ -891,12 +1025,12 @@ namespace opensaml { XMLString::release(&m_SessionIndex); delete m_SessionNotOnOrAfter; } - - AuthnStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AuthnStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + AuthnStatementImpl(const AuthnStatementImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -908,7 +1042,7 @@ namespace opensaml { if (src.getAuthnContext()) setAuthnContext(src.getAuthnContext()->cloneAuthnContext()); } - + IMPL_XMLOBJECT_CLONE(AuthnStatement); Statement* cloneStatement() const { return cloneAuthnStatement(); @@ -918,24 +1052,24 @@ namespace opensaml { IMPL_DATETIME_ATTRIB(SessionNotOnOrAfter,SAMLTIME_MAX); IMPL_TYPED_CHILD(SubjectLocality); IMPL_TYPED_CHILD(AuthnContext); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,NULL); - MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL); - MARSHALL_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,NULL); + MARSHALL_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,nullptr); + MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,nullptr); + MARSHALL_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,nullptr); } - + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILD(SubjectLocality,SAML20_NS,false); PROC_TYPED_CHILD(AuthnContext,SAML20_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } - + void processAttribute(const DOMAttr* attribute) { - PROC_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,NULL); - PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL); - PROC_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,NULL); + PROC_DATETIME_ATTRIB(AuthnInstant,AUTHNINSTANT,nullptr); + PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,nullptr); + PROC_DATETIME_ATTRIB(SessionNotOnOrAfter,SESSIONNOTONORAFTER,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; @@ -950,26 +1084,26 @@ namespace opensaml { virtual ~ActionImpl() { XMLString::release(&m_Namespace); } - - ActionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Namespace(NULL) { + + ActionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Namespace(nullptr) { } - + ActionImpl(const ActionImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { setNamespace(src.getNamespace()); } - + IMPL_XMLOBJECT_CLONE(Action); IMPL_STRING_ATTRIB(Namespace); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Namespace,NAMESPACE,NULL); + MARSHALL_STRING_ATTRIB(Namespace,NAMESPACE,nullptr); } void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Namespace,NAMESPACE,NULL); + PROC_STRING_ATTRIB(Namespace,NAMESPACE,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; @@ -982,11 +1116,11 @@ namespace opensaml { { public: virtual ~EvidenceImpl() {} - - EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + EvidenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - + EvidenceImpl(const EvidenceImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { @@ -996,7 +1130,7 @@ namespace opensaml { getAssertionIDRefs().push_back(ref->cloneAssertionIDRef()); continue; } - + AssertionURIRef* uri=dynamic_cast(*i); if (uri) { getAssertionURIRefs().push_back(uri->cloneAssertionURIRef()); @@ -1008,7 +1142,7 @@ namespace opensaml { getAssertions().push_back(assertion->cloneAssertion()); continue; } - + EncryptedAssertion* enc=dynamic_cast(*i); if (enc) { getEncryptedAssertions().push_back(enc->cloneEncryptedAssertion()); @@ -1017,13 +1151,13 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(Evidence); IMPL_TYPED_CHILDREN(AssertionIDRef,m_children.end()); IMPL_TYPED_CHILDREN(AssertionURIRef,m_children.end()); IMPL_TYPED_CHILDREN(Assertion,m_children.end()); IMPL_TYPED_CHILDREN(EncryptedAssertion,m_children.end()); - + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILDREN(AssertionIDRef,SAML20_NS,false); @@ -1041,10 +1175,10 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_Resource=NULL; - m_Decision=NULL; - m_Evidence=NULL; - m_children.push_back(NULL); + m_Resource=nullptr; + m_Decision=nullptr; + m_Evidence=nullptr; + m_children.push_back(nullptr); m_pos_Evidence=m_children.begin(); } public: @@ -1052,12 +1186,12 @@ namespace opensaml { XMLString::release(&m_Resource); XMLString::release(&m_Decision); } - - AuthzDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AuthzDecisionStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + AuthzDecisionStatementImpl(const AuthzDecisionStatementImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -1072,7 +1206,7 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(AuthzDecisionStatement); Statement* cloneStatement() const { return cloneAuthzDecisionStatement(); @@ -1081,39 +1215,38 @@ namespace opensaml { IMPL_STRING_ATTRIB(Decision); IMPL_TYPED_CHILD(Evidence); IMPL_TYPED_CHILDREN(Action, m_pos_Evidence); - + protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Resource,RESOURCE,NULL); - MARSHALL_STRING_ATTRIB(Decision,DECISION,NULL); + MARSHALL_STRING_ATTRIB(Resource,RESOURCE,nullptr); + MARSHALL_STRING_ATTRIB(Decision,DECISION,nullptr); } - + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILD(Evidence,SAML20_NS,false); PROC_TYPED_CHILDREN(Action,SAML20_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } - + void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Resource,RESOURCE,NULL); - PROC_STRING_ATTRIB(Decision,DECISION,NULL); + PROC_STRING_ATTRIB(Resource,RESOURCE,nullptr); + PROC_STRING_ATTRIB(Decision,DECISION,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; - //TODO need unit test for this class SAML_DLLLOCAL AttributeValueImpl : public virtual AttributeValue, public AnyElementImpl { public: virtual ~AttributeValueImpl() {} - - AttributeValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AttributeValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - - AttributeValueImpl(const AttributeValueImpl& src) : AnyElementImpl(src) { + + AttributeValueImpl(const AttributeValueImpl& src) : AbstractXMLObject(src), AnyElementImpl(src) { } - + IMPL_XMLOBJECT_CLONE(AttributeValue); }; @@ -1126,7 +1259,7 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_Name=m_NameFormat=m_FriendlyName=NULL; + m_Name=m_NameFormat=m_FriendlyName=nullptr; } public: virtual ~AttributeImpl() { @@ -1134,12 +1267,12 @@ namespace opensaml { XMLString::release(&m_NameFormat); XMLString::release(&m_FriendlyName); } - - AttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + AttributeImpl(const AttributeImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) { @@ -1154,14 +1287,14 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(Attribute); IMPL_STRING_ATTRIB(Name); IMPL_STRING_ATTRIB(NameFormat); IMPL_STRING_ATTRIB(FriendlyName); IMPL_XMLOBJECT_CHILDREN(AttributeValue,m_children.end()); - - void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) { + + void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) { if (!qualifiedName.hasNamespaceURI()) { if (XMLString::equals(qualifiedName.getLocalPart(),NAME_ATTRIB_NAME)) { setName(value); @@ -1181,9 +1314,9 @@ namespace opensaml { protected: void marshallAttributes(DOMElement* domElement) const { - MARSHALL_STRING_ATTRIB(Name,NAME,NULL); - MARSHALL_STRING_ATTRIB(NameFormat,NAMEFORMAT,NULL); - MARSHALL_STRING_ATTRIB(FriendlyName,FRIENDLYNAME,NULL); + MARSHALL_STRING_ATTRIB(Name,NAME,nullptr); + MARSHALL_STRING_ATTRIB(NameFormat,NAMEFORMAT,nullptr); + MARSHALL_STRING_ATTRIB(FriendlyName,FRIENDLYNAME,nullptr); marshallExtensionAttributes(domElement); } @@ -1196,17 +1329,17 @@ namespace opensaml { } }; - //TODO unit test for this + //TODO unit test for this class SAML_DLLLOCAL EncryptedAttributeImpl : public virtual EncryptedAttribute, public EncryptedElementTypeImpl { public: virtual ~EncryptedAttributeImpl() {} - - EncryptedAttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + EncryptedAttributeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - + EncryptedAttributeImpl(const EncryptedAttributeImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {} - + IMPL_XMLOBJECT_CLONE(EncryptedAttribute); EncryptedElementType* cloneEncryptedElementType() const { return new EncryptedAttributeImpl(*this); @@ -1221,11 +1354,11 @@ namespace opensaml { { public: virtual ~AttributeStatementImpl() {} - - AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AttributeStatementImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - + AttributeStatementImpl(const AttributeStatementImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { @@ -1235,7 +1368,7 @@ namespace opensaml { getAttributes().push_back(attribute->cloneAttribute()); continue; } - + EncryptedAttribute* enc=dynamic_cast(*i); if (enc) { getEncryptedAttributes().push_back(enc->cloneEncryptedAttribute()); @@ -1244,14 +1377,14 @@ namespace opensaml { } } } - + IMPL_XMLOBJECT_CLONE(AttributeStatement); Statement* cloneStatement() const { return cloneAttributeStatement(); } IMPL_TYPED_CHILDREN(Attribute, m_children.end()); IMPL_TYPED_CHILDREN(EncryptedAttribute, m_children.end()); - + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILDREN(Attribute,SAML20_NS,false); @@ -1268,11 +1401,11 @@ namespace opensaml { { public: virtual ~AdviceImpl() {} - - AdviceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AdviceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { } - + AdviceImpl(const AdviceImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { @@ -1282,7 +1415,7 @@ namespace opensaml { getAssertionIDRefs().push_back(ref->cloneAssertionIDRef()); continue; } - + AssertionURIRef* uri=dynamic_cast(*i); if (uri) { getAssertionURIRefs().push_back(uri->cloneAssertionURIRef()); @@ -1294,54 +1427,54 @@ namespace opensaml { getAssertions().push_back(assertion->cloneAssertion()); continue; } - + EncryptedAssertion* enc=dynamic_cast(*i); if (enc) { getEncryptedAssertions().push_back(enc->cloneEncryptedAssertion()); continue; } - getOthers().push_back((*i)->clone()); + getUnknownXMLObjects().push_back((*i)->clone()); } } } - + IMPL_XMLOBJECT_CLONE(Advice); IMPL_TYPED_CHILDREN(AssertionIDRef,m_children.end()); IMPL_TYPED_CHILDREN(AssertionURIRef,m_children.end()); IMPL_TYPED_CHILDREN(Assertion,m_children.end()); IMPL_TYPED_CHILDREN(EncryptedAssertion,m_children.end()); - IMPL_XMLOBJECT_CHILDREN(Other,m_children.end()); - + IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); + protected: void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILDREN(AssertionIDRef,SAML20_NS,false); PROC_TYPED_CHILDREN(AssertionURIRef,SAML20_NS,false); PROC_TYPED_CHILDREN(Assertion,SAML20_NS,false); PROC_TYPED_CHILDREN(EncryptedAssertion,SAML20_NS,false); - + // Unknown child. const XMLCh* nsURI=root->getNamespaceURI(); if (!XMLString::equals(nsURI,SAML20_NS) && nsURI && *nsURI) { - getOthers().push_back(childXMLObject); + getUnknownXMLObjects().push_back(childXMLObject); return; } - + AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } }; - //TODO unit test for this + //TODO unit test for this class SAML_DLLLOCAL EncryptedAssertionImpl : public virtual EncryptedAssertion, public EncryptedElementTypeImpl { public: virtual ~EncryptedAssertionImpl() {} - - EncryptedAssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + EncryptedAssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - + EncryptedAssertionImpl(const EncryptedAssertionImpl& src) : AbstractXMLObject(src), EncryptedElementTypeImpl(src) {} - + IMPL_XMLOBJECT_CLONE(EncryptedAssertion); EncryptedElementType* cloneEncryptedElementType() const { return new EncryptedAssertionImpl(*this); @@ -1355,19 +1488,19 @@ namespace opensaml { public AbstractXMLObjectUnmarshaller { void init() { - m_ID=NULL; - m_Version=NULL; - m_IssueInstant=NULL; - m_Issuer=NULL; - m_Signature=NULL; - m_Subject=NULL; - m_Conditions=NULL; - m_Advice=NULL; - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); - m_children.push_back(NULL); + m_ID=nullptr; + m_Version=nullptr; + m_IssueInstant=nullptr; + m_Issuer=nullptr; + m_Signature=nullptr; + m_Subject=nullptr; + m_Conditions=nullptr; + m_Advice=nullptr; + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); + m_children.push_back(nullptr); m_pos_Issuer=m_children.begin(); m_pos_Signature=m_pos_Issuer; ++m_pos_Signature; @@ -1384,12 +1517,12 @@ namespace opensaml { XMLString::release(&m_Version); delete m_IssueInstant; } - - AssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) + + AssertionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } - + AssertionImpl(const AssertionImpl& src) : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { init(); @@ -1425,7 +1558,7 @@ namespace opensaml { getAuthzDecisionStatements().push_back(authzst->cloneAuthzDecisionStatement()); continue; } - + Statement* st=dynamic_cast(*i); if (st) { getStatements().push_back(st->cloneStatement()); @@ -1434,7 +1567,7 @@ namespace opensaml { } } } - + //IMPL_TYPED_CHILD(Signature); // Need customized setter. protected: @@ -1444,7 +1577,7 @@ namespace opensaml { Signature* getSignature() const { return m_Signature; } - + void setSignature(Signature* sig) { prepareForAssignment(m_Signature,sig); *m_pos_Signature=m_Signature=sig; @@ -1452,10 +1585,10 @@ namespace opensaml { if (m_Signature) m_Signature->setContentReference(new opensaml::ContentReference(*this)); } - + IMPL_XMLOBJECT_CLONE(Assertion); IMPL_STRING_ATTRIB(Version); - IMPL_ID_ATTRIB(ID); + IMPL_ID_ATTRIB_EX(ID,ID,nullptr); IMPL_DATETIME_ATTRIB(IssueInstant,0); IMPL_TYPED_CHILD(Issuer); IMPL_TYPED_CHILD(Subject); @@ -1465,22 +1598,22 @@ namespace opensaml { IMPL_TYPED_CHILDREN(AuthnStatement, m_children.end()); IMPL_TYPED_CHILDREN(AttributeStatement, m_children.end()); IMPL_TYPED_CHILDREN(AuthzDecisionStatement, m_children.end()); - + protected: void marshallAttributes(DOMElement* domElement) const { if (!m_Version) const_cast(this)->m_Version=XMLString::transcode("2.0"); - MARSHALL_STRING_ATTRIB(Version,VER,NULL); + MARSHALL_STRING_ATTRIB(Version,VER,nullptr); if (!m_ID) const_cast(this)->m_ID=SAMLConfig::getConfig().generateIdentifier(); - MARSHALL_ID_ATTRIB(ID,ID,NULL); + MARSHALL_ID_ATTRIB(ID,ID,nullptr); if (!m_IssueInstant) { - const_cast(this)->m_IssueInstantEpoch=time(NULL); + const_cast(this)->m_IssueInstantEpoch=time(nullptr); const_cast(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch); } - MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL); + MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,nullptr); } - + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { PROC_TYPED_CHILD(Issuer,SAML20_NS,false); PROC_TYPED_CHILD(Signature,XMLSIG_NS,false); @@ -1493,11 +1626,11 @@ namespace opensaml { PROC_TYPED_CHILDREN(Statement,SAML20_NS,false); AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); } - + void processAttribute(const DOMAttr* attribute) { - PROC_STRING_ATTRIB(Version,VER,NULL); - PROC_ID_ATTRIB(ID,ID,NULL); - PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL); + PROC_STRING_ATTRIB(Version,VER,nullptr); + PROC_ID_ATTRIB(ID,ID,nullptr); + PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,nullptr); AbstractXMLObjectUnmarshaller::processAttribute(attribute); } }; @@ -1528,7 +1661,10 @@ IMPL_XMLOBJECTBUILDER(AuthnContextDecl); IMPL_XMLOBJECTBUILDER(AuthnContextDeclRef); IMPL_XMLOBJECTBUILDER(AuthnStatement); IMPL_XMLOBJECTBUILDER(AuthzDecisionStatement); +IMPL_XMLOBJECTBUILDER(Condition); IMPL_XMLOBJECTBUILDER(Conditions); +IMPL_XMLOBJECTBUILDER(Delegate); +IMPL_XMLOBJECTBUILDER(DelegationRestrictionType); IMPL_XMLOBJECTBUILDER(EncryptedAssertion); IMPL_XMLOBJECTBUILDER(EncryptedAttribute); IMPL_XMLOBJECTBUILDER(EncryptedID); @@ -1539,6 +1675,7 @@ IMPL_XMLOBJECTBUILDER(NameID); IMPL_XMLOBJECTBUILDER(NameIDType); IMPL_XMLOBJECTBUILDER(OneTimeUse); IMPL_XMLOBJECTBUILDER(ProxyRestriction); +IMPL_XMLOBJECTBUILDER(Statement); IMPL_XMLOBJECTBUILDER(Subject); IMPL_XMLOBJECTBUILDER(SubjectConfirmation); IMPL_XMLOBJECTBUILDER(SubjectConfirmationData); @@ -1594,21 +1731,22 @@ const XMLCh Conditions::LOCAL_NAME[] = UNICODE_LITERAL_10(C,o,n,d,i const XMLCh Conditions::TYPE_NAME[] = UNICODE_LITERAL_14(C,o,n,d,i,t,i,o,n,s,T,y,p,e); const XMLCh Conditions::NOTBEFORE_ATTRIB_NAME[] = UNICODE_LITERAL_9(N,o,t,B,e,f,o,r,e); const XMLCh Conditions::NOTONORAFTER_ATTRIB_NAME[] =UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r); +const XMLCh Delegate::LOCAL_NAME[] = UNICODE_LITERAL_8(D,e,l,e,g,a,t,e); +const XMLCh Delegate::TYPE_NAME[] = UNICODE_LITERAL_12(D,e,l,e,g,a,t,e,T,y,p,e); +const XMLCh Delegate::CONFIRMATIONMETHOD_ATTRIB_NAME[] = UNICODE_LITERAL_18(C,o,n,f,i,r,m,a,t,i,o,n,M,e,t,h,o,d); +const XMLCh Delegate::DELEGATIONINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_17(D,e,l,e,g,a,t,i,o,n,I,n,s,t,a,n,t); +const XMLCh DelegationRestrictionType::LOCAL_NAME[] = UNICODE_LITERAL_9(C,o,n,d,i,t,i,o,n); +const XMLCh DelegationRestrictionType::TYPE_NAME[] =UNICODE_LITERAL_25(D,e,l,e,g,a,t,i,o,n,R,e,s,t,r,i,c,t,i,o,n,T,y,p,e); const XMLCh EncryptedAssertion::LOCAL_NAME[] = UNICODE_LITERAL_18(E,n,c,r,y,p,t,e,d,A,s,s,e,r,t,i,o,n); const XMLCh EncryptedAttribute::LOCAL_NAME[] = UNICODE_LITERAL_18(E,n,c,r,y,p,t,e,d,A,t,t,r,i,b,u,t,e); const XMLCh EncryptedElementType::LOCAL_NAME[] = {chNull}; const XMLCh EncryptedElementType::TYPE_NAME[] = UNICODE_LITERAL_20(E,n,c,r,y,p,t,e,d,E,l,e,m,e,n,t,T,y,p,e); -const XMLCh EncryptedID::LOCAL_NAME[] = UNICODE_LITERAL_11(E,n,c,r,y,p,t,e,d,I,d); +const XMLCh EncryptedID::LOCAL_NAME[] = UNICODE_LITERAL_11(E,n,c,r,y,p,t,e,d,I,D); const XMLCh Evidence::LOCAL_NAME[] = UNICODE_LITERAL_8(E,v,i,d,e,n,c,e); const XMLCh Evidence::TYPE_NAME[] = UNICODE_LITERAL_12(E,v,i,d,e,n,c,e,T,y,p,e); const XMLCh Issuer::LOCAL_NAME[] = UNICODE_LITERAL_6(I,s,s,u,e,r); const XMLCh KeyInfoConfirmationDataType::LOCAL_NAME[] = UNICODE_LITERAL_23(S,u,b,j,e,c,t,C,o,n,f,i,r,m,a,t,i,o,n,D,a,t,a); const XMLCh KeyInfoConfirmationDataType::TYPE_NAME[] = UNICODE_LITERAL_27(K,e,y,I,n,f,o,C,o,n,f,i,r,m,a,t,i,o,n,D,a,t,a,T,y,p,e); -const XMLCh KeyInfoConfirmationDataType::NOTBEFORE_ATTRIB_NAME[] = UNICODE_LITERAL_9(N,o,t,B,e,f,o,r,e); -const XMLCh KeyInfoConfirmationDataType::NOTONORAFTER_ATTRIB_NAME[] = UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r); -const XMLCh KeyInfoConfirmationDataType::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o); -const XMLCh KeyInfoConfirmationDataType::RECIPIENT_ATTRIB_NAME[] = UNICODE_LITERAL_9(R,e,c,i,p,i,e,n,t); -const XMLCh KeyInfoConfirmationDataType::ADDRESS_ATTRIB_NAME[] = UNICODE_LITERAL_7(A,d,d,r,e,s,s); const XMLCh NameID::LOCAL_NAME[] = UNICODE_LITERAL_6(N,a,m,e,I,D); const XMLCh NameIDType::LOCAL_NAME[] = {chNull}; const XMLCh NameIDType::TYPE_NAME[] = UNICODE_LITERAL_10(N,a,m,e,I,D,T,y,p,e); @@ -1628,11 +1766,11 @@ const XMLCh SubjectConfirmation::LOCAL_NAME[] = UNICODE_LITERAL_19(S,u,b,j,e const XMLCh SubjectConfirmation::TYPE_NAME[] = UNICODE_LITERAL_23(S,u,b,j,e,c,t,C,o,n,f,i,r,m,a,t,i,o,n,T,y,p,e); const XMLCh SubjectConfirmation::METHOD_ATTRIB_NAME[] = UNICODE_LITERAL_6(M,e,t,h,o,d); const XMLCh SubjectConfirmationData::LOCAL_NAME[] = UNICODE_LITERAL_23(S,u,b,j,e,c,t,C,o,n,f,i,r,m,a,t,i,o,n,D,a,t,a); -const XMLCh SubjectConfirmationData::NOTBEFORE_ATTRIB_NAME[] = UNICODE_LITERAL_9(N,o,t,B,e,f,o,r,e); -const XMLCh SubjectConfirmationData::NOTONORAFTER_ATTRIB_NAME[] = UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r); -const XMLCh SubjectConfirmationData::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o); -const XMLCh SubjectConfirmationData::RECIPIENT_ATTRIB_NAME[] = UNICODE_LITERAL_9(R,e,c,i,p,i,e,n,t); -const XMLCh SubjectConfirmationData::ADDRESS_ATTRIB_NAME[] = UNICODE_LITERAL_7(A,d,d,r,e,s,s); +const XMLCh SubjectConfirmationDataType::NOTBEFORE_ATTRIB_NAME[] = UNICODE_LITERAL_9(N,o,t,B,e,f,o,r,e); +const XMLCh SubjectConfirmationDataType::NOTONORAFTER_ATTRIB_NAME[] = UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r); +const XMLCh SubjectConfirmationDataType::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o); +const XMLCh SubjectConfirmationDataType::RECIPIENT_ATTRIB_NAME[] = UNICODE_LITERAL_9(R,e,c,i,p,i,e,n,t); +const XMLCh SubjectConfirmationDataType::ADDRESS_ATTRIB_NAME[] = UNICODE_LITERAL_7(A,d,d,r,e,s,s); const XMLCh SubjectLocality::LOCAL_NAME[] = UNICODE_LITERAL_15(S,u,b,j,e,c,t,L,o,c,a,l,i,t,y); const XMLCh SubjectLocality::TYPE_NAME[] = UNICODE_LITERAL_19(S,u,b,j,e,c,t,L,o,c,a,l,i,t,y,T,y,p,e); const XMLCh SubjectLocality::ADDRESS_ATTRIB_NAME[] =UNICODE_LITERAL_7(A,d,d,r,e,s,s); @@ -1644,7 +1782,7 @@ const XMLCh NameIDType::UNSPECIFIED[] = // urn:oasis:names:tc:SAML:1.1:nameid-fo chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_1, chPeriod, chDigit_1, chColon, chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_i, chLatin_d, chDash, chLatin_f, chLatin_o, chLatin_r, chLatin_m, chLatin_a, chLatin_t, chColon, - chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chLatin_d, chNull + chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chNull }; const XMLCh NameIDType::EMAIL[] = // urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress @@ -1776,7 +1914,7 @@ const XMLCh Attribute::UNSPECIFIED[] = // urn:oasis:names:tc:SAML:2.0:attrname-f chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon, chLatin_a, chLatin_t, chLatin_t, chLatin_r, chLatin_n, chLatin_a, chLatin_m, chLatin_e, chDash, chLatin_f, chLatin_o, chLatin_r, chLatin_m, chLatin_a, chLatin_t, chColon, - chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chLatin_d, chNull + chLatin_u, chLatin_n, chLatin_s, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chNull }; const XMLCh Attribute::URI_REFERENCE[] = // urn:oasis:names:tc:SAML:2.0:attrname-format:uri