2 * Copyright 2001-2007 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 "saml2/core/Protocols.h"
27 #include <xmltooling/AbstractComplexElement.h>
28 #include <xmltooling/AbstractSimpleElement.h>
29 #include <xmltooling/impl/AnyElement.h>
30 #include <xmltooling/io/AbstractXMLObjectMarshaller.h>
31 #include <xmltooling/io/AbstractXMLObjectUnmarshaller.h>
32 #include <xmltooling/util/XMLHelper.h>
35 #include <xercesc/util/XMLUniDefs.hpp>
37 using namespace opensaml::saml2p;
38 using namespace opensaml::saml2;
39 using namespace xmlsignature;
40 using namespace xmlencryption;
41 using namespace xmltooling;
43 using xmlconstants::XMLSIG_NS;
44 using xmlconstants::XMLENC_NS;
45 using xmlconstants::XML_BOOL_NULL;
46 using samlconstants::SAML20_NS;
47 using samlconstants::SAML20P_NS;
49 #if defined (_MSC_VER)
50 #pragma warning( push )
51 #pragma warning( disable : 4250 4251 )
57 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,Artifact);
58 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,GetComplete);
59 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,NewID);
60 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,RequesterID);
61 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,SessionIndex);
62 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,StatusMessage);
64 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,RespondTo);
66 //TODO need unit test for this, using objects from another namespace
67 class SAML_DLLLOCAL ExtensionsImpl : public virtual Extensions,
68 public AbstractComplexElement,
69 public AbstractDOMCachingXMLObject,
70 public AbstractXMLObjectMarshaller,
71 public AbstractXMLObjectUnmarshaller
74 virtual ~ExtensionsImpl() {}
76 ExtensionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
77 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
80 ExtensionsImpl(const ExtensionsImpl& src)
81 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
82 VectorOf(XMLObject) v=getUnknownXMLObjects();
83 for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
84 v.push_back((*i)->clone());
87 IMPL_XMLOBJECT_CLONE(Extensions);
88 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
91 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
93 const XMLCh* nsURI=root->getNamespaceURI();
94 if (!XMLString::equals(nsURI,SAML20P_NS) && nsURI && *nsURI) {
95 getUnknownXMLObjects().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 xmltooling::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,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 xmltooling::QName* schemaType)
163 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
165 StatusDetailImpl(const StatusDetailImpl& src)
166 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
167 VectorOf(XMLObject) v=getUnknownXMLObjects();
168 for (vector<XMLObject*>::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i)
169 v.push_back((*i)->clone());
172 IMPL_XMLOBJECT_CLONE(StatusDetail);
173 IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end());
176 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
177 getUnknownXMLObjects().push_back(childXMLObject);
182 class SAML_DLLLOCAL StatusImpl : public virtual Status,
183 public AbstractComplexElement,
184 public AbstractDOMCachingXMLObject,
185 public AbstractXMLObjectMarshaller,
186 public AbstractXMLObjectUnmarshaller
190 m_StatusMessage=NULL;
192 m_children.push_back(NULL);
193 m_children.push_back(NULL);
194 m_children.push_back(NULL);
195 m_pos_StatusCode=m_children.begin();
196 m_pos_StatusMessage=m_pos_StatusCode;
197 ++m_pos_StatusMessage;
198 m_pos_StatusDetail=m_pos_StatusMessage;
199 ++m_pos_StatusDetail;
202 virtual ~StatusImpl() { }
204 StatusImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
205 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
209 StatusImpl(const StatusImpl& src)
210 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
212 if (src.getStatusCode())
213 setStatusCode(src.getStatusCode()->cloneStatusCode());
214 if (src.getStatusMessage())
215 setStatusMessage(src.getStatusMessage()->cloneStatusMessage());
216 if (src.getStatusDetail())
217 setStatusDetail(src.getStatusDetail()->cloneStatusDetail());
220 IMPL_XMLOBJECT_CLONE(Status);
221 IMPL_TYPED_CHILD(StatusCode);
222 IMPL_TYPED_CHILD(StatusMessage);
223 IMPL_TYPED_CHILD(StatusDetail);
227 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
228 PROC_TYPED_CHILD(StatusCode,SAML20P_NS,false);
229 PROC_TYPED_CHILD(StatusMessage,SAML20P_NS,false);
230 PROC_TYPED_CHILD(StatusDetail,SAML20P_NS,false);
231 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
237 class SAML_DLLLOCAL RequestAbstractTypeImpl : public virtual RequestAbstractType,
238 public AbstractComplexElement,
239 public AbstractDOMCachingXMLObject,
240 public AbstractXMLObjectMarshaller,
241 public AbstractXMLObjectUnmarshaller
252 m_children.push_back(NULL);
253 m_children.push_back(NULL);
254 m_children.push_back(NULL);
255 m_pos_Issuer=m_children.begin();
256 m_pos_Signature=m_pos_Issuer;
258 m_pos_Extensions=m_pos_Signature;
262 RequestAbstractTypeImpl() {
266 virtual ~RequestAbstractTypeImpl() {
267 XMLString::release(&m_ID);
268 XMLString::release(&m_Version);
269 XMLString::release(&m_Destination);
270 XMLString::release(&m_Consent);
271 delete m_IssueInstant;
274 RequestAbstractTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
275 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
279 RequestAbstractTypeImpl(const RequestAbstractTypeImpl& src)
280 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
283 setVersion(src.getVersion());
284 setIssueInstant(src.getIssueInstant());
285 setDestination(src.getDestination());
286 setConsent(src.getConsent());
288 setIssuer(src.getIssuer()->cloneIssuer());
289 if (src.getSignature())
290 setSignature(src.getSignature()->cloneSignature());
291 if (src.getExtensions())
292 setExtensions(src.getExtensions()->cloneExtensions());
295 //IMPL_TYPED_CHILD(Signature);
296 // Need customized setter.
298 Signature* m_Signature;
299 list<XMLObject*>::iterator m_pos_Signature;
301 Signature* getSignature() const {
305 void setSignature(Signature* sig) {
306 prepareForAssignment(m_Signature,sig);
307 *m_pos_Signature=m_Signature=sig;
308 // Sync content reference back up.
310 m_Signature->setContentReference(new opensaml::ContentReference(*this));
313 IMPL_STRING_ATTRIB(Version);
315 IMPL_DATETIME_ATTRIB(IssueInstant,0);
316 IMPL_STRING_ATTRIB(Destination);
317 IMPL_STRING_ATTRIB(Consent);
318 IMPL_TYPED_FOREIGN_CHILD(Issuer,saml2);
319 IMPL_TYPED_CHILD(Extensions);
322 void marshallAttributes(DOMElement* domElement) const {
324 const_cast<RequestAbstractTypeImpl*>(this)->m_Version=XMLString::transcode("2.0");
325 MARSHALL_STRING_ATTRIB(Version,VER,NULL);
327 const_cast<RequestAbstractTypeImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
328 MARSHALL_ID_ATTRIB(ID,ID,NULL);
329 if (!m_IssueInstant) {
330 const_cast<RequestAbstractTypeImpl*>(this)->m_IssueInstantEpoch=time(NULL);
331 const_cast<RequestAbstractTypeImpl*>(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch);
333 MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
334 MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL);
335 MARSHALL_STRING_ATTRIB(Consent,CONSENT,NULL);
338 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
339 PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAML20_NS,false);
340 PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false);
341 PROC_TYPED_CHILD(Extensions,SAML20P_NS,false);
342 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
345 void processAttribute(const DOMAttr* attribute) {
346 PROC_ID_ATTRIB(ID,ID,NULL);
347 PROC_STRING_ATTRIB(Version,VER,NULL);
348 PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
349 PROC_STRING_ATTRIB(Destination,DESTINATION,NULL);
350 PROC_STRING_ATTRIB(Consent,CONSENT,NULL);
351 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
356 class SAML_DLLLOCAL AssertionIDRequestImpl : public virtual AssertionIDRequest, public RequestAbstractTypeImpl
359 virtual ~AssertionIDRequestImpl() { }
361 AssertionIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
362 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
364 AssertionIDRequestImpl(const AssertionIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
365 VectorOf(AssertionIDRef) v=getAssertionIDRefs();
366 for (vector<AssertionIDRef*>::const_iterator i=src.m_AssertionIDRefs.begin(); i!=src.m_AssertionIDRefs.end(); i++) {
368 v.push_back((*i)->cloneAssertionIDRef());
374 IMPL_XMLOBJECT_CLONE(AssertionIDRequest);
375 RequestAbstractType* cloneRequestAbstractType() const {
376 return cloneAssertionIDRequest();
379 IMPL_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,m_children.end());
382 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
383 PROC_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,SAML20_NS,false);
384 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
388 class SAML_DLLLOCAL SubjectQueryImpl : public virtual SubjectQuery, public RequestAbstractTypeImpl
393 m_children.push_back(NULL);
394 m_pos_Subject = m_pos_Extensions;
402 virtual ~SubjectQueryImpl() { }
404 SubjectQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
405 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
410 SubjectQueryImpl(const SubjectQueryImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
412 if (src.getSubject())
413 setSubject(src.getSubject()->cloneSubject());
416 IMPL_TYPED_FOREIGN_CHILD(Subject,saml2);
419 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
420 PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAML20_NS,false);
421 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
426 class SAML_DLLLOCAL RequestedAuthnContextImpl : public virtual RequestedAuthnContext,
427 public AbstractComplexElement,
428 public AbstractDOMCachingXMLObject,
429 public AbstractXMLObjectMarshaller,
430 public AbstractXMLObjectUnmarshaller
436 virtual ~RequestedAuthnContextImpl() {
437 XMLString::release(&m_Comparison);
440 RequestedAuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
441 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
445 RequestedAuthnContextImpl(const RequestedAuthnContextImpl& src)
446 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
448 setComparison(src.getComparison());
449 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
451 AuthnContextClassRef* classref=dynamic_cast<AuthnContextClassRef*>(*i);
453 getAuthnContextClassRefs().push_back(classref->cloneAuthnContextClassRef());
457 AuthnContextDeclRef* declref=dynamic_cast<AuthnContextDeclRef*>(*i);
459 getAuthnContextDeclRefs().push_back(declref->cloneAuthnContextDeclRef());
466 IMPL_XMLOBJECT_CLONE(RequestedAuthnContext);
467 IMPL_STRING_ATTRIB(Comparison);
468 IMPL_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,m_children.end());
469 IMPL_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,m_children.end());
472 void marshallAttributes(DOMElement* domElement) const {
473 MARSHALL_STRING_ATTRIB(Comparison,COMPARISON,NULL);
476 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
477 PROC_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,SAML20_NS,false);
478 PROC_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,SAML20_NS,false);
479 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
482 void processAttribute(const DOMAttr* attribute) {
483 PROC_STRING_ATTRIB(Comparison,COMPARISON,NULL);
484 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
489 class SAML_DLLLOCAL AuthnQueryImpl : public virtual AuthnQuery, public SubjectQueryImpl
493 m_RequestedAuthnContext=NULL;
494 m_children.push_back(NULL);
495 m_pos_RequestedAuthnContext = m_pos_Subject;
496 ++m_pos_RequestedAuthnContext;
500 virtual ~AuthnQueryImpl() {
501 XMLString::release(&m_SessionIndex);
504 AuthnQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
505 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
510 AuthnQueryImpl(const AuthnQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
512 setSessionIndex(src.getSessionIndex());
513 if (src.getRequestedAuthnContext())
514 setRequestedAuthnContext(src.getRequestedAuthnContext()->cloneRequestedAuthnContext());
517 IMPL_XMLOBJECT_CLONE(AuthnQuery);
518 SubjectQuery* cloneSubjectQuery() const {
519 return cloneAuthnQuery();
521 RequestAbstractType* cloneRequestAbstractType() const {
522 return cloneAuthnQuery();
525 IMPL_STRING_ATTRIB(SessionIndex);
526 IMPL_TYPED_CHILD(RequestedAuthnContext);
529 void marshallAttributes(DOMElement* domElement) const {
530 MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
531 SubjectQueryImpl::marshallAttributes(domElement);
534 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
535 PROC_TYPED_CHILD(RequestedAuthnContext,SAML20P_NS,false);
536 SubjectQueryImpl::processChildElement(childXMLObject,root);
538 void processAttribute(const DOMAttr* attribute) {
539 PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
540 SubjectQueryImpl::processAttribute(attribute);
544 class SAML_DLLLOCAL AttributeQueryImpl : public virtual AttributeQuery, public SubjectQueryImpl
547 virtual ~AttributeQueryImpl() { }
549 AttributeQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
550 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
552 AttributeQueryImpl(const AttributeQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
553 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
555 Attribute* attrib=dynamic_cast<Attribute*>(*i);
557 getAttributes().push_back(attrib->cloneAttribute());
565 IMPL_XMLOBJECT_CLONE(AttributeQuery);
566 SubjectQuery* cloneSubjectQuery() const {
567 return cloneAttributeQuery();
569 RequestAbstractType* cloneRequestAbstractType() const {
570 return cloneAttributeQuery();
573 IMPL_TYPED_FOREIGN_CHILDREN(Attribute,saml2,m_children.end());
576 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
577 PROC_TYPED_FOREIGN_CHILDREN(Attribute,saml2,SAML20_NS,false);
578 SubjectQueryImpl::processChildElement(childXMLObject,root);
582 class SAML_DLLLOCAL AuthzDecisionQueryImpl : public virtual AuthzDecisionQuery, public SubjectQueryImpl
587 m_children.push_back(NULL);
588 m_pos_Evidence=m_pos_Subject;
593 virtual ~AuthzDecisionQueryImpl() {
594 XMLString::release(&m_Resource);
597 AuthzDecisionQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
598 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
602 AuthzDecisionQueryImpl(const AuthzDecisionQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
604 setResource(src.getResource());
605 if (src.getEvidence())
606 setEvidence(src.getEvidence()->cloneEvidence());
607 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
609 Action* action=dynamic_cast<Action*>(*i);
611 getActions().push_back(action->cloneAction());
618 IMPL_XMLOBJECT_CLONE(AuthzDecisionQuery);
619 SubjectQuery* cloneSubjectQuery() const {
620 return cloneAuthzDecisionQuery();
622 RequestAbstractType* cloneRequestAbstractType() const {
623 return cloneAuthzDecisionQuery();
626 IMPL_STRING_ATTRIB(Resource);
627 IMPL_TYPED_FOREIGN_CHILDREN(Action,saml2,m_pos_Evidence);
628 IMPL_TYPED_FOREIGN_CHILD(Evidence,saml2);
631 void marshallAttributes(DOMElement* domElement) const {
632 MARSHALL_STRING_ATTRIB(Resource,RESOURCE,NULL);
633 SubjectQueryImpl::marshallAttributes(domElement);
636 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
637 PROC_TYPED_FOREIGN_CHILD(Evidence,saml2,SAML20_NS,false);
638 PROC_TYPED_FOREIGN_CHILDREN(Action,saml2,SAML20_NS,false);
639 SubjectQueryImpl::processChildElement(childXMLObject,root);
641 void processAttribute(const DOMAttr* attribute) {
642 PROC_STRING_ATTRIB(Resource,RESOURCE,NULL);
643 SubjectQueryImpl::processAttribute(attribute);
647 class SAML_DLLLOCAL NameIDPolicyImpl : public virtual NameIDPolicy,
648 public AbstractSimpleElement,
649 public AbstractDOMCachingXMLObject,
650 public AbstractXMLObjectMarshaller,
651 public AbstractXMLObjectUnmarshaller
655 m_SPNameQualifier=NULL;
656 m_AllowCreate=XML_BOOL_NULL;
659 virtual ~NameIDPolicyImpl()
661 XMLString::release(&m_Format);
662 XMLString::release(&m_SPNameQualifier);
665 NameIDPolicyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
666 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
671 NameIDPolicyImpl(const NameIDPolicyImpl& src)
672 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
674 setFormat(src.getFormat());
675 setSPNameQualifier(src.getSPNameQualifier());
676 AllowCreate(m_AllowCreate);
679 IMPL_XMLOBJECT_CLONE(NameIDPolicy);
680 IMPL_STRING_ATTRIB(Format);
681 IMPL_STRING_ATTRIB(SPNameQualifier);
682 IMPL_BOOLEAN_ATTRIB(AllowCreate);
685 void marshallAttributes(DOMElement* domElement) const {
686 MARSHALL_STRING_ATTRIB(Format,FORMAT,NULL);
687 MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
688 MARSHALL_BOOLEAN_ATTRIB(AllowCreate,ALLOWCREATE,NULL);
691 void processAttribute(const DOMAttr* attribute) {
692 PROC_STRING_ATTRIB(Format,FORMAT,NULL);
693 PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
694 PROC_BOOLEAN_ATTRIB(AllowCreate,ALLOWCREATE,NULL);
695 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
699 class SAML_DLLLOCAL IDPEntryImpl : public virtual IDPEntry,
700 public AbstractSimpleElement,
701 public AbstractDOMCachingXMLObject,
702 public AbstractXMLObjectMarshaller,
703 public AbstractXMLObjectUnmarshaller
711 virtual ~IDPEntryImpl()
713 XMLString::release(&m_ProviderID);
714 XMLString::release(&m_Name);
715 XMLString::release(&m_Loc);
718 IDPEntryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
719 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
724 IDPEntryImpl(const IDPEntryImpl& src)
725 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
727 setProviderID(src.getProviderID());
728 setName(src.getName());
729 setLoc(src.getLoc());
732 IMPL_XMLOBJECT_CLONE(IDPEntry);
733 IMPL_STRING_ATTRIB(ProviderID);
734 IMPL_STRING_ATTRIB(Name);
735 IMPL_STRING_ATTRIB(Loc);
738 void marshallAttributes(DOMElement* domElement) const {
739 MARSHALL_STRING_ATTRIB(ProviderID,PROVIDERID,NULL);
740 MARSHALL_STRING_ATTRIB(Name,NAME,NULL);
741 MARSHALL_STRING_ATTRIB(Loc,LOC,NULL);
744 void processAttribute(const DOMAttr* attribute) {
745 PROC_STRING_ATTRIB(ProviderID,PROVIDERID,NULL);
746 PROC_STRING_ATTRIB(Name,NAME,NULL);
747 PROC_STRING_ATTRIB(Loc,LOC,NULL);
748 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
752 class SAML_DLLLOCAL IDPListImpl : public virtual IDPList,
753 public AbstractComplexElement,
754 public AbstractDOMCachingXMLObject,
755 public AbstractXMLObjectMarshaller,
756 public AbstractXMLObjectUnmarshaller
760 m_children.push_back(NULL);
761 m_pos_GetComplete=m_children.begin();
765 virtual ~IDPListImpl() { }
767 IDPListImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
768 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
773 IDPListImpl(const IDPListImpl& src)
774 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
776 if (src.getGetComplete())
777 setGetComplete(src.getGetComplete()->cloneGetComplete());
778 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
780 IDPEntry* entry=dynamic_cast<IDPEntry*>(*i);
782 getIDPEntrys().push_back(entry->cloneIDPEntry());
789 IMPL_XMLOBJECT_CLONE(IDPList);
790 IMPL_TYPED_CHILDREN(IDPEntry,m_pos_GetComplete);
791 IMPL_TYPED_CHILD(GetComplete);
794 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
795 PROC_TYPED_CHILDREN(IDPEntry,SAML20P_NS,false);
796 PROC_TYPED_CHILD(GetComplete,SAML20P_NS,false);
797 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
802 class SAML_DLLLOCAL ScopingImpl : public virtual Scoping,
803 public AbstractComplexElement,
804 public AbstractDOMCachingXMLObject,
805 public AbstractXMLObjectMarshaller,
806 public AbstractXMLObjectUnmarshaller
811 m_children.push_back(NULL);
812 m_pos_IDPList=m_children.begin();
816 virtual ~ScopingImpl() {
817 XMLString::release(&m_ProxyCount);
820 ScopingImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
821 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
826 ScopingImpl(const ScopingImpl& src)
827 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
829 setProxyCount(m_ProxyCount);
830 if (src.getIDPList())
831 setIDPList(src.getIDPList()->cloneIDPList());
832 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
834 RequesterID* reqid =dynamic_cast<RequesterID*>(*i);
836 getRequesterIDs().push_back(reqid->cloneRequesterID());
843 IMPL_XMLOBJECT_CLONE(Scoping);
844 IMPL_INTEGER_ATTRIB(ProxyCount);
845 IMPL_TYPED_CHILD(IDPList);
846 IMPL_TYPED_CHILDREN(RequesterID,m_children.end());
849 void marshallAttributes(DOMElement* domElement) const {
850 MARSHALL_INTEGER_ATTRIB(ProxyCount,PROXYCOUNT,NULL);
853 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
854 PROC_TYPED_CHILD(IDPList,SAML20P_NS,false);
855 PROC_TYPED_CHILDREN(RequesterID,SAML20P_NS,false);
856 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
859 void processAttribute(const DOMAttr* attribute) {
860 PROC_INTEGER_ATTRIB(ProxyCount,PROXYCOUNT,NULL);
861 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
865 class SAML_DLLLOCAL AuthnRequestImpl : public virtual AuthnRequest, public RequestAbstractTypeImpl
868 m_ForceAuthn=XML_BOOL_NULL;
869 m_IsPassive=XML_BOOL_NULL;
870 m_ProtocolBinding=NULL;
871 m_AssertionConsumerServiceIndex=NULL;
872 m_AssertionConsumerServiceURL=NULL;
873 m_AttributeConsumingServiceIndex=NULL;
879 m_RequestedAuthnContext=NULL;
881 m_children.push_back(NULL);
882 m_children.push_back(NULL);
883 m_children.push_back(NULL);
884 m_children.push_back(NULL);
885 m_children.push_back(NULL);
886 m_pos_Subject=m_pos_Extensions;
888 m_pos_NameIDPolicy=m_pos_Subject;
889 ++m_pos_NameIDPolicy;
890 m_pos_Conditions=m_pos_NameIDPolicy;
892 m_pos_RequestedAuthnContext=m_pos_Conditions;
893 ++m_pos_RequestedAuthnContext;
894 m_pos_Scoping=m_pos_RequestedAuthnContext;
899 virtual ~AuthnRequestImpl() {
900 XMLString::release(&m_ProtocolBinding);
901 XMLString::release(&m_AssertionConsumerServiceURL);
902 XMLString::release(&m_ProviderName);
903 XMLString::release(&m_AssertionConsumerServiceIndex);
904 XMLString::release(&m_AttributeConsumingServiceIndex);
907 AuthnRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
908 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
913 AuthnRequestImpl(const AuthnRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
916 ForceAuthn(m_ForceAuthn);
917 IsPassive(m_IsPassive);
918 setProtocolBinding(src.getProtocolBinding());
919 setAssertionConsumerServiceIndex(m_AssertionConsumerServiceIndex);
920 setAssertionConsumerServiceURL(src.getAssertionConsumerServiceURL());
921 setAttributeConsumingServiceIndex(m_AttributeConsumingServiceIndex);
922 setProviderName(src.getProviderName());
924 if (src.getSubject())
925 setSubject(src.getSubject()->cloneSubject());
926 if (src.getNameIDPolicy())
927 setNameIDPolicy(src.getNameIDPolicy()->cloneNameIDPolicy());
928 if (src.getConditions())
929 setConditions(src.getConditions()->cloneConditions());
930 if (src.getRequestedAuthnContext())
931 setRequestedAuthnContext(src.getRequestedAuthnContext()->cloneRequestedAuthnContext());
932 if (src.getScoping())
933 setScoping(src.getScoping()->cloneScoping());
936 IMPL_XMLOBJECT_CLONE(AuthnRequest);
937 RequestAbstractType* cloneRequestAbstractType() const {
938 return cloneAuthnRequest();
941 IMPL_BOOLEAN_ATTRIB(ForceAuthn);
942 IMPL_BOOLEAN_ATTRIB(IsPassive);
943 IMPL_STRING_ATTRIB(ProtocolBinding);
944 IMPL_INTEGER_ATTRIB(AssertionConsumerServiceIndex);
945 IMPL_STRING_ATTRIB(AssertionConsumerServiceURL);
946 IMPL_INTEGER_ATTRIB(AttributeConsumingServiceIndex);
947 IMPL_STRING_ATTRIB(ProviderName);
949 IMPL_TYPED_FOREIGN_CHILD(Subject,saml2);
950 IMPL_TYPED_CHILD(NameIDPolicy);
951 IMPL_TYPED_FOREIGN_CHILD(Conditions,saml2);
952 IMPL_TYPED_CHILD(RequestedAuthnContext);
953 IMPL_TYPED_CHILD(Scoping);
956 void marshallAttributes(DOMElement* domElement) const {
957 MARSHALL_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL);
958 MARSHALL_BOOLEAN_ATTRIB(IsPassive,ISPASSIVE,NULL);
959 MARSHALL_STRING_ATTRIB(ProtocolBinding,PROTOCOLBINDING,NULL);
960 MARSHALL_INTEGER_ATTRIB(AssertionConsumerServiceIndex,ASSERTIONCONSUMERSERVICEINDEX,NULL);
961 MARSHALL_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL);
962 MARSHALL_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL);
963 MARSHALL_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL);
964 RequestAbstractTypeImpl::marshallAttributes(domElement);
967 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
968 PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAML20_NS,false);
969 PROC_TYPED_CHILD(NameIDPolicy,SAML20P_NS,false);
970 PROC_TYPED_FOREIGN_CHILD(Conditions,saml2,SAML20_NS,false);
971 PROC_TYPED_CHILD(RequestedAuthnContext,SAML20P_NS,false);
972 PROC_TYPED_CHILD(Scoping,SAML20P_NS,false);
973 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
975 void processAttribute(const DOMAttr* attribute) {
976 PROC_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL);
977 PROC_BOOLEAN_ATTRIB(IsPassive,ISPASSIVE,NULL);
978 PROC_STRING_ATTRIB(ProtocolBinding,PROTOCOLBINDING,NULL);
979 PROC_INTEGER_ATTRIB(AssertionConsumerServiceIndex,ASSERTIONCONSUMERSERVICEINDEX,NULL);
980 PROC_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL);
981 PROC_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL);
982 PROC_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL);
983 RequestAbstractTypeImpl::processAttribute(attribute);
987 class SAML_DLLLOCAL StatusResponseTypeImpl : public virtual StatusResponseType,
988 public AbstractComplexElement,
989 public AbstractDOMCachingXMLObject,
990 public AbstractXMLObjectMarshaller,
991 public AbstractXMLObjectUnmarshaller
1004 m_children.push_back(NULL);
1005 m_children.push_back(NULL);
1006 m_children.push_back(NULL);
1007 m_children.push_back(NULL);
1008 m_pos_Issuer=m_children.begin();
1009 m_pos_Signature=m_pos_Issuer;
1011 m_pos_Extensions=m_pos_Signature;
1013 m_pos_Status=m_pos_Extensions;
1017 StatusResponseTypeImpl() {
1021 virtual ~StatusResponseTypeImpl() {
1022 XMLString::release(&m_ID);
1023 XMLString::release(&m_InResponseTo);
1024 XMLString::release(&m_Version);
1025 XMLString::release(&m_Destination);
1026 XMLString::release(&m_Consent);
1027 delete m_IssueInstant;
1030 StatusResponseTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1031 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1036 StatusResponseTypeImpl(const StatusResponseTypeImpl& src)
1037 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
1040 setInResponseTo(src.getInResponseTo());
1041 setVersion(src.getVersion());
1042 setIssueInstant(src.getIssueInstant());
1043 setDestination(src.getDestination());
1044 setConsent(src.getConsent());
1045 if (src.getIssuer())
1046 setIssuer(src.getIssuer()->cloneIssuer());
1047 if (src.getSignature())
1048 setSignature(src.getSignature()->cloneSignature());
1049 if (src.getExtensions())
1050 setExtensions(src.getExtensions()->cloneExtensions());
1051 if (src.getStatus())
1052 setStatus(src.getStatus()->cloneStatus());
1055 //IMPL_TYPED_CHILD(Signature);
1056 // Need customized setter.
1058 Signature* m_Signature;
1059 list<XMLObject*>::iterator m_pos_Signature;
1061 Signature* getSignature() const {
1065 void setSignature(Signature* sig) {
1066 prepareForAssignment(m_Signature,sig);
1067 *m_pos_Signature=m_Signature=sig;
1068 // Sync content reference back up.
1070 m_Signature->setContentReference(new opensaml::ContentReference(*this));
1073 IMPL_STRING_ATTRIB(Version);
1075 IMPL_STRING_ATTRIB(InResponseTo);
1076 IMPL_DATETIME_ATTRIB(IssueInstant,0);
1077 IMPL_STRING_ATTRIB(Destination);
1078 IMPL_STRING_ATTRIB(Consent);
1079 IMPL_TYPED_FOREIGN_CHILD(Issuer,saml2);
1080 IMPL_TYPED_CHILD(Extensions);
1081 IMPL_TYPED_CHILD(Status);
1084 void marshallAttributes(DOMElement* domElement) const {
1086 const_cast<StatusResponseTypeImpl*>(this)->m_Version=XMLString::transcode("2.0");
1087 MARSHALL_STRING_ATTRIB(Version,VER,NULL);
1089 const_cast<StatusResponseTypeImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
1090 MARSHALL_ID_ATTRIB(ID,ID,NULL);
1091 if (!m_IssueInstant) {
1092 const_cast<StatusResponseTypeImpl*>(this)->m_IssueInstantEpoch=time(NULL);
1093 const_cast<StatusResponseTypeImpl*>(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch);
1095 MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
1096 MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL);
1097 MARSHALL_STRING_ATTRIB(Consent,CONSENT,NULL);
1098 MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
1101 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1102 PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAML20_NS,false);
1103 PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false);
1104 PROC_TYPED_CHILD(Extensions,SAML20P_NS,false);
1105 PROC_TYPED_CHILD(Status,SAML20P_NS,false);
1106 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
1109 void processAttribute(const DOMAttr* attribute) {
1110 PROC_ID_ATTRIB(ID,ID,NULL);
1111 PROC_STRING_ATTRIB(Version,VER,NULL);
1112 PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
1113 PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
1114 PROC_STRING_ATTRIB(Destination,DESTINATION,NULL);
1115 PROC_STRING_ATTRIB(Consent,CONSENT,NULL);
1116 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
1120 class SAML_DLLLOCAL ResponseImpl : public virtual Response, public StatusResponseTypeImpl
1123 virtual ~ResponseImpl() { }
1125 ResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1126 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1128 ResponseImpl(const ResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1129 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
1131 saml2::Assertion* assertion=dynamic_cast<saml2::Assertion*>(*i);
1133 getAssertions().push_back(assertion->cloneAssertion());
1136 EncryptedAssertion* encAssertion=dynamic_cast<EncryptedAssertion*>(*i);
1138 getEncryptedAssertions().push_back(encAssertion->cloneEncryptedAssertion());
1146 IMPL_XMLOBJECT_CLONE(Response);
1147 StatusResponseType* cloneStatusResponseType() const {
1148 return cloneResponse();
1151 IMPL_TYPED_FOREIGN_CHILDREN(Assertion,saml2,m_children.end());
1152 IMPL_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,m_children.end());
1155 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1156 PROC_TYPED_FOREIGN_CHILDREN(Assertion,saml2,SAML20_NS,false);
1157 PROC_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,SAML20_NS,false);
1158 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1162 class SAML_DLLLOCAL ArtifactResolveImpl : public virtual ArtifactResolve, public RequestAbstractTypeImpl
1166 m_children.push_back(NULL);
1167 m_pos_Artifact=m_pos_Extensions;
1171 virtual ~ArtifactResolveImpl() { }
1173 ArtifactResolveImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1174 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1179 ArtifactResolveImpl(const ArtifactResolveImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1181 if(src.getArtifact())
1182 setArtifact(src.getArtifact()->cloneArtifact());
1185 IMPL_XMLOBJECT_CLONE(ArtifactResolve);
1186 RequestAbstractType* cloneRequestAbstractType() const {
1187 return cloneArtifactResolve();
1190 IMPL_TYPED_CHILD(Artifact);
1193 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1194 PROC_TYPED_CHILD(Artifact,SAML20P_NS,false);
1195 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1199 class SAML_DLLLOCAL ArtifactResponseImpl : public virtual ArtifactResponse, public StatusResponseTypeImpl
1203 m_children.push_back(NULL);
1204 m_pos_Payload=m_pos_Status;
1208 virtual ~ArtifactResponseImpl() { }
1210 ArtifactResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1211 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1216 ArtifactResponseImpl(const ArtifactResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1218 if (src.getPayload())
1219 setPayload(getPayload()->clone());
1223 IMPL_XMLOBJECT_CLONE(ArtifactResponse);
1224 StatusResponseType* cloneStatusResponseType() const {
1225 return cloneArtifactResponse();
1228 IMPL_XMLOBJECT_CHILD(Payload);
1231 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1232 // These are valid elements for the parent StatusResponseType, so don't process these.
1233 // If not one of these, then it must be the payload.
1235 ! XMLHelper::isNodeNamed(root,SAML20_NS,saml2::Issuer::LOCAL_NAME) &&
1236 ! XMLHelper::isNodeNamed(root,XMLSIG_NS,xmlsignature::Signature::LOCAL_NAME) &&
1237 ! XMLHelper::isNodeNamed(root,SAML20P_NS,saml2p::Extensions::LOCAL_NAME) &&
1238 ! XMLHelper::isNodeNamed(root,SAML20P_NS,saml2p::Status::LOCAL_NAME)
1241 setPayload(childXMLObject);
1245 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1249 class SAML_DLLLOCAL NewEncryptedIDImpl : public virtual NewEncryptedID,
1250 public AbstractComplexElement,
1251 public AbstractDOMCachingXMLObject,
1252 public AbstractXMLObjectMarshaller,
1253 public AbstractXMLObjectUnmarshaller
1256 m_EncryptedData=NULL;
1257 m_children.push_back(NULL);
1258 m_pos_EncryptedData=m_children.begin();
1262 NewEncryptedIDImpl()
1268 virtual ~NewEncryptedIDImpl() {}
1270 NewEncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1271 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1276 NewEncryptedIDImpl(const NewEncryptedIDImpl& src)
1277 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
1279 if (src.getEncryptedData())
1280 setEncryptedData(src.getEncryptedData()->cloneEncryptedData());
1281 VectorOf(xmlencryption::EncryptedKey) v=getEncryptedKeys();
1282 for (vector<xmlencryption::EncryptedKey*>::const_iterator i=src.m_EncryptedKeys.begin(); i!=src.m_EncryptedKeys.end(); i++) {
1284 v.push_back((*i)->cloneEncryptedKey());
1289 IMPL_XMLOBJECT_CLONE(NewEncryptedID);
1290 EncryptedElementType* cloneEncryptedElementType() const {
1291 return new NewEncryptedIDImpl(*this);
1294 IMPL_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption);
1295 IMPL_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,m_children.end());
1298 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1299 PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLENC_NS,false);
1300 PROC_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,XMLENC_NS,false);
1301 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
1305 class SAML_DLLLOCAL TerminateImpl : public virtual Terminate,
1306 public AbstractSimpleElement,
1307 public AbstractDOMCachingXMLObject,
1308 public AbstractXMLObjectMarshaller,
1309 public AbstractXMLObjectUnmarshaller
1312 virtual ~TerminateImpl() { }
1314 TerminateImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1315 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1317 TerminateImpl(const TerminateImpl& src)
1318 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
1321 IMPL_XMLOBJECT_CLONE(Terminate);
1324 // has no attributes or children
1327 class SAML_DLLLOCAL ManageNameIDRequestImpl : public virtual ManageNameIDRequest, public RequestAbstractTypeImpl
1333 m_NewEncryptedID=NULL;
1335 m_children.push_back(NULL);
1336 m_children.push_back(NULL);
1337 m_children.push_back(NULL);
1338 m_children.push_back(NULL);
1339 m_children.push_back(NULL);
1340 m_pos_NameID=m_pos_Extensions;
1342 m_pos_EncryptedID=m_pos_NameID;
1343 ++m_pos_EncryptedID;
1344 m_pos_NewID=m_pos_EncryptedID;
1346 m_pos_NewEncryptedID=m_pos_NewID;
1347 ++m_pos_NewEncryptedID;
1348 m_pos_Terminate=m_pos_NewEncryptedID;
1353 virtual ~ManageNameIDRequestImpl() { }
1355 ManageNameIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1356 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1361 ManageNameIDRequestImpl(const ManageNameIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1364 if (src.getNameID())
1365 setNameID(src.getNameID()->cloneNameID());
1366 if (src.getEncryptedID())
1367 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1369 setNewID(src.getNewID()->cloneNewID());
1370 if (src.getNewEncryptedID())
1371 setNewEncryptedID(src.getNewEncryptedID()->cloneNewEncryptedID());
1372 if (src.getTerminate())
1373 setTerminate(src.getTerminate()->cloneTerminate());
1377 IMPL_XMLOBJECT_CLONE(ManageNameIDRequest);
1378 RequestAbstractType* cloneRequestAbstractType() const {
1379 return cloneManageNameIDRequest();
1382 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1383 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1384 IMPL_TYPED_CHILD(NewID);
1385 IMPL_TYPED_CHILD(NewEncryptedID);
1386 IMPL_TYPED_CHILD(Terminate);
1389 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1390 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1391 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1392 PROC_TYPED_CHILD(NewID,SAML20P_NS,false);
1393 PROC_TYPED_CHILD(NewEncryptedID,SAML20P_NS,false);
1394 PROC_TYPED_CHILD(Terminate,SAML20P_NS,false);
1395 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1399 class SAML_DLLLOCAL ManageNameIDResponseImpl : public virtual ManageNameIDResponse, public StatusResponseTypeImpl
1402 virtual ~ManageNameIDResponseImpl() { }
1404 ManageNameIDResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1405 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1407 ManageNameIDResponseImpl(const ManageNameIDResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1410 IMPL_XMLOBJECT_CLONE(ManageNameIDResponse);
1411 StatusResponseType* cloneStatusResponseType() const {
1412 return cloneManageNameIDResponse();
1416 class SAML_DLLLOCAL LogoutRequestImpl : public virtual LogoutRequest, public RequestAbstractTypeImpl
1420 m_NotOnOrAfter=NULL;
1425 m_children.push_back(NULL);
1426 m_children.push_back(NULL);
1427 m_children.push_back(NULL);
1428 m_pos_BaseID=m_pos_Extensions;
1430 m_pos_NameID=m_pos_BaseID;
1432 m_pos_EncryptedID=m_pos_NameID;
1433 ++m_pos_EncryptedID;
1437 virtual ~LogoutRequestImpl() {
1438 XMLString::release(&m_Reason);
1439 delete m_NotOnOrAfter;
1442 LogoutRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1443 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1448 LogoutRequestImpl(const LogoutRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1451 setReason(src.getReason());
1452 setNotOnOrAfter(src.getNotOnOrAfter());
1454 if (src.getBaseID())
1455 setBaseID(src.getBaseID()->cloneBaseID());
1456 if (src.getNameID())
1457 setNameID(src.getNameID()->cloneNameID());
1458 if (src.getEncryptedID())
1459 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1461 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
1463 SessionIndex* si = dynamic_cast<SessionIndex*>(*i);
1465 getSessionIndexs().push_back(si->cloneSessionIndex());
1472 IMPL_XMLOBJECT_CLONE(LogoutRequest);
1473 RequestAbstractType* cloneRequestAbstractType() const {
1474 return cloneLogoutRequest();
1477 IMPL_STRING_ATTRIB(Reason);
1478 IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX);
1479 IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2);
1480 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1481 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1482 IMPL_TYPED_CHILDREN(SessionIndex,m_children.end());
1485 void marshallAttributes(DOMElement* domElement) const {
1486 MARSHALL_STRING_ATTRIB(Reason,REASON,NULL);
1487 MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
1488 RequestAbstractTypeImpl::marshallAttributes(domElement);
1491 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1492 PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAML20_NS,false);
1493 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1494 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1495 PROC_TYPED_CHILDREN(SessionIndex,SAML20P_NS,false);
1496 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1498 void processAttribute(const DOMAttr* attribute) {
1499 PROC_STRING_ATTRIB(Reason,REASON,NULL);
1500 PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
1501 RequestAbstractTypeImpl::processAttribute(attribute);
1505 class SAML_DLLLOCAL LogoutResponseImpl : public virtual LogoutResponse, public StatusResponseTypeImpl
1508 virtual ~LogoutResponseImpl() { }
1510 LogoutResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1511 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1513 LogoutResponseImpl(const LogoutResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1516 IMPL_XMLOBJECT_CLONE(LogoutResponse);
1517 StatusResponseType* cloneStatusResponseType() const {
1518 return cloneLogoutResponse();
1523 class SAML_DLLLOCAL NameIDMappingRequestImpl : public virtual NameIDMappingRequest, public RequestAbstractTypeImpl
1529 m_NameIDPolicy=NULL;
1530 m_children.push_back(NULL);
1531 m_children.push_back(NULL);
1532 m_children.push_back(NULL);
1533 m_children.push_back(NULL);
1534 m_pos_BaseID=m_pos_Extensions;
1536 m_pos_NameID=m_pos_BaseID;
1538 m_pos_EncryptedID=m_pos_NameID;
1539 ++m_pos_EncryptedID;
1540 m_pos_NameIDPolicy=m_pos_EncryptedID;
1541 ++m_pos_NameIDPolicy;
1545 virtual ~NameIDMappingRequestImpl() { }
1547 NameIDMappingRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1548 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1553 NameIDMappingRequestImpl(const NameIDMappingRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1556 if (src.getBaseID())
1557 setBaseID(src.getBaseID()->cloneBaseID());
1558 if (src.getNameID())
1559 setNameID(src.getNameID()->cloneNameID());
1560 if (src.getEncryptedID())
1561 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1562 if (src.getNameIDPolicy())
1563 setNameIDPolicy(src.getNameIDPolicy()->cloneNameIDPolicy());
1567 IMPL_XMLOBJECT_CLONE(NameIDMappingRequest);
1568 RequestAbstractType* cloneRequestAbstractType() const {
1569 return cloneNameIDMappingRequest();
1572 IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2);
1573 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1574 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1575 IMPL_TYPED_CHILD(NameIDPolicy);
1578 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1579 PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAML20_NS,false);
1580 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1581 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1582 PROC_TYPED_CHILD(NameIDPolicy,SAML20P_NS,false);
1583 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1587 class SAML_DLLLOCAL NameIDMappingResponseImpl : public virtual NameIDMappingResponse, public StatusResponseTypeImpl
1592 m_children.push_back(NULL);
1593 m_children.push_back(NULL);
1594 m_pos_NameID=m_pos_Status;
1596 m_pos_EncryptedID=m_pos_NameID;
1597 ++m_pos_EncryptedID;
1600 virtual ~NameIDMappingResponseImpl() { }
1602 NameIDMappingResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
1603 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1608 NameIDMappingResponseImpl(const NameIDMappingResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1611 if (src.getNameID())
1612 setNameID(getNameID()->cloneNameID());
1613 if (src.getEncryptedID())
1614 setEncryptedID(getEncryptedID()->cloneEncryptedID());
1618 IMPL_XMLOBJECT_CLONE(NameIDMappingResponse);
1619 StatusResponseType* cloneStatusResponseType() const {
1620 return cloneNameIDMappingResponse();
1623 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1624 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1627 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1628 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1629 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1630 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1636 #if defined (_MSC_VER)
1637 #pragma warning( pop )
1640 // Builder Implementations
1641 IMPL_XMLOBJECTBUILDER(Artifact);
1642 IMPL_XMLOBJECTBUILDER(ArtifactResolve);
1643 IMPL_XMLOBJECTBUILDER(ArtifactResponse);
1644 IMPL_XMLOBJECTBUILDER(AssertionIDRequest);
1645 IMPL_XMLOBJECTBUILDER(AttributeQuery);
1646 IMPL_XMLOBJECTBUILDER(AuthnQuery);
1647 IMPL_XMLOBJECTBUILDER(AuthnRequest);
1648 IMPL_XMLOBJECTBUILDER(AuthzDecisionQuery);
1649 IMPL_XMLOBJECTBUILDER(Extensions);
1650 IMPL_XMLOBJECTBUILDER(GetComplete);
1651 IMPL_XMLOBJECTBUILDER(IDPEntry);
1652 IMPL_XMLOBJECTBUILDER(IDPList);
1653 IMPL_XMLOBJECTBUILDER(LogoutRequest);
1654 IMPL_XMLOBJECTBUILDER(LogoutResponse);
1655 IMPL_XMLOBJECTBUILDER(ManageNameIDRequest);
1656 IMPL_XMLOBJECTBUILDER(ManageNameIDResponse);
1657 IMPL_XMLOBJECTBUILDER(NameIDMappingRequest);
1658 IMPL_XMLOBJECTBUILDER(NameIDMappingResponse);
1659 IMPL_XMLOBJECTBUILDER(NameIDPolicy);
1660 IMPL_XMLOBJECTBUILDER(NewEncryptedID);
1661 IMPL_XMLOBJECTBUILDER(NewID);
1662 IMPL_XMLOBJECTBUILDER(RequestedAuthnContext);
1663 IMPL_XMLOBJECTBUILDER(RequesterID);
1664 IMPL_XMLOBJECTBUILDER(Response);
1665 IMPL_XMLOBJECTBUILDER(Scoping);
1666 IMPL_XMLOBJECTBUILDER(SessionIndex);
1667 IMPL_XMLOBJECTBUILDER(Status);
1668 IMPL_XMLOBJECTBUILDER(StatusCode);
1669 IMPL_XMLOBJECTBUILDER(StatusDetail);
1670 IMPL_XMLOBJECTBUILDER(StatusMessage);
1671 IMPL_XMLOBJECTBUILDER(Terminate);
1673 IMPL_XMLOBJECTBUILDER(RespondTo);
1676 const XMLCh Artifact::LOCAL_NAME[] = UNICODE_LITERAL_8(A,r,t,i,f,a,c,t);
1677 const XMLCh ArtifactResolve::LOCAL_NAME[] = UNICODE_LITERAL_15(A,r,t,i,f,a,c,t,R,e,s,o,l,v,e);
1678 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);
1679 const XMLCh ArtifactResponse::LOCAL_NAME[] = UNICODE_LITERAL_16(A,r,t,i,f,a,c,t,R,e,s,p,o,n,s,e);
1680 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);
1681 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);
1682 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);
1683 const XMLCh AttributeQuery::LOCAL_NAME[] = UNICODE_LITERAL_14(A,t,t,r,i,b,u,t,e,Q,u,e,r,y);
1684 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);
1685 const XMLCh AuthnQuery::LOCAL_NAME[] = UNICODE_LITERAL_10(A,u,t,h,n,Q,u,e,r,y);
1686 const XMLCh AuthnQuery::TYPE_NAME[] = UNICODE_LITERAL_14(A,u,t,h,n,Q,u,e,r,y,T,y,p,e);
1687 const XMLCh AuthnQuery::SESSIONINDEX_ATTRIB_NAME[] = UNICODE_LITERAL_12(S,e,s,s,i,o,n,I,n,d,e,x);
1688 const XMLCh AuthnRequest::LOCAL_NAME[] = UNICODE_LITERAL_12(A,u,t,h,n,R,e,q,u,e,s,t);
1689 const XMLCh AuthnRequest::TYPE_NAME[] = UNICODE_LITERAL_16(A,u,t,h,n,R,e,q,u,e,s,t,T,y,p,e);
1690 const XMLCh AuthnRequest::FORCEAUTHN_ATTRIB_NAME[] = UNICODE_LITERAL_10(F,o,r,c,e,A,u,t,h,n);
1691 const XMLCh AuthnRequest::ISPASSIVE_ATTRIB_NAME[] = UNICODE_LITERAL_9(I,s,P,a,s,s,i,v,e);
1692 const XMLCh AuthnRequest::PROTOCOLBINDING_ATTRIB_NAME[] = UNICODE_LITERAL_15(P,r,o,t,o,c,o,l,B,i,n,d,i,n,g);
1693 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);
1694 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);
1695 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);
1696 const XMLCh AuthnRequest::PROVIDERNAME_ATTRIB_NAME[] = UNICODE_LITERAL_12(P,r,o,v,i,d,e,r,N,a,m,e);
1697 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);
1698 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);
1699 const XMLCh AuthzDecisionQuery::RESOURCE_ATTRIB_NAME[] = UNICODE_LITERAL_8(R,e,s,o,u,r,c,e);
1700 const XMLCh Extensions::LOCAL_NAME[] = UNICODE_LITERAL_10(E,x,t,e,n,s,i,o,n,s);
1701 const XMLCh Extensions::TYPE_NAME[] = UNICODE_LITERAL_14(E,x,t,e,n,s,i,o,n,s,T,y,p,e);
1702 const XMLCh GetComplete::LOCAL_NAME[] = UNICODE_LITERAL_11(G,e,t,C,o,m,p,l,e,t,e);
1703 const XMLCh IDPEntry::LOCAL_NAME[] = UNICODE_LITERAL_8(I,D,P,E,n,t,r,y);
1704 const XMLCh IDPEntry::TYPE_NAME[] = UNICODE_LITERAL_12(I,D,P,E,n,t,r,y,T,y,p,e);
1705 const XMLCh IDPEntry::PROVIDERID_ATTRIB_NAME[] = UNICODE_LITERAL_10(P,r,o,v,i,d,e,r,I,D);
1706 const XMLCh IDPEntry::NAME_ATTRIB_NAME[] = UNICODE_LITERAL_4(N,a,m,e);
1707 const XMLCh IDPEntry::LOC_ATTRIB_NAME[] = UNICODE_LITERAL_3(L,o,c);
1708 const XMLCh IDPList::LOCAL_NAME[] = UNICODE_LITERAL_7(I,D,P,L,i,s,t);
1709 const XMLCh IDPList::TYPE_NAME[] = UNICODE_LITERAL_11(I,D,P,L,i,s,t,T,y,p,e);
1710 const XMLCh LogoutRequest::LOCAL_NAME[] = UNICODE_LITERAL_13(L,o,g,o,u,t,R,e,q,u,e,s,t);
1711 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);
1712 const XMLCh LogoutRequest::REASON_ATTRIB_NAME[] = UNICODE_LITERAL_6(R,e,a,s,o,n);
1713 const XMLCh LogoutRequest::NOTONORAFTER_ATTRIB_NAME[] = UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r);
1714 const XMLCh LogoutResponse::LOCAL_NAME[] = UNICODE_LITERAL_14(L,o,g,o,u,t,R,e,s,p,o,n,s,e);
1715 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);
1716 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);
1717 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);
1718 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);
1719 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);
1720 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);
1721 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);
1722 const XMLCh NameIDPolicy::LOCAL_NAME[] = UNICODE_LITERAL_12(N,a,m,e,I,D,P,o,l,i,c,y);
1723 const XMLCh NameIDPolicy::TYPE_NAME[] = UNICODE_LITERAL_16(N,a,m,e,I,D,P,o,l,i,c,y,T,y,p,e);
1724 const XMLCh NameIDPolicy::FORMAT_ATTRIB_NAME[] = UNICODE_LITERAL_6(F,o,r,m,a,t);
1725 const XMLCh NameIDPolicy::SPNAMEQUALIFIER_ATTRIB_NAME[] = UNICODE_LITERAL_15(S,P,N,a,m,e,Q,u,a,l,i,f,i,e,r);
1726 const XMLCh NameIDPolicy::ALLOWCREATE_ATTRIB_NAME[] = UNICODE_LITERAL_11(A,l,l,o,w,C,r,e,a,t,e);
1727 const XMLCh NewEncryptedID::LOCAL_NAME[] = UNICODE_LITERAL_14(N,e,w,E,n,c,r,y,p,t,e,d,I,D);
1728 const XMLCh NewID::LOCAL_NAME[] = UNICODE_LITERAL_5(N,e,w,I,D);
1729 const XMLCh RequesterID::LOCAL_NAME[] = UNICODE_LITERAL_11(R,e,q,u,e,s,t,e,r,I,D);
1730 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);
1731 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);
1732 const XMLCh RequestedAuthnContext::COMPARISON_ATTRIB_NAME[] = UNICODE_LITERAL_10(C,o,m,p,a,r,i,s,o,n);
1733 const XMLCh RequestedAuthnContext::COMPARISON_EXACT[] = UNICODE_LITERAL_5(e,x,a,c,t);
1734 const XMLCh RequestedAuthnContext::COMPARISON_MINIMUM[] = UNICODE_LITERAL_7(m,i,n,i,m,u,m);
1735 const XMLCh RequestedAuthnContext::COMPARISON_MAXIMUM[] = UNICODE_LITERAL_7(m,a,x,i,m,u,m);
1736 const XMLCh RequestedAuthnContext::COMPARISON_BETTER[] = UNICODE_LITERAL_6(b,e,t,t,e,r);
1737 const XMLCh RequestAbstractType::LOCAL_NAME[] = {chNull};
1738 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);
1739 const XMLCh RequestAbstractType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D);
1740 const XMLCh RequestAbstractType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n);
1741 const XMLCh RequestAbstractType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t);
1742 const XMLCh RequestAbstractType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n);
1743 const XMLCh RequestAbstractType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t);
1744 const XMLCh RespondTo::LOCAL_NAME[] = UNICODE_LITERAL_9(R,e,s,p,o,n,d,T,o);
1745 const XMLCh Response::LOCAL_NAME[] = UNICODE_LITERAL_8(R,e,s,p,o,n,s,e);
1746 const XMLCh Response::TYPE_NAME[] = UNICODE_LITERAL_12(R,e,s,p,o,n,s,e,T,y,p,e);
1747 const XMLCh Scoping::LOCAL_NAME[] = UNICODE_LITERAL_7(S,c,o,p,i,n,g);
1748 const XMLCh Scoping::TYPE_NAME[] = UNICODE_LITERAL_11(S,c,o,p,i,n,g,T,y,p,e);
1749 const XMLCh Scoping::PROXYCOUNT_ATTRIB_NAME[] = UNICODE_LITERAL_10(P,r,o,x,y,C,o,u,n,t);
1750 const XMLCh SessionIndex::LOCAL_NAME[] = UNICODE_LITERAL_12(S,e,s,s,i,o,n,I,n,d,e,x);
1751 const XMLCh Status::LOCAL_NAME[] = UNICODE_LITERAL_6(S,t,a,t,u,s);
1752 const XMLCh Status::TYPE_NAME[] = UNICODE_LITERAL_10(S,t,a,t,u,s,T,y,p,e);
1753 const XMLCh StatusCode::LOCAL_NAME[] = UNICODE_LITERAL_10(S,t,a,t,u,s,C,o,d,e);
1754 const XMLCh StatusCode::TYPE_NAME[] = UNICODE_LITERAL_14(S,t,a,t,u,s,C,o,d,e,T,y,p,e);
1755 const XMLCh StatusCode::VALUE_ATTRIB_NAME[] = UNICODE_LITERAL_5(V,a,l,u,e);
1756 const XMLCh StatusDetail::LOCAL_NAME[] = UNICODE_LITERAL_12(S,t,a,t,u,s,D,e,t,a,i,l);
1757 const XMLCh StatusDetail::TYPE_NAME[] = UNICODE_LITERAL_16(S,t,a,t,u,s,D,e,t,a,i,l,T,y,p,e);
1758 const XMLCh StatusMessage::LOCAL_NAME[] = UNICODE_LITERAL_13(S,t,a,t,u,s,M,e,s,s,a,g,e);
1759 const XMLCh StatusResponseType::LOCAL_NAME[] = {chNull};
1760 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);
1761 const XMLCh StatusResponseType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D);
1762 const XMLCh StatusResponseType::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o);
1763 const XMLCh StatusResponseType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n);
1764 const XMLCh StatusResponseType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t);
1765 const XMLCh StatusResponseType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n);
1766 const XMLCh StatusResponseType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t);
1767 const XMLCh SubjectQuery::LOCAL_NAME[] = UNICODE_LITERAL_12(S,u,b,j,e,c,t,Q,u,e,r,y);
1768 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);
1769 const XMLCh Terminate::LOCAL_NAME[] = UNICODE_LITERAL_9(T,e,r,m,i,n,a,t,e);
1770 const XMLCh Terminate::TYPE_NAME[] = UNICODE_LITERAL_13(T,e,r,m,i,n,a,t,e,T,y,p,e);
1772 // Unicode literals: LogoutRequest element, Reason attribute
1773 const XMLCh LogoutRequest::REASON_USER[] = // urn:oasis:names:tc:SAML:2.0:logout:user
1774 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1775 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1776 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1777 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1778 chLatin_u, chLatin_s, chLatin_e, chLatin_r, chNull
1781 const XMLCh LogoutRequest::REASON_ADMIN[] = // urn:oasis:names:tc:SAML:2.0:logout:admin
1782 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1783 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1784 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1785 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1786 chLatin_a, chLatin_d, chLatin_m, chLatin_i, chLatin_n, chNull
1790 const XMLCh LogoutRequest::REASON_GLOBAL_TIMEOUT[] = // urn:oasis:names:tc:SAML:2.0:logout:global-timeout
1791 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1792 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1793 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1794 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1795 chLatin_g, chLatin_l, chLatin_o, chLatin_b, chLatin_a, chLatin_l,
1796 chDash, chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull
1800 const XMLCh LogoutRequest::REASON_SP_TIMEOUT[] = // urn:oasis:names:tc:SAML:2.0:logout:sp-timeout
1801 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1802 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1803 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1804 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1805 chLatin_s, chLatin_p, chDash, chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull
1809 // Unicode literals, StatusCode Value
1810 const XMLCh StatusCode::SUCCESS[] = // urn:oasis:names:tc:SAML:2.0:status:Success
1811 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1812 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1813 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1814 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1815 chLatin_S, chLatin_u, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chNull
1818 const XMLCh StatusCode::REQUESTER[] = // urn:oasis:names:tc:SAML:2.0:status:Requester
1819 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1820 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1821 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1822 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1823 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t, chLatin_e, chLatin_r, chNull
1826 const XMLCh StatusCode::RESPONDER[] = // urn:oasis:names:tc:SAML:2.0:status:Responder
1827 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1828 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1829 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1830 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1831 chLatin_R, chLatin_e, chLatin_s, chLatin_p, chLatin_o, chLatin_n, chLatin_d, chLatin_e, chLatin_r, chNull
1834 const XMLCh StatusCode::VERSION_MISMATCH[] = // urn:oasis:names:tc:SAML:2.0:status:VersionMismatch
1835 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1836 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1837 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1838 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1839 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1840 chLatin_M, chLatin_i, chLatin_s, chLatin_m, chLatin_a, chLatin_t, chLatin_c, chLatin_h, chNull
1843 const XMLCh StatusCode::AUTHN_FAILED[] = // urn:oasis:names:tc:SAML:2.0:status:AuthnFailed
1844 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1845 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1846 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1847 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1848 chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_n,
1849 chLatin_F, chLatin_a, chLatin_i, chLatin_l, chLatin_e, chLatin_d, chNull
1852 const XMLCh StatusCode::INVALID_ATTR_NAME_OR_VALUE[] = // urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue
1853 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1854 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1855 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1856 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1857 chLatin_I, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d,
1858 chLatin_A, chLatin_t, chLatin_t, chLatin_r, chLatin_N, chLatin_a, chLatin_m, chLatin_e,
1859 chLatin_O, chLatin_r, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1862 const XMLCh StatusCode::INVALID_NAMEID_POLICY[] = // urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy
1863 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1864 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1865 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1866 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1867 chLatin_I, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d,
1868 chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_I, chLatin_D,
1869 chLatin_P, chLatin_o, chLatin_l, chLatin_i, chLatin_c, chLatin_y, chNull
1872 const XMLCh StatusCode::NO_AUTHN_CONTEXT[] = // urn:oasis:names:tc:SAML:2.0:status:NoAuthnContext
1873 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1874 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1875 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1876 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1877 chLatin_N, chLatin_o, chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_n,
1878 chLatin_C, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chNull
1881 const XMLCh StatusCode::NO_AVAILABLE_IDP[] = // urn:oasis:names:tc:SAML:2.0:status:NoAvailableIDP
1882 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1883 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1884 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1885 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1886 chLatin_N, chLatin_o, chLatin_A, chLatin_v, chLatin_a, chLatin_i, chLatin_l, chLatin_a, chLatin_b, chLatin_l, chLatin_e,
1887 chLatin_I, chLatin_D, chLatin_P, chNull
1890 const XMLCh StatusCode::NO_PASSIVE[] = // urn:oasis:names:tc:SAML:2.0:status:NoPassive
1891 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1892 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1893 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1894 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1895 chLatin_N, chLatin_o, chLatin_P, chLatin_a, chLatin_s, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull
1898 const XMLCh StatusCode::NO_SUPPORTED_IDP[] = // urn:oasis:names:tc:SAML:2.0:status:NoSupportedIDP
1899 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1900 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1901 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1902 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1903 chLatin_N, chLatin_o, chLatin_S, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d,
1904 chLatin_I, chLatin_D, chLatin_P, chNull
1907 const XMLCh StatusCode::PARTIAL_LOGOUT[] = // urn:oasis:names:tc:SAML:2.0:status:PartialLogout
1908 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1909 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1910 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1911 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1912 chLatin_P, chLatin_a, chLatin_r, chLatin_t, chLatin_i, chLatin_a, chLatin_l,
1913 chLatin_L, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chNull
1916 const XMLCh StatusCode::PROXY_COUNT_EXCEEDED[] = // urn:oasis:names:tc:SAML:2.0:status:ProxyCountExceeded
1917 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1918 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1919 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1920 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1921 chLatin_P, chLatin_r, chLatin_o, chLatin_x, chLatin_y, chLatin_C, chLatin_o, chLatin_u, chLatin_n, chLatin_t,
1922 chLatin_E, chLatin_x, chLatin_c, chLatin_e, chLatin_e, chLatin_d, chLatin_e, chLatin_d, chNull
1925 const XMLCh StatusCode::REQUEST_DENIED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestDenied
1926 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1927 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1928 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1929 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1930 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1931 chLatin_D, chLatin_e, chLatin_n, chLatin_i, chLatin_e, chLatin_d, chNull
1934 const XMLCh StatusCode::REQUEST_UNSUPPORTED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported
1935 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1936 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1937 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1938 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1939 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1940 chLatin_U, chLatin_n, chLatin_s, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d, chNull
1943 const XMLCh StatusCode::REQUEST_VERSION_DEPRECATED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionDeprecated
1944 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1945 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1946 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1947 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1948 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1949 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1950 chLatin_D, chLatin_e, chLatin_p, chLatin_r, chLatin_e, chLatin_c, chLatin_a, chLatin_t, chLatin_e, chLatin_d, chNull
1953 const XMLCh StatusCode::REQUEST_VERSION_TOO_HIGH[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionTooHigh
1954 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1955 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1956 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1957 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1958 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1959 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1960 chLatin_T, chLatin_o, chLatin_o, chLatin_H, chLatin_i, chLatin_g, chLatin_h, chNull
1963 const XMLCh StatusCode::REQUEST_VERSION_TOO_LOW[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionTooLow
1964 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1965 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1966 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1967 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1968 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1969 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1970 chLatin_T, chLatin_o, chLatin_o, chLatin_L, chLatin_o, chLatin_w, chNull
1973 const XMLCh StatusCode::RESOURCE_NOT_RECOGNIZED[] = // urn:oasis:names:tc:SAML:2.0:status:ResourceNotRecognized
1974 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1975 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1976 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1977 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1978 chLatin_R, chLatin_e, chLatin_s, chLatin_o, chLatin_u, chLatin_r, chLatin_c, chLatin_e,
1979 chLatin_N, chLatin_o, chLatin_t,
1980 chLatin_R, chLatin_e, chLatin_c, chLatin_o, chLatin_g, chLatin_n, chLatin_i, chLatin_z, chLatin_e, chLatin_d, chNull
1983 const XMLCh StatusCode::TOO_MANY_RESPONSES[] = // urn:oasis:names:tc:SAML:2.0:status:TooManyResponses
1984 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1985 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1986 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1987 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1988 chLatin_T, chLatin_o, chLatin_o, chLatin_M, chLatin_a, chLatin_n, chLatin_y,
1989 chLatin_R, chLatin_e, chLatin_s, chLatin_p, chLatin_o, chLatin_n, chLatin_s, chLatin_e, chLatin_s, chNull
1992 const XMLCh StatusCode::UNKNOWN_ATTR_PROFILE[] = // urn:oasis:names:tc:SAML:2.0:status:UnknownAttrProfile
1993 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1994 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1995 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1996 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1997 chLatin_U, chLatin_n, chLatin_k, chLatin_n, chLatin_o, chLatin_w, chLatin_n,
1998 chLatin_A, chLatin_t, chLatin_t, chLatin_r,
1999 chLatin_P, chLatin_r, chLatin_o, chLatin_f, chLatin_i, chLatin_l, chLatin_e, chNull
2002 const XMLCh StatusCode::UNKNOWN_PRINCIPAL[] = // urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal
2003 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2004 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2005 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2006 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2007 chLatin_U, chLatin_n, chLatin_k, chLatin_n, chLatin_o, chLatin_w, chLatin_n,
2008 chLatin_P, chLatin_r, chLatin_i, chLatin_n, chLatin_c, chLatin_i, chLatin_p, chLatin_a, chLatin_l, chNull
2011 const XMLCh StatusCode::UNSUPPORTED_BINDING[] = // urn:oasis:names:tc:SAML:2.0:status:UnsupportedBinding
2012 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2013 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2014 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2015 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2016 chLatin_U, chLatin_n, chLatin_s, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d,
2017 chLatin_B, chLatin_i, chLatin_n, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chNull