2 * Copyright 2001-2006 Internet2
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 * Implementation classes for SAML 2.0 Protocols schema
24 #include "exceptions.h"
25 #include "saml/encryption/EncryptedKeyResolver.h"
26 #include "saml2/core/Protocols.h"
28 #include <xmltooling/AbstractComplexElement.h>
29 #include <xmltooling/AbstractElementProxy.h>
30 #include <xmltooling/AbstractSimpleElement.h>
31 #include <xmltooling/encryption/Decrypter.h>
32 #include <xmltooling/impl/AnyElement.h>
33 #include <xmltooling/io/AbstractXMLObjectMarshaller.h>
34 #include <xmltooling/io/AbstractXMLObjectUnmarshaller.h>
35 #include <xmltooling/util/XMLHelper.h>
38 #include <xercesc/util/XMLUniDefs.hpp>
40 using namespace opensaml::saml2p;
41 using namespace opensaml::saml2;
42 using namespace opensaml;
43 using namespace xmlsignature;
44 using namespace xmlencryption;
45 using namespace xmltooling;
48 #if defined (_MSC_VER)
49 #pragma warning( push )
50 #pragma warning( disable : 4250 4251 )
56 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,Artifact);
57 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,GetComplete);
58 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,NewID);
59 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,RequesterID);
60 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,SessionIndex);
61 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,StatusMessage);
63 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,RespondTo);
65 //TODO need unit test for this, using objects from another namespace
66 class SAML_DLLLOCAL ExtensionsImpl : public virtual Extensions,
67 public AbstractElementProxy,
68 public AbstractDOMCachingXMLObject,
69 public AbstractXMLObjectMarshaller,
70 public AbstractXMLObjectUnmarshaller
73 virtual ~ExtensionsImpl() {}
75 ExtensionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
76 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
79 ExtensionsImpl(const ExtensionsImpl& src)
80 : AbstractXMLObject(src), AbstractElementProxy(src), AbstractDOMCachingXMLObject(src) {
81 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
83 getXMLObjects().push_back((*i)->clone());
88 IMPL_XMLOBJECT_CLONE(Extensions);
91 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
93 const XMLCh* nsURI=root->getNamespaceURI();
94 if (!XMLString::equals(nsURI,SAMLConstants::SAML20P_NS) && nsURI && *nsURI) {
95 getXMLObjects().push_back(childXMLObject);
99 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
103 class SAML_DLLLOCAL StatusCodeImpl : public virtual StatusCode,
104 public AbstractComplexElement,
105 public AbstractDOMCachingXMLObject,
106 public AbstractXMLObjectMarshaller,
107 public AbstractXMLObjectUnmarshaller
112 m_children.push_back(NULL);
113 m_pos_StatusCode=m_children.begin();
116 virtual ~StatusCodeImpl() {}
118 StatusCodeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
119 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
124 StatusCodeImpl(const StatusCodeImpl& src)
125 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
127 setValue(src.getValue());
128 if (src.getStatusCode())
129 setStatusCode(src.getStatusCode()->cloneStatusCode());
132 IMPL_XMLOBJECT_CLONE(StatusCode);
133 IMPL_STRING_ATTRIB(Value);
134 IMPL_TYPED_CHILD(StatusCode);
137 void marshallAttributes(DOMElement* domElement) const {
138 MARSHALL_STRING_ATTRIB(Value,VALUE,NULL);
141 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
142 PROC_TYPED_CHILD(StatusCode,SAMLConstants::SAML20P_NS,false);
143 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
146 void processAttribute(const DOMAttr* attribute) {
147 PROC_STRING_ATTRIB(Value,VALUE,NULL);
148 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
152 //TODO need unit tests for non-SAML namespace children
153 class SAML_DLLLOCAL StatusDetailImpl : public virtual StatusDetail,
154 public AbstractComplexElement,
155 public AbstractDOMCachingXMLObject,
156 public AbstractXMLObjectMarshaller,
157 public AbstractXMLObjectUnmarshaller
160 virtual ~StatusDetailImpl() {}
162 StatusDetailImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
163 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
165 StatusDetailImpl(const StatusDetailImpl& src)
166 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
167 VectorOf(XMLObject) v=getDetails();
168 for (vector<XMLObject*>::const_iterator i=src.m_Details.begin(); i!=src.m_Details.end(); i++) {
170 v.push_back((*i)->clone());
175 IMPL_XMLOBJECT_CLONE(StatusDetail);
176 IMPL_XMLOBJECT_CHILDREN(Detail,m_children.end());
179 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
180 getDetails().push_back(childXMLObject);
181 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
186 class SAML_DLLLOCAL StatusImpl : public virtual Status,
187 public AbstractComplexElement,
188 public AbstractDOMCachingXMLObject,
189 public AbstractXMLObjectMarshaller,
190 public AbstractXMLObjectUnmarshaller
194 m_StatusMessage=NULL;
196 m_children.push_back(NULL);
197 m_children.push_back(NULL);
198 m_children.push_back(NULL);
199 m_pos_StatusCode=m_children.begin();
200 m_pos_StatusMessage=m_pos_StatusCode;
201 ++m_pos_StatusMessage;
202 m_pos_StatusDetail=m_pos_StatusMessage;
203 ++m_pos_StatusDetail;
206 virtual ~StatusImpl() { }
208 StatusImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
209 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
213 StatusImpl(const StatusImpl& src)
214 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
216 if (src.getStatusCode())
217 setStatusCode(src.getStatusCode()->cloneStatusCode());
218 if (src.getStatusMessage())
219 setStatusMessage(src.getStatusMessage()->cloneStatusMessage());
220 if (src.getStatusDetail())
221 setStatusDetail(src.getStatusDetail()->cloneStatusDetail());
224 IMPL_XMLOBJECT_CLONE(Status);
225 IMPL_TYPED_CHILD(StatusCode);
226 IMPL_TYPED_CHILD(StatusMessage);
227 IMPL_TYPED_CHILD(StatusDetail);
231 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
232 PROC_TYPED_CHILD(StatusCode,SAMLConstants::SAML20P_NS,false);
233 PROC_TYPED_CHILD(StatusMessage,SAMLConstants::SAML20P_NS,false);
234 PROC_TYPED_CHILD(StatusDetail,SAMLConstants::SAML20P_NS,false);
235 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
241 class SAML_DLLLOCAL RequestAbstractTypeImpl : public virtual RequestAbstractType,
242 public AbstractComplexElement,
243 public AbstractDOMCachingXMLObject,
244 public AbstractXMLObjectMarshaller,
245 public AbstractXMLObjectUnmarshaller
256 m_children.push_back(NULL);
257 m_children.push_back(NULL);
258 m_children.push_back(NULL);
259 m_pos_Issuer=m_children.begin();
260 m_pos_Signature=m_pos_Issuer;
262 m_pos_Extensions=m_pos_Signature;
266 RequestAbstractTypeImpl() {
270 virtual ~RequestAbstractTypeImpl() {
271 XMLString::release(&m_ID);
272 XMLString::release(&m_Version);
273 XMLString::release(&m_Destination);
274 XMLString::release(&m_Consent);
275 delete m_IssueInstant;
278 RequestAbstractTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
279 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
283 RequestAbstractTypeImpl(const RequestAbstractTypeImpl& src)
284 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
287 setVersion(src.getVersion());
288 setIssueInstant(src.getIssueInstant());
289 setDestination(src.getDestination());
290 setConsent(src.getConsent());
292 setIssuer(src.getIssuer()->cloneIssuer());
293 if (src.getSignature())
294 setSignature(src.getSignature()->cloneSignature());
295 if (src.getExtensions())
296 setExtensions(src.getExtensions()->cloneExtensions());
299 //IMPL_TYPED_CHILD(Signature);
300 // Need customized setter.
302 Signature* m_Signature;
303 list<XMLObject*>::iterator m_pos_Signature;
305 Signature* getSignature() const {
309 void setSignature(Signature* sig) {
310 prepareForAssignment(m_Signature,sig);
311 *m_pos_Signature=m_Signature=sig;
312 // Sync content reference back up.
314 m_Signature->setContentReference(new opensaml::ContentReference(*this));
317 IMPL_STRING_ATTRIB(Version);
319 IMPL_DATETIME_ATTRIB(IssueInstant,0);
320 IMPL_STRING_ATTRIB(Destination);
321 IMPL_STRING_ATTRIB(Consent);
322 IMPL_TYPED_FOREIGN_CHILD(Issuer,saml2);
323 IMPL_TYPED_CHILD(Extensions);
326 void marshallAttributes(DOMElement* domElement) const {
328 const_cast<RequestAbstractTypeImpl*>(this)->m_Version=XMLString::transcode("2.0");
329 MARSHALL_STRING_ATTRIB(Version,VER,NULL);
331 const_cast<RequestAbstractTypeImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
332 MARSHALL_ID_ATTRIB(ID,ID,NULL);
333 if (!m_IssueInstant) {
334 const_cast<RequestAbstractTypeImpl*>(this)->m_IssueInstantEpoch=time(NULL);
335 const_cast<RequestAbstractTypeImpl*>(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch);
337 MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
338 MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL);
339 MARSHALL_STRING_ATTRIB(Consent,CONSENT,NULL);
342 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
343 PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAMLConstants::SAML20_NS,false);
344 PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLConstants::XMLSIG_NS,false);
345 PROC_TYPED_CHILD(Extensions,SAMLConstants::SAML20P_NS,false);
346 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
349 void processAttribute(const DOMAttr* attribute) {
350 PROC_ID_ATTRIB(ID,ID,NULL);
351 PROC_STRING_ATTRIB(Version,VER,NULL);
352 PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
353 PROC_STRING_ATTRIB(Destination,DESTINATION,NULL);
354 PROC_STRING_ATTRIB(Consent,CONSENT,NULL);
355 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
360 class SAML_DLLLOCAL AssertionIDRequestImpl : public virtual AssertionIDRequest, public RequestAbstractTypeImpl
363 virtual ~AssertionIDRequestImpl() { }
365 AssertionIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
366 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
368 AssertionIDRequestImpl(const AssertionIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
369 VectorOf(AssertionIDRef) v=getAssertionIDRefs();
370 for (vector<AssertionIDRef*>::const_iterator i=src.m_AssertionIDRefs.begin(); i!=src.m_AssertionIDRefs.end(); i++) {
372 v.push_back((*i)->cloneAssertionIDRef());
378 IMPL_XMLOBJECT_CLONE(AssertionIDRequest);
379 RequestAbstractType* cloneRequestAbstractType() const {
380 return cloneAssertionIDRequest();
383 IMPL_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,m_children.end());
386 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
387 PROC_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,SAMLConstants::SAML20_NS,false);
388 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
392 class SAML_DLLLOCAL SubjectQueryImpl : public virtual SubjectQuery, public RequestAbstractTypeImpl
397 m_children.push_back(NULL);
398 m_pos_Subject = m_pos_Extensions;
406 virtual ~SubjectQueryImpl() { }
408 SubjectQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
409 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
414 SubjectQueryImpl(const SubjectQueryImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
416 if (src.getSubject())
417 setSubject(src.getSubject()->cloneSubject());
420 IMPL_TYPED_FOREIGN_CHILD(Subject,saml2);
423 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
424 PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAMLConstants::SAML20_NS,false);
425 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
430 class SAML_DLLLOCAL RequestedAuthnContextImpl : public virtual RequestedAuthnContext,
431 public AbstractComplexElement,
432 public AbstractDOMCachingXMLObject,
433 public AbstractXMLObjectMarshaller,
434 public AbstractXMLObjectUnmarshaller
440 virtual ~RequestedAuthnContextImpl() {
441 XMLString::release(&m_Comparison);
444 RequestedAuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
445 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
449 RequestedAuthnContextImpl(const RequestedAuthnContextImpl& src)
450 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
452 setComparison(src.getComparison());
453 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
455 AuthnContextClassRef* classref=dynamic_cast<AuthnContextClassRef*>(*i);
457 getAuthnContextClassRefs().push_back(classref->cloneAuthnContextClassRef());
461 AuthnContextDeclRef* declref=dynamic_cast<AuthnContextDeclRef*>(*i);
463 getAuthnContextDeclRefs().push_back(declref->cloneAuthnContextDeclRef());
470 IMPL_XMLOBJECT_CLONE(RequestedAuthnContext);
471 IMPL_STRING_ATTRIB(Comparison);
472 IMPL_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,m_children.end());
473 IMPL_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,m_children.end());
476 void marshallAttributes(DOMElement* domElement) const {
477 MARSHALL_STRING_ATTRIB(Comparison,COMPARISON,NULL);
480 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
481 PROC_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,SAMLConstants::SAML20_NS,false);
482 PROC_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,SAMLConstants::SAML20_NS,false);
483 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
486 void processAttribute(const DOMAttr* attribute) {
487 PROC_STRING_ATTRIB(Comparison,COMPARISON,NULL);
488 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
493 class SAML_DLLLOCAL AuthnQueryImpl : public virtual AuthnQuery, public SubjectQueryImpl
497 m_RequestedAuthnContext=NULL;
498 m_children.push_back(NULL);
499 m_pos_RequestedAuthnContext = m_pos_Subject;
500 ++m_pos_RequestedAuthnContext;
504 virtual ~AuthnQueryImpl() {
505 XMLString::release(&m_SessionIndex);
508 AuthnQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
509 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
514 AuthnQueryImpl(const AuthnQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
516 setSessionIndex(src.getSessionIndex());
517 if (src.getRequestedAuthnContext())
518 setRequestedAuthnContext(src.getRequestedAuthnContext()->cloneRequestedAuthnContext());
521 IMPL_XMLOBJECT_CLONE(AuthnQuery);
522 SubjectQuery* cloneSubjectQuery() const {
523 return cloneAuthnQuery();
525 RequestAbstractType* cloneRequestAbstractType() const {
526 return cloneAuthnQuery();
529 IMPL_STRING_ATTRIB(SessionIndex);
530 IMPL_TYPED_CHILD(RequestedAuthnContext);
533 void marshallAttributes(DOMElement* domElement) const {
534 MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
535 SubjectQueryImpl::marshallAttributes(domElement);
538 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
539 PROC_TYPED_CHILD(RequestedAuthnContext,SAMLConstants::SAML20P_NS,false);
540 SubjectQueryImpl::processChildElement(childXMLObject,root);
542 void processAttribute(const DOMAttr* attribute) {
543 PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
544 SubjectQueryImpl::processAttribute(attribute);
548 class SAML_DLLLOCAL AttributeQueryImpl : public virtual AttributeQuery, public SubjectQueryImpl
551 virtual ~AttributeQueryImpl() { }
553 AttributeQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
554 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
556 AttributeQueryImpl(const AttributeQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
557 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
559 Attribute* attrib=dynamic_cast<Attribute*>(*i);
561 getAttributes().push_back(attrib->cloneAttribute());
569 IMPL_XMLOBJECT_CLONE(AttributeQuery);
570 SubjectQuery* cloneSubjectQuery() const {
571 return cloneAttributeQuery();
573 RequestAbstractType* cloneRequestAbstractType() const {
574 return cloneAttributeQuery();
577 IMPL_TYPED_FOREIGN_CHILDREN(Attribute,saml2,m_children.end());
580 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
581 PROC_TYPED_FOREIGN_CHILDREN(Attribute,saml2,SAMLConstants::SAML20_NS,false);
582 SubjectQueryImpl::processChildElement(childXMLObject,root);
586 class SAML_DLLLOCAL AuthzDecisionQueryImpl : public virtual AuthzDecisionQuery, public SubjectQueryImpl
591 m_children.push_back(NULL);
592 m_pos_Evidence=m_pos_Subject;
597 virtual ~AuthzDecisionQueryImpl() {
598 XMLString::release(&m_Resource);
601 AuthzDecisionQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
602 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
606 AuthzDecisionQueryImpl(const AuthzDecisionQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
608 setResource(src.getResource());
609 if (src.getEvidence())
610 setEvidence(src.getEvidence()->cloneEvidence());
611 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
613 Action* action=dynamic_cast<Action*>(*i);
615 getActions().push_back(action->cloneAction());
622 IMPL_XMLOBJECT_CLONE(AuthzDecisionQuery);
623 SubjectQuery* cloneSubjectQuery() const {
624 return cloneAuthzDecisionQuery();
626 RequestAbstractType* cloneRequestAbstractType() const {
627 return cloneAuthzDecisionQuery();
630 IMPL_STRING_ATTRIB(Resource);
631 IMPL_TYPED_FOREIGN_CHILDREN(Action,saml2,m_pos_Evidence);
632 IMPL_TYPED_FOREIGN_CHILD(Evidence,saml2);
635 void marshallAttributes(DOMElement* domElement) const {
636 MARSHALL_STRING_ATTRIB(Resource,RESOURCE,NULL);
637 SubjectQueryImpl::marshallAttributes(domElement);
640 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
641 PROC_TYPED_FOREIGN_CHILD(Evidence,saml2,SAMLConstants::SAML20_NS,false);
642 PROC_TYPED_FOREIGN_CHILDREN(Action,saml2,SAMLConstants::SAML20_NS,false);
643 SubjectQueryImpl::processChildElement(childXMLObject,root);
645 void processAttribute(const DOMAttr* attribute) {
646 PROC_STRING_ATTRIB(Resource,RESOURCE,NULL);
647 SubjectQueryImpl::processAttribute(attribute);
651 class SAML_DLLLOCAL NameIDPolicyImpl : public virtual NameIDPolicy,
652 public AbstractSimpleElement,
653 public AbstractDOMCachingXMLObject,
654 public AbstractXMLObjectMarshaller,
655 public AbstractXMLObjectUnmarshaller
659 m_SPNameQualifier=NULL;
660 m_AllowCreate=XMLConstants::XML_BOOL_NULL;
663 virtual ~NameIDPolicyImpl()
665 XMLString::release(&m_Format);
666 XMLString::release(&m_SPNameQualifier);
669 NameIDPolicyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
670 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
675 NameIDPolicyImpl(const NameIDPolicyImpl& src)
676 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
678 setFormat(src.getFormat());
679 setSPNameQualifier(src.getSPNameQualifier());
680 AllowCreate(m_AllowCreate);
683 IMPL_XMLOBJECT_CLONE(NameIDPolicy);
684 IMPL_STRING_ATTRIB(Format);
685 IMPL_STRING_ATTRIB(SPNameQualifier);
686 IMPL_BOOLEAN_ATTRIB(AllowCreate);
689 void marshallAttributes(DOMElement* domElement) const {
690 MARSHALL_STRING_ATTRIB(Format,FORMAT,NULL);
691 MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
692 MARSHALL_BOOLEAN_ATTRIB(AllowCreate,ALLOWCREATE,NULL);
695 void processAttribute(const DOMAttr* attribute) {
696 PROC_STRING_ATTRIB(Format,FORMAT,NULL);
697 PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
698 PROC_BOOLEAN_ATTRIB(AllowCreate,ALLOWCREATE,NULL);
699 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
703 class SAML_DLLLOCAL IDPEntryImpl : public virtual IDPEntry,
704 public AbstractSimpleElement,
705 public AbstractDOMCachingXMLObject,
706 public AbstractXMLObjectMarshaller,
707 public AbstractXMLObjectUnmarshaller
715 virtual ~IDPEntryImpl()
717 XMLString::release(&m_ProviderID);
718 XMLString::release(&m_Name);
719 XMLString::release(&m_Loc);
722 IDPEntryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
723 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
728 IDPEntryImpl(const IDPEntryImpl& src)
729 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
731 setProviderID(src.getProviderID());
732 setName(src.getName());
733 setLoc(src.getLoc());
736 IMPL_XMLOBJECT_CLONE(IDPEntry);
737 IMPL_STRING_ATTRIB(ProviderID);
738 IMPL_STRING_ATTRIB(Name);
739 IMPL_STRING_ATTRIB(Loc);
742 void marshallAttributes(DOMElement* domElement) const {
743 MARSHALL_STRING_ATTRIB(ProviderID,PROVIDERID,NULL);
744 MARSHALL_STRING_ATTRIB(Name,NAME,NULL);
745 MARSHALL_STRING_ATTRIB(Loc,LOC,NULL);
748 void processAttribute(const DOMAttr* attribute) {
749 PROC_STRING_ATTRIB(ProviderID,PROVIDERID,NULL);
750 PROC_STRING_ATTRIB(Name,NAME,NULL);
751 PROC_STRING_ATTRIB(Loc,LOC,NULL);
752 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
756 class SAML_DLLLOCAL IDPListImpl : public virtual IDPList,
757 public AbstractComplexElement,
758 public AbstractDOMCachingXMLObject,
759 public AbstractXMLObjectMarshaller,
760 public AbstractXMLObjectUnmarshaller
764 m_children.push_back(NULL);
765 m_pos_GetComplete=m_children.begin();
769 virtual ~IDPListImpl() { }
771 IDPListImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
772 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
777 IDPListImpl(const IDPListImpl& src)
778 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
780 if (src.getGetComplete())
781 setGetComplete(src.getGetComplete()->cloneGetComplete());
782 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
784 IDPEntry* entry=dynamic_cast<IDPEntry*>(*i);
786 getIDPEntrys().push_back(entry->cloneIDPEntry());
793 IMPL_XMLOBJECT_CLONE(IDPList);
794 IMPL_TYPED_CHILDREN(IDPEntry,m_pos_GetComplete);
795 IMPL_TYPED_CHILD(GetComplete);
798 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
799 PROC_TYPED_CHILDREN(IDPEntry,SAMLConstants::SAML20P_NS,false);
800 PROC_TYPED_CHILD(GetComplete,SAMLConstants::SAML20P_NS,false);
801 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
806 class SAML_DLLLOCAL ScopingImpl : public virtual Scoping,
807 public AbstractComplexElement,
808 public AbstractDOMCachingXMLObject,
809 public AbstractXMLObjectMarshaller,
810 public AbstractXMLObjectUnmarshaller
815 m_children.push_back(NULL);
816 m_pos_IDPList=m_children.begin();
820 virtual ~ScopingImpl() {
821 XMLString::release(&m_ProxyCount);
824 ScopingImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
825 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
830 ScopingImpl(const ScopingImpl& src)
831 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
833 setProxyCount(m_ProxyCount);
834 if (src.getIDPList())
835 setIDPList(src.getIDPList()->cloneIDPList());
836 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
838 RequesterID* reqid =dynamic_cast<RequesterID*>(*i);
840 getRequesterIDs().push_back(reqid->cloneRequesterID());
847 IMPL_XMLOBJECT_CLONE(Scoping);
848 IMPL_INTEGER_ATTRIB(ProxyCount);
849 IMPL_TYPED_CHILD(IDPList);
850 IMPL_TYPED_CHILDREN(RequesterID,m_children.end());
853 void marshallAttributes(DOMElement* domElement) const {
854 MARSHALL_INTEGER_ATTRIB(ProxyCount,PROXYCOUNT,NULL);
857 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
858 PROC_TYPED_CHILD(IDPList,SAMLConstants::SAML20P_NS,false);
859 PROC_TYPED_CHILDREN(RequesterID,SAMLConstants::SAML20P_NS,false);
860 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
863 void processAttribute(const DOMAttr* attribute) {
864 PROC_INTEGER_ATTRIB(ProxyCount,PROXYCOUNT,NULL);
865 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
869 class SAML_DLLLOCAL AuthnRequestImpl : public virtual AuthnRequest, public RequestAbstractTypeImpl
872 m_ForceAuthn=XMLConstants::XML_BOOL_NULL;
873 m_IsPassive=XMLConstants::XML_BOOL_NULL;
874 m_ProtocolBinding=NULL;
875 m_AssertionConsumerServiceIndex=NULL;
876 m_AssertionConsumerServiceURL=NULL;
877 m_AttributeConsumingServiceIndex=NULL;
883 m_RequestedAuthnContext=NULL;
885 m_children.push_back(NULL);
886 m_children.push_back(NULL);
887 m_children.push_back(NULL);
888 m_children.push_back(NULL);
889 m_children.push_back(NULL);
890 m_pos_Subject=m_pos_Extensions;
892 m_pos_NameIDPolicy=m_pos_Subject;
893 ++m_pos_NameIDPolicy;
894 m_pos_Conditions=m_pos_NameIDPolicy;
896 m_pos_RequestedAuthnContext=m_pos_Conditions;
897 ++m_pos_RequestedAuthnContext;
898 m_pos_Scoping=m_pos_RequestedAuthnContext;
903 virtual ~AuthnRequestImpl() {
904 XMLString::release(&m_ProtocolBinding);
905 XMLString::release(&m_AssertionConsumerServiceURL);
906 XMLString::release(&m_ProviderName);
907 XMLString::release(&m_AssertionConsumerServiceIndex);
908 XMLString::release(&m_AttributeConsumingServiceIndex);
911 AuthnRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
912 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
917 AuthnRequestImpl(const AuthnRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
920 ForceAuthn(m_ForceAuthn);
921 IsPassive(m_IsPassive);
922 setProtocolBinding(src.getProtocolBinding());
923 setAssertionConsumerServiceIndex(m_AssertionConsumerServiceIndex);
924 setAssertionConsumerServiceURL(src.getAssertionConsumerServiceURL());
925 setAttributeConsumingServiceIndex(m_AttributeConsumingServiceIndex);
926 setProviderName(src.getProviderName());
928 if (src.getSubject())
929 setSubject(src.getSubject()->cloneSubject());
930 if (src.getNameIDPolicy())
931 setNameIDPolicy(src.getNameIDPolicy()->cloneNameIDPolicy());
932 if (src.getConditions())
933 setConditions(src.getConditions()->cloneConditions());
934 if (src.getRequestedAuthnContext())
935 setRequestedAuthnContext(src.getRequestedAuthnContext()->cloneRequestedAuthnContext());
936 if (src.getScoping())
937 setScoping(src.getScoping()->cloneScoping());
940 IMPL_XMLOBJECT_CLONE(AuthnRequest);
941 RequestAbstractType* cloneRequestAbstractType() const {
942 return cloneAuthnRequest();
945 IMPL_BOOLEAN_ATTRIB(ForceAuthn);
946 IMPL_BOOLEAN_ATTRIB(IsPassive);
947 IMPL_STRING_ATTRIB(ProtocolBinding);
948 IMPL_INTEGER_ATTRIB(AssertionConsumerServiceIndex);
949 IMPL_STRING_ATTRIB(AssertionConsumerServiceURL);
950 IMPL_INTEGER_ATTRIB(AttributeConsumingServiceIndex);
951 IMPL_STRING_ATTRIB(ProviderName);
953 IMPL_TYPED_FOREIGN_CHILD(Subject,saml2);
954 IMPL_TYPED_CHILD(NameIDPolicy);
955 IMPL_TYPED_FOREIGN_CHILD(Conditions,saml2);
956 IMPL_TYPED_CHILD(RequestedAuthnContext);
957 IMPL_TYPED_CHILD(Scoping);
960 void marshallAttributes(DOMElement* domElement) const {
961 MARSHALL_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL);
962 MARSHALL_BOOLEAN_ATTRIB(IsPassive,ISPASSIVE,NULL);
963 MARSHALL_STRING_ATTRIB(ProtocolBinding,PROTOCOLBINDING,NULL);
964 MARSHALL_INTEGER_ATTRIB(AssertionConsumerServiceIndex,ASSERTIONCONSUMERSERVICEINDEX,NULL);
965 MARSHALL_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL);
966 MARSHALL_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL);
967 MARSHALL_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL);
968 RequestAbstractTypeImpl::marshallAttributes(domElement);
971 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
972 PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAMLConstants::SAML20_NS,false);
973 PROC_TYPED_CHILD(NameIDPolicy,SAMLConstants::SAML20P_NS,false);
974 PROC_TYPED_FOREIGN_CHILD(Conditions,saml2,SAMLConstants::SAML20_NS,false);
975 PROC_TYPED_CHILD(RequestedAuthnContext,SAMLConstants::SAML20P_NS,false);
976 PROC_TYPED_CHILD(Scoping,SAMLConstants::SAML20P_NS,false);
977 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
979 void processAttribute(const DOMAttr* attribute) {
980 PROC_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL);
981 PROC_BOOLEAN_ATTRIB(IsPassive,ISPASSIVE,NULL);
982 PROC_STRING_ATTRIB(ProtocolBinding,PROTOCOLBINDING,NULL);
983 PROC_INTEGER_ATTRIB(AssertionConsumerServiceIndex,ASSERTIONCONSUMERSERVICEINDEX,NULL);
984 PROC_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL);
985 PROC_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL);
986 PROC_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL);
987 RequestAbstractTypeImpl::processAttribute(attribute);
991 class SAML_DLLLOCAL StatusResponseTypeImpl : public virtual StatusResponseType,
992 public AbstractComplexElement,
993 public AbstractDOMCachingXMLObject,
994 public AbstractXMLObjectMarshaller,
995 public AbstractXMLObjectUnmarshaller
1001 m_IssueInstant=NULL;
1008 m_children.push_back(NULL);
1009 m_children.push_back(NULL);
1010 m_children.push_back(NULL);
1011 m_children.push_back(NULL);
1012 m_pos_Issuer=m_children.begin();
1013 m_pos_Signature=m_pos_Issuer;
1015 m_pos_Extensions=m_pos_Signature;
1017 m_pos_Status=m_pos_Extensions;
1021 StatusResponseTypeImpl() {
1025 virtual ~StatusResponseTypeImpl() {
1026 XMLString::release(&m_ID);
1027 XMLString::release(&m_InResponseTo);
1028 XMLString::release(&m_Version);
1029 XMLString::release(&m_Destination);
1030 XMLString::release(&m_Consent);
1031 delete m_IssueInstant;
1034 StatusResponseTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1035 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1040 StatusResponseTypeImpl(const StatusResponseTypeImpl& src)
1041 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
1044 setInResponseTo(src.getInResponseTo());
1045 setVersion(src.getVersion());
1046 setIssueInstant(src.getIssueInstant());
1047 setDestination(src.getDestination());
1048 setConsent(src.getConsent());
1049 if (src.getIssuer())
1050 setIssuer(src.getIssuer()->cloneIssuer());
1051 if (src.getSignature())
1052 setSignature(src.getSignature()->cloneSignature());
1053 if (src.getExtensions())
1054 setExtensions(src.getExtensions()->cloneExtensions());
1055 if (src.getStatus())
1056 setStatus(src.getStatus()->cloneStatus());
1059 //IMPL_TYPED_CHILD(Signature);
1060 // Need customized setter.
1062 Signature* m_Signature;
1063 list<XMLObject*>::iterator m_pos_Signature;
1065 Signature* getSignature() const {
1069 void setSignature(Signature* sig) {
1070 prepareForAssignment(m_Signature,sig);
1071 *m_pos_Signature=m_Signature=sig;
1072 // Sync content reference back up.
1074 m_Signature->setContentReference(new opensaml::ContentReference(*this));
1077 IMPL_STRING_ATTRIB(Version);
1079 IMPL_STRING_ATTRIB(InResponseTo);
1080 IMPL_DATETIME_ATTRIB(IssueInstant,0);
1081 IMPL_STRING_ATTRIB(Destination);
1082 IMPL_STRING_ATTRIB(Consent);
1083 IMPL_TYPED_FOREIGN_CHILD(Issuer,saml2);
1084 IMPL_TYPED_CHILD(Extensions);
1085 IMPL_TYPED_CHILD(Status);
1088 void marshallAttributes(DOMElement* domElement) const {
1090 const_cast<StatusResponseTypeImpl*>(this)->m_Version=XMLString::transcode("2.0");
1091 MARSHALL_STRING_ATTRIB(Version,VER,NULL);
1093 const_cast<StatusResponseTypeImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
1094 MARSHALL_ID_ATTRIB(ID,ID,NULL);
1095 if (!m_IssueInstant) {
1096 const_cast<StatusResponseTypeImpl*>(this)->m_IssueInstantEpoch=time(NULL);
1097 const_cast<StatusResponseTypeImpl*>(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch);
1099 MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
1100 MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL);
1101 MARSHALL_STRING_ATTRIB(Consent,CONSENT,NULL);
1102 MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
1105 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1106 PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAMLConstants::SAML20_NS,false);
1107 PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLConstants::XMLSIG_NS,false);
1108 PROC_TYPED_CHILD(Extensions,SAMLConstants::SAML20P_NS,false);
1109 PROC_TYPED_CHILD(Status,SAMLConstants::SAML20P_NS,false);
1110 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
1113 void processAttribute(const DOMAttr* attribute) {
1114 PROC_ID_ATTRIB(ID,ID,NULL);
1115 PROC_STRING_ATTRIB(Version,VER,NULL);
1116 PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
1117 PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
1118 PROC_STRING_ATTRIB(Destination,DESTINATION,NULL);
1119 PROC_STRING_ATTRIB(Consent,CONSENT,NULL);
1120 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
1124 class SAML_DLLLOCAL ResponseImpl : public virtual Response, public StatusResponseTypeImpl
1127 virtual ~ResponseImpl() { }
1129 ResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1130 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1132 ResponseImpl(const ResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1133 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
1135 Assertion* assertion=dynamic_cast<Assertion*>(*i);
1137 getAssertions().push_back(assertion->cloneAssertion());
1140 EncryptedAssertion* encAssertion=dynamic_cast<EncryptedAssertion*>(*i);
1142 getEncryptedAssertions().push_back(encAssertion->cloneEncryptedAssertion());
1150 IMPL_XMLOBJECT_CLONE(Response);
1151 StatusResponseType* cloneStatusResponseType() const {
1152 return cloneResponse();
1155 IMPL_TYPED_FOREIGN_CHILDREN(Assertion,saml2,m_children.end());
1156 IMPL_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,m_children.end());
1159 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1160 PROC_TYPED_FOREIGN_CHILDREN(Assertion,saml2,SAMLConstants::SAML20_NS,false);
1161 PROC_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,SAMLConstants::SAML20_NS,false);
1162 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1166 class SAML_DLLLOCAL ArtifactResolveImpl : public virtual ArtifactResolve, public RequestAbstractTypeImpl
1170 m_children.push_back(NULL);
1171 m_pos_Artifact=m_pos_Extensions;
1175 virtual ~ArtifactResolveImpl() { }
1177 ArtifactResolveImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1178 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1183 ArtifactResolveImpl(const ArtifactResolveImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1185 if(src.getArtifact())
1186 setArtifact(src.getArtifact()->cloneArtifact());
1189 IMPL_XMLOBJECT_CLONE(ArtifactResolve);
1190 RequestAbstractType* cloneRequestAbstractType() const {
1191 return cloneArtifactResolve();
1194 IMPL_TYPED_CHILD(Artifact);
1197 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1198 PROC_TYPED_CHILD(Artifact,SAMLConstants::SAML20P_NS,false);
1199 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1203 class SAML_DLLLOCAL ArtifactResponseImpl : public virtual ArtifactResponse, public StatusResponseTypeImpl
1207 m_children.push_back(NULL);
1208 m_pos_Payload=m_pos_Status;
1212 virtual ~ArtifactResponseImpl() { }
1214 ArtifactResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1215 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1220 ArtifactResponseImpl(const ArtifactResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1222 if (src.getPayload())
1223 setPayload(getPayload()->clone());
1227 IMPL_XMLOBJECT_CLONE(ArtifactResponse);
1228 StatusResponseType* cloneStatusResponseType() const {
1229 return cloneArtifactResponse();
1232 IMPL_XMLOBJECT_CHILD(Payload);
1235 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1236 // These are valid elements for the parent StatusResponseType, so don't process these.
1237 // If not one of these, then it must be the payload.
1239 ! XMLHelper::isNodeNamed(root,SAMLConstants::SAML20_NS,saml2::Issuer::LOCAL_NAME) &&
1240 ! XMLHelper::isNodeNamed(root,XMLConstants::XMLSIG_NS,xmlsignature::Signature::LOCAL_NAME) &&
1241 ! XMLHelper::isNodeNamed(root,SAMLConstants::SAML20P_NS,saml2p::Extensions::LOCAL_NAME) &&
1242 ! XMLHelper::isNodeNamed(root,SAMLConstants::SAML20P_NS,saml2p::Status::LOCAL_NAME)
1245 setPayload(childXMLObject);
1249 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1253 class SAML_DLLLOCAL NewEncryptedIDImpl : public virtual NewEncryptedID,
1254 public AbstractComplexElement,
1255 public AbstractDOMCachingXMLObject,
1256 public AbstractXMLObjectMarshaller,
1257 public AbstractXMLObjectUnmarshaller
1260 m_EncryptedData=NULL;
1261 m_children.push_back(NULL);
1262 m_pos_EncryptedData=m_children.begin();
1266 NewEncryptedIDImpl()
1272 virtual ~NewEncryptedIDImpl() {}
1274 NewEncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1275 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1280 NewEncryptedIDImpl(const NewEncryptedIDImpl& src)
1281 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
1283 if (src.getEncryptedData())
1284 setEncryptedData(src.getEncryptedData()->cloneEncryptedData());
1285 VectorOf(xmlencryption::EncryptedKey) v=getEncryptedKeys();
1286 for (vector<xmlencryption::EncryptedKey*>::const_iterator i=src.m_EncryptedKeys.begin(); i!=src.m_EncryptedKeys.end(); i++) {
1288 v.push_back((*i)->cloneEncryptedKey());
1293 XMLObject* decrypt(KeyResolver* KEKresolver, const XMLCh* recipient) const
1295 if (!m_EncryptedData)
1296 throw DecryptionException("No encrypted data present.");
1297 Decrypter decrypter(KEKresolver, new EncryptedKeyResolver(*this, recipient));
1298 DOMDocumentFragment* frag = decrypter.decryptData(m_EncryptedData);
1299 if (frag->hasChildNodes() && frag->getFirstChild()==frag->getLastChild()) {
1300 DOMNode* plaintext=frag->getFirstChild();
1301 if (plaintext->getNodeType()==DOMNode::ELEMENT_NODE) {
1302 auto_ptr<XMLObject> ret(XMLObjectBuilder::buildOneFromElement(static_cast<DOMElement*>(plaintext)));
1303 ret->releaseThisAndChildrenDOM();
1304 return ret.release();
1308 throw DecryptionException("Decryption did not result in a single element.");
1311 IMPL_XMLOBJECT_CLONE(NewEncryptedID);
1312 EncryptedElementType* cloneEncryptedElementType() const {
1313 return new NewEncryptedIDImpl(*this);
1316 IMPL_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption);
1317 IMPL_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,m_children.end());
1320 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1321 PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLConstants::XMLENC_NS,false);
1322 PROC_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,XMLConstants::XMLENC_NS,false);
1323 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
1327 class SAML_DLLLOCAL TerminateImpl : public virtual Terminate,
1328 public AbstractSimpleElement,
1329 public AbstractDOMCachingXMLObject,
1330 public AbstractXMLObjectMarshaller,
1331 public AbstractXMLObjectUnmarshaller
1334 virtual ~TerminateImpl() { }
1336 TerminateImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1337 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1339 TerminateImpl(const TerminateImpl& src)
1340 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
1343 IMPL_XMLOBJECT_CLONE(Terminate);
1346 // has no attributes or children
1349 class SAML_DLLLOCAL ManageNameIDRequestImpl : public virtual ManageNameIDRequest, public RequestAbstractTypeImpl
1355 m_NewEncryptedID=NULL;
1357 m_children.push_back(NULL);
1358 m_children.push_back(NULL);
1359 m_children.push_back(NULL);
1360 m_children.push_back(NULL);
1361 m_children.push_back(NULL);
1362 m_pos_NameID=m_pos_Extensions;
1364 m_pos_EncryptedID=m_pos_NameID;
1365 ++m_pos_EncryptedID;
1366 m_pos_NewID=m_pos_EncryptedID;
1368 m_pos_NewEncryptedID=m_pos_NewID;
1369 ++m_pos_NewEncryptedID;
1370 m_pos_Terminate=m_pos_NewEncryptedID;
1375 virtual ~ManageNameIDRequestImpl() { }
1377 ManageNameIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1378 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1383 ManageNameIDRequestImpl(const ManageNameIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1386 if (src.getNameID())
1387 setNameID(src.getNameID()->cloneNameID());
1388 if (src.getEncryptedID())
1389 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1391 setNewID(src.getNewID()->cloneNewID());
1392 if (src.getNewEncryptedID())
1393 setNewEncryptedID(src.getNewEncryptedID()->cloneNewEncryptedID());
1394 if (src.getTerminate())
1395 setTerminate(src.getTerminate()->cloneTerminate());
1399 IMPL_XMLOBJECT_CLONE(ManageNameIDRequest);
1400 RequestAbstractType* cloneRequestAbstractType() const {
1401 return cloneManageNameIDRequest();
1404 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1405 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1406 IMPL_TYPED_CHILD(NewID);
1407 IMPL_TYPED_CHILD(NewEncryptedID);
1408 IMPL_TYPED_CHILD(Terminate);
1411 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1412 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false);
1413 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false);
1414 PROC_TYPED_CHILD(NewID,SAMLConstants::SAML20P_NS,false);
1415 PROC_TYPED_CHILD(NewEncryptedID,SAMLConstants::SAML20P_NS,false);
1416 PROC_TYPED_CHILD(Terminate,SAMLConstants::SAML20P_NS,false);
1417 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1421 class SAML_DLLLOCAL ManageNameIDResponseImpl : public virtual ManageNameIDResponse, public StatusResponseTypeImpl
1424 virtual ~ManageNameIDResponseImpl() { }
1426 ManageNameIDResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1427 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1429 ManageNameIDResponseImpl(const ManageNameIDResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1432 IMPL_XMLOBJECT_CLONE(ManageNameIDResponse);
1433 StatusResponseType* cloneStatusResponseType() const {
1434 return cloneManageNameIDResponse();
1438 class SAML_DLLLOCAL LogoutRequestImpl : public virtual LogoutRequest, public RequestAbstractTypeImpl
1442 m_NotOnOrAfter=NULL;
1447 m_children.push_back(NULL);
1448 m_children.push_back(NULL);
1449 m_children.push_back(NULL);
1450 m_pos_BaseID=m_pos_Extensions;
1452 m_pos_NameID=m_pos_BaseID;
1454 m_pos_EncryptedID=m_pos_NameID;
1455 ++m_pos_EncryptedID;
1459 virtual ~LogoutRequestImpl() {
1460 XMLString::release(&m_Reason);
1461 delete m_NotOnOrAfter;
1464 LogoutRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1465 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1470 LogoutRequestImpl(const LogoutRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1473 setReason(src.getReason());
1474 setNotOnOrAfter(src.getNotOnOrAfter());
1476 if (src.getBaseID())
1477 setBaseID(src.getBaseID()->cloneBaseID());
1478 if (src.getNameID())
1479 setNameID(src.getNameID()->cloneNameID());
1480 if (src.getEncryptedID())
1481 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1483 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
1485 SessionIndex* si = dynamic_cast<SessionIndex*>(*i);
1487 getSessionIndexs().push_back(si->cloneSessionIndex());
1494 IMPL_XMLOBJECT_CLONE(LogoutRequest);
1495 RequestAbstractType* cloneRequestAbstractType() const {
1496 return cloneLogoutRequest();
1499 IMPL_STRING_ATTRIB(Reason);
1500 IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX);
1501 IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2);
1502 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1503 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1504 IMPL_TYPED_CHILDREN(SessionIndex,m_children.end());
1507 void marshallAttributes(DOMElement* domElement) const {
1508 MARSHALL_STRING_ATTRIB(Reason,REASON,NULL);
1509 MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
1510 RequestAbstractTypeImpl::marshallAttributes(domElement);
1513 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1514 PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAMLConstants::SAML20_NS,false);
1515 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false);
1516 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false);
1517 PROC_TYPED_CHILDREN(SessionIndex,SAMLConstants::SAML20P_NS,false);
1518 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1520 void processAttribute(const DOMAttr* attribute) {
1521 PROC_STRING_ATTRIB(Reason,REASON,NULL);
1522 PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
1523 RequestAbstractTypeImpl::processAttribute(attribute);
1527 class SAML_DLLLOCAL LogoutResponseImpl : public virtual LogoutResponse, public StatusResponseTypeImpl
1530 virtual ~LogoutResponseImpl() { }
1532 LogoutResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1533 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1535 LogoutResponseImpl(const LogoutResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1538 IMPL_XMLOBJECT_CLONE(LogoutResponse);
1539 StatusResponseType* cloneStatusResponseType() const {
1540 return cloneLogoutResponse();
1545 class SAML_DLLLOCAL NameIDMappingRequestImpl : public virtual NameIDMappingRequest, public RequestAbstractTypeImpl
1551 m_NameIDPolicy=NULL;
1552 m_children.push_back(NULL);
1553 m_children.push_back(NULL);
1554 m_children.push_back(NULL);
1555 m_children.push_back(NULL);
1556 m_pos_BaseID=m_pos_Extensions;
1558 m_pos_NameID=m_pos_BaseID;
1560 m_pos_EncryptedID=m_pos_NameID;
1561 ++m_pos_EncryptedID;
1562 m_pos_NameIDPolicy=m_pos_EncryptedID;
1563 ++m_pos_NameIDPolicy;
1567 virtual ~NameIDMappingRequestImpl() { }
1569 NameIDMappingRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1570 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1575 NameIDMappingRequestImpl(const NameIDMappingRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1578 if (src.getBaseID())
1579 setBaseID(src.getBaseID()->cloneBaseID());
1580 if (src.getNameID())
1581 setNameID(src.getNameID()->cloneNameID());
1582 if (src.getEncryptedID())
1583 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1584 if (src.getNameIDPolicy())
1585 setNameIDPolicy(src.getNameIDPolicy()->cloneNameIDPolicy());
1589 IMPL_XMLOBJECT_CLONE(NameIDMappingRequest);
1590 RequestAbstractType* cloneRequestAbstractType() const {
1591 return cloneNameIDMappingRequest();
1594 IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2);
1595 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1596 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1597 IMPL_TYPED_CHILD(NameIDPolicy);
1600 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1601 PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAMLConstants::SAML20_NS,false);
1602 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false);
1603 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false);
1604 PROC_TYPED_CHILD(NameIDPolicy,SAMLConstants::SAML20P_NS,false);
1605 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1609 class SAML_DLLLOCAL NameIDMappingResponseImpl : public virtual NameIDMappingResponse, public StatusResponseTypeImpl
1614 m_children.push_back(NULL);
1615 m_children.push_back(NULL);
1616 m_pos_NameID=m_pos_Status;
1618 m_pos_EncryptedID=m_pos_NameID;
1619 ++m_pos_EncryptedID;
1622 virtual ~NameIDMappingResponseImpl() { }
1624 NameIDMappingResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1625 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1630 NameIDMappingResponseImpl(const NameIDMappingResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1633 if (src.getNameID())
1634 setNameID(getNameID()->cloneNameID());
1635 if (src.getEncryptedID())
1636 setEncryptedID(getEncryptedID()->cloneEncryptedID());
1640 IMPL_XMLOBJECT_CLONE(NameIDMappingResponse);
1641 StatusResponseType* cloneStatusResponseType() const {
1642 return cloneNameIDMappingResponse();
1645 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1646 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1649 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1650 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAMLConstants::SAML20_NS,false);
1651 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAMLConstants::SAML20_NS,false);
1652 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1658 #if defined (_MSC_VER)
1659 #pragma warning( pop )
1662 // Builder Implementations
1663 IMPL_XMLOBJECTBUILDER(Artifact);
1664 IMPL_XMLOBJECTBUILDER(ArtifactResolve);
1665 IMPL_XMLOBJECTBUILDER(ArtifactResponse);
1666 IMPL_XMLOBJECTBUILDER(AssertionIDRequest);
1667 IMPL_XMLOBJECTBUILDER(AttributeQuery);
1668 IMPL_XMLOBJECTBUILDER(AuthnQuery);
1669 IMPL_XMLOBJECTBUILDER(AuthnRequest);
1670 IMPL_XMLOBJECTBUILDER(AuthzDecisionQuery);
1671 IMPL_XMLOBJECTBUILDER(Extensions);
1672 IMPL_XMLOBJECTBUILDER(GetComplete);
1673 IMPL_XMLOBJECTBUILDER(IDPEntry);
1674 IMPL_XMLOBJECTBUILDER(IDPList);
1675 IMPL_XMLOBJECTBUILDER(LogoutRequest);
1676 IMPL_XMLOBJECTBUILDER(LogoutResponse);
1677 IMPL_XMLOBJECTBUILDER(ManageNameIDRequest);
1678 IMPL_XMLOBJECTBUILDER(ManageNameIDResponse);
1679 IMPL_XMLOBJECTBUILDER(NameIDMappingRequest);
1680 IMPL_XMLOBJECTBUILDER(NameIDMappingResponse);
1681 IMPL_XMLOBJECTBUILDER(NameIDPolicy);
1682 IMPL_XMLOBJECTBUILDER(NewEncryptedID);
1683 IMPL_XMLOBJECTBUILDER(NewID);
1684 IMPL_XMLOBJECTBUILDER(RequestedAuthnContext);
1685 IMPL_XMLOBJECTBUILDER(RequesterID);
1686 IMPL_XMLOBJECTBUILDER(Response);
1687 IMPL_XMLOBJECTBUILDER(Scoping);
1688 IMPL_XMLOBJECTBUILDER(SessionIndex);
1689 IMPL_XMLOBJECTBUILDER(Status);
1690 IMPL_XMLOBJECTBUILDER(StatusCode);
1691 IMPL_XMLOBJECTBUILDER(StatusDetail);
1692 IMPL_XMLOBJECTBUILDER(StatusMessage);
1693 IMPL_XMLOBJECTBUILDER(Terminate);
1695 IMPL_XMLOBJECTBUILDER(RespondTo);
1698 const XMLCh Artifact::LOCAL_NAME[] = UNICODE_LITERAL_8(A,r,t,i,f,a,c,t);
1699 const XMLCh ArtifactResolve::LOCAL_NAME[] = UNICODE_LITERAL_15(A,r,t,i,f,a,c,t,R,e,s,o,l,v,e);
1700 const XMLCh ArtifactResolve::TYPE_NAME[] = UNICODE_LITERAL_19(A,r,t,i,f,a,c,t,R,e,s,o,l,v,e,T,y,p,e);
1701 const XMLCh ArtifactResponse::LOCAL_NAME[] = UNICODE_LITERAL_16(A,r,t,i,f,a,c,t,R,e,s,p,o,n,s,e);
1702 const XMLCh ArtifactResponse::TYPE_NAME[] = UNICODE_LITERAL_20(A,r,t,i,f,a,c,t,R,e,s,p,o,n,s,e,T,y,p,e);
1703 const XMLCh AssertionIDRequest::LOCAL_NAME[] = UNICODE_LITERAL_18(A,s,s,e,r,t,i,o,n,I,D,R,e,q,u,e,s,t);
1704 const XMLCh AssertionIDRequest::TYPE_NAME[] = UNICODE_LITERAL_22(A,s,s,e,r,t,i,o,n,I,D,R,e,q,u,e,s,t,T,y,p,e);
1705 const XMLCh AttributeQuery::LOCAL_NAME[] = UNICODE_LITERAL_14(A,t,t,r,i,b,u,t,e,Q,u,e,r,y);
1706 const XMLCh AttributeQuery::TYPE_NAME[] = UNICODE_LITERAL_18(A,t,t,r,i,b,u,t,e,Q,u,e,r,y,T,y,p,e);
1707 const XMLCh AuthnQuery::LOCAL_NAME[] = UNICODE_LITERAL_10(A,u,t,h,n,Q,u,e,r,y);
1708 const XMLCh AuthnQuery::TYPE_NAME[] = UNICODE_LITERAL_14(A,u,t,h,n,Q,u,e,r,y,T,y,p,e);
1709 const XMLCh AuthnQuery::SESSIONINDEX_ATTRIB_NAME[] = UNICODE_LITERAL_12(S,e,s,s,i,o,n,I,n,d,e,x);
1710 const XMLCh AuthnRequest::LOCAL_NAME[] = UNICODE_LITERAL_12(A,u,t,h,n,R,e,q,u,e,s,t);
1711 const XMLCh AuthnRequest::TYPE_NAME[] = UNICODE_LITERAL_16(A,u,t,h,n,R,e,q,u,e,s,t,T,y,p,e);
1712 const XMLCh AuthnRequest::FORCEAUTHN_ATTRIB_NAME[] = UNICODE_LITERAL_10(F,o,r,c,e,A,u,t,h,n);
1713 const XMLCh AuthnRequest::ISPASSIVE_ATTRIB_NAME[] = UNICODE_LITERAL_9(I,s,P,a,s,s,i,v,e);
1714 const XMLCh AuthnRequest::PROTOCOLBINDING_ATTRIB_NAME[] = UNICODE_LITERAL_15(P,r,o,t,o,c,o,l,B,i,n,d,i,n,g);
1715 const XMLCh AuthnRequest::ASSERTIONCONSUMERSERVICEINDEX_ATTRIB_NAME[] = UNICODE_LITERAL_29(A,s,s,e,r,t,i,o,n,C,o,n,s,u,m,e,r,S,e,r,v,i,c,e,I,n,d,e,x);
1716 const XMLCh AuthnRequest::ASSERTIONCONSUMERSERVICEURL_ATTRIB_NAME[] = UNICODE_LITERAL_27(A,s,s,e,r,t,i,o,n,C,o,n,s,u,m,e,r,S,e,r,v,i,c,e,U,R,L);
1717 const XMLCh AuthnRequest::ATTRIBUTECONSUMINGSERVICEINDEX_ATTRIB_NAME[] = UNICODE_LITERAL_30(A,t,t,r,i,b,u,t,e,C,o,n,s,u,m,i,n,g,S,e,r,v,i,c,e,I,n,d,e,x);
1718 const XMLCh AuthnRequest::PROVIDERNAME_ATTRIB_NAME[] = UNICODE_LITERAL_12(P,r,o,v,i,d,e,r,N,a,m,e);
1719 const XMLCh AuthzDecisionQuery::LOCAL_NAME[] = UNICODE_LITERAL_18(A,u,t,h,z,D,e,c,i,s,i,o,n,Q,u,e,r,y);
1720 const XMLCh AuthzDecisionQuery::TYPE_NAME[] = UNICODE_LITERAL_22(A,u,t,h,z,D,e,c,i,s,i,o,n,Q,u,e,r,y,T,y,p,e);
1721 const XMLCh AuthzDecisionQuery::RESOURCE_ATTRIB_NAME[] = UNICODE_LITERAL_8(R,e,s,o,u,r,c,e);
1722 const XMLCh Extensions::LOCAL_NAME[] = UNICODE_LITERAL_10(E,x,t,e,n,s,i,o,n,s);
1723 const XMLCh Extensions::TYPE_NAME[] = UNICODE_LITERAL_14(E,x,t,e,n,s,i,o,n,s,T,y,p,e);
1724 const XMLCh GetComplete::LOCAL_NAME[] = UNICODE_LITERAL_11(G,e,t,C,o,m,p,l,e,t,e);
1725 const XMLCh IDPEntry::LOCAL_NAME[] = UNICODE_LITERAL_8(I,D,P,E,n,t,r,y);
1726 const XMLCh IDPEntry::TYPE_NAME[] = UNICODE_LITERAL_12(I,D,P,E,n,t,r,y,T,y,p,e);
1727 const XMLCh IDPEntry::PROVIDERID_ATTRIB_NAME[] = UNICODE_LITERAL_10(P,r,o,v,i,d,e,r,I,D);
1728 const XMLCh IDPEntry::NAME_ATTRIB_NAME[] = UNICODE_LITERAL_4(N,a,m,e);
1729 const XMLCh IDPEntry::LOC_ATTRIB_NAME[] = UNICODE_LITERAL_3(L,o,c);
1730 const XMLCh IDPList::LOCAL_NAME[] = UNICODE_LITERAL_7(I,D,P,L,i,s,t);
1731 const XMLCh IDPList::TYPE_NAME[] = UNICODE_LITERAL_11(I,D,P,L,i,s,t,T,y,p,e);
1732 const XMLCh LogoutRequest::LOCAL_NAME[] = UNICODE_LITERAL_13(L,o,g,o,u,t,R,e,q,u,e,s,t);
1733 const XMLCh LogoutRequest::TYPE_NAME[] = UNICODE_LITERAL_17(L,o,g,o,u,t,R,e,q,u,e,s,t,T,y,p,e);
1734 const XMLCh LogoutRequest::REASON_ATTRIB_NAME[] = UNICODE_LITERAL_6(R,e,a,s,o,n);
1735 const XMLCh LogoutRequest::NOTONORAFTER_ATTRIB_NAME[] = UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r);
1736 const XMLCh LogoutResponse::LOCAL_NAME[] = UNICODE_LITERAL_14(L,o,g,o,u,t,R,e,s,p,o,n,s,e);
1737 const XMLCh ManageNameIDRequest::LOCAL_NAME[] = UNICODE_LITERAL_19(M,a,n,a,g,e,N,a,m,e,I,D,R,e,q,u,e,s,t);
1738 const XMLCh ManageNameIDRequest::TYPE_NAME[] = UNICODE_LITERAL_23(M,a,n,a,g,e,N,a,m,e,I,D,R,e,q,u,e,s,t,T,y,p,e);
1739 const XMLCh ManageNameIDResponse::LOCAL_NAME[] = UNICODE_LITERAL_20(M,a,n,a,g,e,N,a,m,e,I,D,R,e,s,p,o,n,s,e);
1740 const XMLCh NameIDMappingRequest::LOCAL_NAME[] = UNICODE_LITERAL_20(N,a,m,e,I,D,M,a,p,p,i,n,g,R,e,q,u,e,s,t);
1741 const XMLCh NameIDMappingRequest::TYPE_NAME[] = UNICODE_LITERAL_24(N,a,m,e,I,D,M,a,p,p,i,n,g,R,e,q,u,e,s,t,T,y,p,e);
1742 const XMLCh NameIDMappingResponse::LOCAL_NAME[] = UNICODE_LITERAL_21(N,a,m,e,I,D,M,a,p,p,i,n,g,R,e,s,p,o,n,s,e);
1743 const XMLCh NameIDMappingResponse::TYPE_NAME[] = UNICODE_LITERAL_25(N,a,m,e,I,D,M,a,p,p,i,n,g,R,e,s,p,o,n,s,e,T,y,p,e);
1744 const XMLCh NameIDPolicy::LOCAL_NAME[] = UNICODE_LITERAL_12(N,a,m,e,I,D,P,o,l,i,c,y);
1745 const XMLCh NameIDPolicy::TYPE_NAME[] = UNICODE_LITERAL_16(N,a,m,e,I,D,P,o,l,i,c,y,T,y,p,e);
1746 const XMLCh NameIDPolicy::FORMAT_ATTRIB_NAME[] = UNICODE_LITERAL_6(F,o,r,m,a,t);
1747 const XMLCh NameIDPolicy::SPNAMEQUALIFIER_ATTRIB_NAME[] = UNICODE_LITERAL_15(S,P,N,a,m,e,Q,u,a,l,i,f,i,e,r);
1748 const XMLCh NameIDPolicy::ALLOWCREATE_ATTRIB_NAME[] = UNICODE_LITERAL_11(A,l,l,o,w,C,r,e,a,t,e);
1749 const XMLCh NewEncryptedID::LOCAL_NAME[] = UNICODE_LITERAL_14(N,e,w,E,n,c,r,y,p,t,e,d,I,D);
1750 const XMLCh NewID::LOCAL_NAME[] = UNICODE_LITERAL_5(N,e,w,I,D);
1751 const XMLCh RequesterID::LOCAL_NAME[] = UNICODE_LITERAL_11(R,e,q,u,e,s,t,e,r,I,D);
1752 const XMLCh RequestedAuthnContext::LOCAL_NAME[] = UNICODE_LITERAL_21(R,e,q,u,e,s,t,e,d,A,u,t,h,n,C,o,n,t,e,x,t);
1753 const XMLCh RequestedAuthnContext::TYPE_NAME[] = UNICODE_LITERAL_25(R,e,q,u,e,s,t,e,d,A,u,t,h,n,C,o,n,t,e,x,t,T,y,p,e);
1754 const XMLCh RequestedAuthnContext::COMPARISON_ATTRIB_NAME[] = UNICODE_LITERAL_10(C,o,m,p,a,r,i,s,o,n);
1755 const XMLCh RequestedAuthnContext::COMPARISON_EXACT[] = UNICODE_LITERAL_5(e,x,a,c,t);
1756 const XMLCh RequestedAuthnContext::COMPARISON_MINIMUM[] = UNICODE_LITERAL_7(m,i,n,i,m,u,m);
1757 const XMLCh RequestedAuthnContext::COMPARISON_MAXIMUM[] = UNICODE_LITERAL_7(m,a,x,i,m,u,m);
1758 const XMLCh RequestedAuthnContext::COMPARISON_BETTER[] = UNICODE_LITERAL_6(b,e,t,t,e,r);
1759 const XMLCh RequestAbstractType::LOCAL_NAME[] = {chNull};
1760 const XMLCh RequestAbstractType::TYPE_NAME[] = UNICODE_LITERAL_19(R,e,q,u,e,s,t,A,b,s,t,r,a,c,t,T,y,p,e);
1761 const XMLCh RequestAbstractType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D);
1762 const XMLCh RequestAbstractType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n);
1763 const XMLCh RequestAbstractType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t);
1764 const XMLCh RequestAbstractType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n);
1765 const XMLCh RequestAbstractType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t);
1766 const XMLCh RespondTo::LOCAL_NAME[] = UNICODE_LITERAL_9(R,e,s,p,o,n,d,T,o);
1767 const XMLCh Response::LOCAL_NAME[] = UNICODE_LITERAL_8(R,e,s,p,o,n,s,e);
1768 const XMLCh Response::TYPE_NAME[] = UNICODE_LITERAL_12(R,e,s,p,o,n,s,e,T,y,p,e);
1769 const XMLCh Scoping::LOCAL_NAME[] = UNICODE_LITERAL_7(S,c,o,p,i,n,g);
1770 const XMLCh Scoping::TYPE_NAME[] = UNICODE_LITERAL_11(S,c,o,p,i,n,g,T,y,p,e);
1771 const XMLCh Scoping::PROXYCOUNT_ATTRIB_NAME[] = UNICODE_LITERAL_10(P,r,o,x,y,C,o,u,n,t);
1772 const XMLCh SessionIndex::LOCAL_NAME[] = UNICODE_LITERAL_12(S,e,s,s,i,o,n,I,n,d,e,x);
1773 const XMLCh Status::LOCAL_NAME[] = UNICODE_LITERAL_6(S,t,a,t,u,s);
1774 const XMLCh Status::TYPE_NAME[] = UNICODE_LITERAL_10(S,t,a,t,u,s,T,y,p,e);
1775 const XMLCh StatusCode::LOCAL_NAME[] = UNICODE_LITERAL_10(S,t,a,t,u,s,C,o,d,e);
1776 const XMLCh StatusCode::TYPE_NAME[] = UNICODE_LITERAL_14(S,t,a,t,u,s,C,o,d,e,T,y,p,e);
1777 const XMLCh StatusCode::VALUE_ATTRIB_NAME[] = UNICODE_LITERAL_5(V,a,l,u,e);
1778 const XMLCh StatusDetail::LOCAL_NAME[] = UNICODE_LITERAL_12(S,t,a,t,u,s,D,e,t,a,i,l);
1779 const XMLCh StatusDetail::TYPE_NAME[] = UNICODE_LITERAL_16(S,t,a,t,u,s,D,e,t,a,i,l,T,y,p,e);
1780 const XMLCh StatusMessage::LOCAL_NAME[] = UNICODE_LITERAL_13(S,t,a,t,u,s,M,e,s,s,a,g,e);
1781 const XMLCh StatusResponseType::LOCAL_NAME[] = {chNull};
1782 const XMLCh StatusResponseType::TYPE_NAME[] = UNICODE_LITERAL_18(S,t,a,t,u,s,R,e,s,p,o,n,s,e,T,y,p,e);
1783 const XMLCh StatusResponseType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D);
1784 const XMLCh StatusResponseType::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o);
1785 const XMLCh StatusResponseType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n);
1786 const XMLCh StatusResponseType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t);
1787 const XMLCh StatusResponseType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n);
1788 const XMLCh StatusResponseType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t);
1789 const XMLCh SubjectQuery::LOCAL_NAME[] = UNICODE_LITERAL_12(S,u,b,j,e,c,t,Q,u,e,r,y);
1790 const XMLCh SubjectQuery::TYPE_NAME[] = UNICODE_LITERAL_24(S,u,b,j,e,c,t,Q,u,e,r,y,A,b,s,t,r,a,c,t,T,y,p,e);
1791 const XMLCh Terminate::LOCAL_NAME[] = UNICODE_LITERAL_9(T,e,r,m,i,n,a,t,e);
1792 const XMLCh Terminate::TYPE_NAME[] = UNICODE_LITERAL_13(T,e,r,m,i,n,a,t,e,T,y,p,e);
1794 // Unicode literals: LogoutRequest element, Reason attribute
1795 const XMLCh LogoutRequest::REASON_USER[] = // urn:oasis:names:tc:SAML:2.0:logout:user
1796 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1797 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1798 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1799 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1800 chLatin_u, chLatin_s, chLatin_e, chLatin_r, chNull
1803 const XMLCh LogoutRequest::REASON_ADMIN[] = // urn:oasis:names:tc:SAML:2.0:logout:admin
1804 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1805 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1806 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1807 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1808 chLatin_a, chLatin_d, chLatin_m, chLatin_i, chLatin_n, chNull
1812 const XMLCh LogoutRequest::REASON_GLOBAL_TIMEOUT[] = // urn:oasis:names:tc:SAML:2.0:logout:global-timeout
1813 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1814 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1815 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1816 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1817 chLatin_g, chLatin_l, chLatin_o, chLatin_b, chLatin_a, chLatin_l,
1818 chDash, chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull
1822 const XMLCh LogoutRequest::REASON_SP_TIMEOUT[] = // urn:oasis:names:tc:SAML:2.0:logout:sp-timeout
1823 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1824 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1825 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1826 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1827 chLatin_s, chLatin_p, chDash, chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull
1831 // Unicode literals, StatusCode Value
1832 const XMLCh StatusCode::SUCCESS[] = // urn:oasis:names:tc:SAML:2.0:status:Success
1833 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1834 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1835 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1836 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1837 chLatin_S, chLatin_u, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chNull
1840 const XMLCh StatusCode::REQUESTER[] = // urn:oasis:names:tc:SAML:2.0:status:Requester
1841 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1842 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1843 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1844 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1845 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t, chLatin_e, chLatin_r, chNull
1848 const XMLCh StatusCode::RESPONDER[] = // urn:oasis:names:tc:SAML:2.0:status:Responder
1849 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1850 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1851 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1852 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1853 chLatin_R, chLatin_e, chLatin_s, chLatin_p, chLatin_o, chLatin_n, chLatin_d, chLatin_e, chLatin_r, chNull
1856 const XMLCh StatusCode::VERSION_MISMATCH[] = // urn:oasis:names:tc:SAML:2.0:status:VersionMismatch
1857 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1858 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1859 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1860 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1861 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1862 chLatin_M, chLatin_i, chLatin_s, chLatin_m, chLatin_a, chLatin_t, chLatin_c, chLatin_h, chNull
1865 const XMLCh StatusCode::AUTHN_FAILED[] = // urn:oasis:names:tc:SAML:2.0:status:AuthnFailed
1866 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1867 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1868 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1869 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1870 chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_n,
1871 chLatin_F, chLatin_a, chLatin_i, chLatin_l, chLatin_e, chLatin_d, chNull
1874 const XMLCh StatusCode::INVALID_ATTR_NAME_OR_VALUE[] = // urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue
1875 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1876 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1877 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1878 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1879 chLatin_I, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d,
1880 chLatin_A, chLatin_t, chLatin_t, chLatin_r, chLatin_N, chLatin_a, chLatin_m, chLatin_e,
1881 chLatin_O, chLatin_r, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1884 const XMLCh StatusCode::INVALID_NAMEID_POLICY[] = // urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy
1885 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1886 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1887 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1888 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1889 chLatin_I, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d,
1890 chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_I, chLatin_D,
1891 chLatin_P, chLatin_o, chLatin_l, chLatin_i, chLatin_c, chLatin_y, chNull
1894 const XMLCh StatusCode::NO_AUTHN_CONTEXT[] = // urn:oasis:names:tc:SAML:2.0:status:NoAuthnContext
1895 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1896 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1897 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1898 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1899 chLatin_N, chLatin_o, chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_n,
1900 chLatin_C, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chNull
1903 const XMLCh StatusCode::NO_AVAILABLE_IDP[] = // urn:oasis:names:tc:SAML:2.0:status:NoAvailableIDP
1904 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1905 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1906 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1907 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1908 chLatin_N, chLatin_o, chLatin_A, chLatin_v, chLatin_a, chLatin_i, chLatin_l, chLatin_a, chLatin_b, chLatin_l, chLatin_e,
1909 chLatin_I, chLatin_D, chLatin_P, chNull
1912 const XMLCh StatusCode::NO_PASSIVE[] = // urn:oasis:names:tc:SAML:2.0:status:NoPassive
1913 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1914 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1915 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1916 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1917 chLatin_N, chLatin_o, chLatin_P, chLatin_a, chLatin_s, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull
1920 const XMLCh StatusCode::NO_SUPPORTED_IDP[] = // urn:oasis:names:tc:SAML:2.0:status:NoSupportedIDP
1921 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1922 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1923 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1924 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1925 chLatin_N, chLatin_o, chLatin_S, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d,
1926 chLatin_I, chLatin_D, chLatin_P, chNull
1929 const XMLCh StatusCode::PARTIAL_LOGOUT[] = // urn:oasis:names:tc:SAML:2.0:status:PartialLogout
1930 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1931 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1932 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1933 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1934 chLatin_P, chLatin_a, chLatin_r, chLatin_t, chLatin_i, chLatin_a, chLatin_l,
1935 chLatin_L, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chNull
1938 const XMLCh StatusCode::PROXY_COUNT_EXCEEDED[] = // urn:oasis:names:tc:SAML:2.0:status:ProxyCountExceeded
1939 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1940 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1941 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1942 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1943 chLatin_P, chLatin_r, chLatin_o, chLatin_x, chLatin_y, chLatin_C, chLatin_o, chLatin_u, chLatin_n, chLatin_t,
1944 chLatin_E, chLatin_x, chLatin_c, chLatin_e, chLatin_e, chLatin_d, chLatin_e, chLatin_d, chNull
1947 const XMLCh StatusCode::REQUEST_DENIED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestDenied
1948 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1949 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1950 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1951 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1952 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1953 chLatin_D, chLatin_e, chLatin_n, chLatin_i, chLatin_e, chLatin_d, chNull
1956 const XMLCh StatusCode::REQUEST_UNSUPPORTED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported
1957 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1958 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1959 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1960 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1961 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1962 chLatin_U, chLatin_n, chLatin_s, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d, chNull
1965 const XMLCh StatusCode::REQUEST_VERSION_DEPRECATED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionDeprecated
1966 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1967 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1968 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1969 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1970 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1971 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1972 chLatin_D, chLatin_e, chLatin_p, chLatin_r, chLatin_e, chLatin_c, chLatin_a, chLatin_t, chLatin_e, chLatin_d, chNull
1975 const XMLCh StatusCode::REQUEST_VERSION_TOO_HIGH[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionTooHigh
1976 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1977 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1978 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1979 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1980 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1981 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1982 chLatin_T, chLatin_o, chLatin_o, chLatin_H, chLatin_i, chLatin_g, chLatin_h, chNull
1985 const XMLCh StatusCode::REQUEST_VERSION_TOO_LOW[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionTooLow
1986 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1987 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1988 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1989 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1990 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1991 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1992 chLatin_T, chLatin_o, chLatin_o, chLatin_L, chLatin_o, chLatin_w, chNull
1995 const XMLCh StatusCode::RESOURCE_NOT_RECOGNIZED[] = // urn:oasis:names:tc:SAML:2.0:status:ResourceNotRecognized
1996 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1997 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1998 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1999 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2000 chLatin_R, chLatin_e, chLatin_s, chLatin_o, chLatin_u, chLatin_r, chLatin_c, chLatin_e,
2001 chLatin_N, chLatin_o, chLatin_t,
2002 chLatin_R, chLatin_e, chLatin_c, chLatin_o, chLatin_g, chLatin_n, chLatin_i, chLatin_z, chLatin_e, chLatin_d, chNull
2005 const XMLCh StatusCode::TOO_MANY_RESPONSES[] = // urn:oasis:names:tc:SAML:2.0:status:TooManyResponses
2006 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2007 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2008 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2009 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2010 chLatin_T, chLatin_o, chLatin_o, chLatin_M, chLatin_a, chLatin_n, chLatin_y,
2011 chLatin_R, chLatin_e, chLatin_s, chLatin_p, chLatin_o, chLatin_n, chLatin_s, chLatin_e, chLatin_s, chNull
2014 const XMLCh StatusCode::UNKNOWN_ATTR_PROFILE[] = // urn:oasis:names:tc:SAML:2.0:status:UnknownAttrProfile
2015 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2016 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2017 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2018 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2019 chLatin_U, chLatin_n, chLatin_k, chLatin_n, chLatin_o, chLatin_w, chLatin_n,
2020 chLatin_A, chLatin_t, chLatin_t, chLatin_r,
2021 chLatin_P, chLatin_r, chLatin_o, chLatin_f, chLatin_i, chLatin_l, chLatin_e, chNull
2024 const XMLCh StatusCode::UNKNOWN_PRINCIPAL[] = // urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal
2025 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2026 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2027 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2028 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2029 chLatin_U, chLatin_n, chLatin_k, chLatin_n, chLatin_o, chLatin_w, chLatin_n,
2030 chLatin_P, chLatin_r, chLatin_i, chLatin_n, chLatin_c, chLatin_i, chLatin_p, chLatin_a, chLatin_l, chNull
2033 const XMLCh StatusCode::UNSUPPORTED_BINDING[] = // urn:oasis:names:tc:SAML:2.0:status:UnsupportedBinding
2034 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2035 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2036 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2037 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2038 chLatin_U, chLatin_n, chLatin_s, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d,
2039 chLatin_B, chLatin_i, chLatin_n, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chNull