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;
47 using xmlconstants::XMLSIG_NS;
48 using xmlconstants::XMLENC_NS;
49 using xmlconstants::XML_BOOL_NULL;
50 using samlconstants::SAML20_NS;
51 using samlconstants::SAML20P_NS;
53 #if defined (_MSC_VER)
54 #pragma warning( push )
55 #pragma warning( disable : 4250 4251 )
61 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,Artifact);
62 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,GetComplete);
63 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,NewID);
64 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,RequesterID);
65 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,SessionIndex);
66 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,StatusMessage);
68 DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,RespondTo);
70 //TODO need unit test for this, using objects from another namespace
71 class SAML_DLLLOCAL ExtensionsImpl : public virtual Extensions,
72 public AbstractElementProxy,
73 public AbstractDOMCachingXMLObject,
74 public AbstractXMLObjectMarshaller,
75 public AbstractXMLObjectUnmarshaller
78 virtual ~ExtensionsImpl() {}
80 ExtensionsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
81 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
84 ExtensionsImpl(const ExtensionsImpl& src)
85 : AbstractXMLObject(src), AbstractElementProxy(src), AbstractDOMCachingXMLObject(src) {
86 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
88 getXMLObjects().push_back((*i)->clone());
93 IMPL_XMLOBJECT_CLONE(Extensions);
96 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
98 const XMLCh* nsURI=root->getNamespaceURI();
99 if (!XMLString::equals(nsURI,SAML20P_NS) && nsURI && *nsURI) {
100 getXMLObjects().push_back(childXMLObject);
104 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
108 class SAML_DLLLOCAL StatusCodeImpl : public virtual StatusCode,
109 public AbstractComplexElement,
110 public AbstractDOMCachingXMLObject,
111 public AbstractXMLObjectMarshaller,
112 public AbstractXMLObjectUnmarshaller
117 m_children.push_back(NULL);
118 m_pos_StatusCode=m_children.begin();
121 virtual ~StatusCodeImpl() {}
123 StatusCodeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
124 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
129 StatusCodeImpl(const StatusCodeImpl& src)
130 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
132 setValue(src.getValue());
133 if (src.getStatusCode())
134 setStatusCode(src.getStatusCode()->cloneStatusCode());
137 IMPL_XMLOBJECT_CLONE(StatusCode);
138 IMPL_STRING_ATTRIB(Value);
139 IMPL_TYPED_CHILD(StatusCode);
142 void marshallAttributes(DOMElement* domElement) const {
143 MARSHALL_STRING_ATTRIB(Value,VALUE,NULL);
146 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
147 PROC_TYPED_CHILD(StatusCode,SAML20P_NS,false);
148 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
151 void processAttribute(const DOMAttr* attribute) {
152 PROC_STRING_ATTRIB(Value,VALUE,NULL);
153 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
157 //TODO need unit tests for non-SAML namespace children
158 class SAML_DLLLOCAL StatusDetailImpl : public virtual StatusDetail,
159 public AbstractComplexElement,
160 public AbstractDOMCachingXMLObject,
161 public AbstractXMLObjectMarshaller,
162 public AbstractXMLObjectUnmarshaller
165 virtual ~StatusDetailImpl() {}
167 StatusDetailImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
168 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
170 StatusDetailImpl(const StatusDetailImpl& src)
171 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
172 VectorOf(XMLObject) v=getDetails();
173 for (vector<XMLObject*>::const_iterator i=src.m_Details.begin(); i!=src.m_Details.end(); i++) {
175 v.push_back((*i)->clone());
180 IMPL_XMLOBJECT_CLONE(StatusDetail);
181 IMPL_XMLOBJECT_CHILDREN(Detail,m_children.end());
184 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
185 getDetails().push_back(childXMLObject);
186 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
191 class SAML_DLLLOCAL StatusImpl : public virtual Status,
192 public AbstractComplexElement,
193 public AbstractDOMCachingXMLObject,
194 public AbstractXMLObjectMarshaller,
195 public AbstractXMLObjectUnmarshaller
199 m_StatusMessage=NULL;
201 m_children.push_back(NULL);
202 m_children.push_back(NULL);
203 m_children.push_back(NULL);
204 m_pos_StatusCode=m_children.begin();
205 m_pos_StatusMessage=m_pos_StatusCode;
206 ++m_pos_StatusMessage;
207 m_pos_StatusDetail=m_pos_StatusMessage;
208 ++m_pos_StatusDetail;
211 virtual ~StatusImpl() { }
213 StatusImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
214 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
218 StatusImpl(const StatusImpl& src)
219 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
221 if (src.getStatusCode())
222 setStatusCode(src.getStatusCode()->cloneStatusCode());
223 if (src.getStatusMessage())
224 setStatusMessage(src.getStatusMessage()->cloneStatusMessage());
225 if (src.getStatusDetail())
226 setStatusDetail(src.getStatusDetail()->cloneStatusDetail());
229 IMPL_XMLOBJECT_CLONE(Status);
230 IMPL_TYPED_CHILD(StatusCode);
231 IMPL_TYPED_CHILD(StatusMessage);
232 IMPL_TYPED_CHILD(StatusDetail);
236 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
237 PROC_TYPED_CHILD(StatusCode,SAML20P_NS,false);
238 PROC_TYPED_CHILD(StatusMessage,SAML20P_NS,false);
239 PROC_TYPED_CHILD(StatusDetail,SAML20P_NS,false);
240 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
246 class SAML_DLLLOCAL RequestAbstractTypeImpl : public virtual RequestAbstractType,
247 public AbstractComplexElement,
248 public AbstractDOMCachingXMLObject,
249 public AbstractXMLObjectMarshaller,
250 public AbstractXMLObjectUnmarshaller
261 m_children.push_back(NULL);
262 m_children.push_back(NULL);
263 m_children.push_back(NULL);
264 m_pos_Issuer=m_children.begin();
265 m_pos_Signature=m_pos_Issuer;
267 m_pos_Extensions=m_pos_Signature;
271 RequestAbstractTypeImpl() {
275 virtual ~RequestAbstractTypeImpl() {
276 XMLString::release(&m_ID);
277 XMLString::release(&m_Version);
278 XMLString::release(&m_Destination);
279 XMLString::release(&m_Consent);
280 delete m_IssueInstant;
283 RequestAbstractTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
284 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
288 RequestAbstractTypeImpl(const RequestAbstractTypeImpl& src)
289 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
292 setVersion(src.getVersion());
293 setIssueInstant(src.getIssueInstant());
294 setDestination(src.getDestination());
295 setConsent(src.getConsent());
297 setIssuer(src.getIssuer()->cloneIssuer());
298 if (src.getSignature())
299 setSignature(src.getSignature()->cloneSignature());
300 if (src.getExtensions())
301 setExtensions(src.getExtensions()->cloneExtensions());
304 //IMPL_TYPED_CHILD(Signature);
305 // Need customized setter.
307 Signature* m_Signature;
308 list<XMLObject*>::iterator m_pos_Signature;
310 Signature* getSignature() const {
314 void setSignature(Signature* sig) {
315 prepareForAssignment(m_Signature,sig);
316 *m_pos_Signature=m_Signature=sig;
317 // Sync content reference back up.
319 m_Signature->setContentReference(new opensaml::ContentReference(*this));
322 IMPL_STRING_ATTRIB(Version);
324 IMPL_DATETIME_ATTRIB(IssueInstant,0);
325 IMPL_STRING_ATTRIB(Destination);
326 IMPL_STRING_ATTRIB(Consent);
327 IMPL_TYPED_FOREIGN_CHILD(Issuer,saml2);
328 IMPL_TYPED_CHILD(Extensions);
331 void marshallAttributes(DOMElement* domElement) const {
333 const_cast<RequestAbstractTypeImpl*>(this)->m_Version=XMLString::transcode("2.0");
334 MARSHALL_STRING_ATTRIB(Version,VER,NULL);
336 const_cast<RequestAbstractTypeImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
337 MARSHALL_ID_ATTRIB(ID,ID,NULL);
338 if (!m_IssueInstant) {
339 const_cast<RequestAbstractTypeImpl*>(this)->m_IssueInstantEpoch=time(NULL);
340 const_cast<RequestAbstractTypeImpl*>(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch);
342 MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
343 MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL);
344 MARSHALL_STRING_ATTRIB(Consent,CONSENT,NULL);
347 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
348 PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAML20_NS,false);
349 PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false);
350 PROC_TYPED_CHILD(Extensions,SAML20P_NS,false);
351 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
354 void processAttribute(const DOMAttr* attribute) {
355 PROC_ID_ATTRIB(ID,ID,NULL);
356 PROC_STRING_ATTRIB(Version,VER,NULL);
357 PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
358 PROC_STRING_ATTRIB(Destination,DESTINATION,NULL);
359 PROC_STRING_ATTRIB(Consent,CONSENT,NULL);
360 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
365 class SAML_DLLLOCAL AssertionIDRequestImpl : public virtual AssertionIDRequest, public RequestAbstractTypeImpl
368 virtual ~AssertionIDRequestImpl() { }
370 AssertionIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
371 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
373 AssertionIDRequestImpl(const AssertionIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
374 VectorOf(AssertionIDRef) v=getAssertionIDRefs();
375 for (vector<AssertionIDRef*>::const_iterator i=src.m_AssertionIDRefs.begin(); i!=src.m_AssertionIDRefs.end(); i++) {
377 v.push_back((*i)->cloneAssertionIDRef());
383 IMPL_XMLOBJECT_CLONE(AssertionIDRequest);
384 RequestAbstractType* cloneRequestAbstractType() const {
385 return cloneAssertionIDRequest();
388 IMPL_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,m_children.end());
391 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
392 PROC_TYPED_FOREIGN_CHILDREN(AssertionIDRef,saml2,SAML20_NS,false);
393 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
397 class SAML_DLLLOCAL SubjectQueryImpl : public virtual SubjectQuery, public RequestAbstractTypeImpl
402 m_children.push_back(NULL);
403 m_pos_Subject = m_pos_Extensions;
411 virtual ~SubjectQueryImpl() { }
413 SubjectQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
414 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
419 SubjectQueryImpl(const SubjectQueryImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
421 if (src.getSubject())
422 setSubject(src.getSubject()->cloneSubject());
425 IMPL_TYPED_FOREIGN_CHILD(Subject,saml2);
428 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
429 PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAML20_NS,false);
430 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
435 class SAML_DLLLOCAL RequestedAuthnContextImpl : public virtual RequestedAuthnContext,
436 public AbstractComplexElement,
437 public AbstractDOMCachingXMLObject,
438 public AbstractXMLObjectMarshaller,
439 public AbstractXMLObjectUnmarshaller
445 virtual ~RequestedAuthnContextImpl() {
446 XMLString::release(&m_Comparison);
449 RequestedAuthnContextImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
450 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
454 RequestedAuthnContextImpl(const RequestedAuthnContextImpl& src)
455 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
457 setComparison(src.getComparison());
458 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
460 AuthnContextClassRef* classref=dynamic_cast<AuthnContextClassRef*>(*i);
462 getAuthnContextClassRefs().push_back(classref->cloneAuthnContextClassRef());
466 AuthnContextDeclRef* declref=dynamic_cast<AuthnContextDeclRef*>(*i);
468 getAuthnContextDeclRefs().push_back(declref->cloneAuthnContextDeclRef());
475 IMPL_XMLOBJECT_CLONE(RequestedAuthnContext);
476 IMPL_STRING_ATTRIB(Comparison);
477 IMPL_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,m_children.end());
478 IMPL_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,m_children.end());
481 void marshallAttributes(DOMElement* domElement) const {
482 MARSHALL_STRING_ATTRIB(Comparison,COMPARISON,NULL);
485 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
486 PROC_TYPED_FOREIGN_CHILDREN(AuthnContextClassRef,saml2,SAML20_NS,false);
487 PROC_TYPED_FOREIGN_CHILDREN(AuthnContextDeclRef,saml2,SAML20_NS,false);
488 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
491 void processAttribute(const DOMAttr* attribute) {
492 PROC_STRING_ATTRIB(Comparison,COMPARISON,NULL);
493 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
498 class SAML_DLLLOCAL AuthnQueryImpl : public virtual AuthnQuery, public SubjectQueryImpl
502 m_RequestedAuthnContext=NULL;
503 m_children.push_back(NULL);
504 m_pos_RequestedAuthnContext = m_pos_Subject;
505 ++m_pos_RequestedAuthnContext;
509 virtual ~AuthnQueryImpl() {
510 XMLString::release(&m_SessionIndex);
513 AuthnQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
514 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
519 AuthnQueryImpl(const AuthnQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
521 setSessionIndex(src.getSessionIndex());
522 if (src.getRequestedAuthnContext())
523 setRequestedAuthnContext(src.getRequestedAuthnContext()->cloneRequestedAuthnContext());
526 IMPL_XMLOBJECT_CLONE(AuthnQuery);
527 SubjectQuery* cloneSubjectQuery() const {
528 return cloneAuthnQuery();
530 RequestAbstractType* cloneRequestAbstractType() const {
531 return cloneAuthnQuery();
534 IMPL_STRING_ATTRIB(SessionIndex);
535 IMPL_TYPED_CHILD(RequestedAuthnContext);
538 void marshallAttributes(DOMElement* domElement) const {
539 MARSHALL_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
540 SubjectQueryImpl::marshallAttributes(domElement);
543 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
544 PROC_TYPED_CHILD(RequestedAuthnContext,SAML20P_NS,false);
545 SubjectQueryImpl::processChildElement(childXMLObject,root);
547 void processAttribute(const DOMAttr* attribute) {
548 PROC_STRING_ATTRIB(SessionIndex,SESSIONINDEX,NULL);
549 SubjectQueryImpl::processAttribute(attribute);
553 class SAML_DLLLOCAL AttributeQueryImpl : public virtual AttributeQuery, public SubjectQueryImpl
556 virtual ~AttributeQueryImpl() { }
558 AttributeQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
559 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
561 AttributeQueryImpl(const AttributeQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
562 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
564 Attribute* attrib=dynamic_cast<Attribute*>(*i);
566 getAttributes().push_back(attrib->cloneAttribute());
574 IMPL_XMLOBJECT_CLONE(AttributeQuery);
575 SubjectQuery* cloneSubjectQuery() const {
576 return cloneAttributeQuery();
578 RequestAbstractType* cloneRequestAbstractType() const {
579 return cloneAttributeQuery();
582 IMPL_TYPED_FOREIGN_CHILDREN(Attribute,saml2,m_children.end());
585 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
586 PROC_TYPED_FOREIGN_CHILDREN(Attribute,saml2,SAML20_NS,false);
587 SubjectQueryImpl::processChildElement(childXMLObject,root);
591 class SAML_DLLLOCAL AuthzDecisionQueryImpl : public virtual AuthzDecisionQuery, public SubjectQueryImpl
596 m_children.push_back(NULL);
597 m_pos_Evidence=m_pos_Subject;
602 virtual ~AuthzDecisionQueryImpl() {
603 XMLString::release(&m_Resource);
606 AuthzDecisionQueryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
607 : AbstractXMLObject(nsURI, localName, prefix, schemaType) {
611 AuthzDecisionQueryImpl(const AuthzDecisionQueryImpl& src) : AbstractXMLObject(src), SubjectQueryImpl(src) {
613 setResource(src.getResource());
614 if (src.getEvidence())
615 setEvidence(src.getEvidence()->cloneEvidence());
616 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
618 Action* action=dynamic_cast<Action*>(*i);
620 getActions().push_back(action->cloneAction());
627 IMPL_XMLOBJECT_CLONE(AuthzDecisionQuery);
628 SubjectQuery* cloneSubjectQuery() const {
629 return cloneAuthzDecisionQuery();
631 RequestAbstractType* cloneRequestAbstractType() const {
632 return cloneAuthzDecisionQuery();
635 IMPL_STRING_ATTRIB(Resource);
636 IMPL_TYPED_FOREIGN_CHILDREN(Action,saml2,m_pos_Evidence);
637 IMPL_TYPED_FOREIGN_CHILD(Evidence,saml2);
640 void marshallAttributes(DOMElement* domElement) const {
641 MARSHALL_STRING_ATTRIB(Resource,RESOURCE,NULL);
642 SubjectQueryImpl::marshallAttributes(domElement);
645 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
646 PROC_TYPED_FOREIGN_CHILD(Evidence,saml2,SAML20_NS,false);
647 PROC_TYPED_FOREIGN_CHILDREN(Action,saml2,SAML20_NS,false);
648 SubjectQueryImpl::processChildElement(childXMLObject,root);
650 void processAttribute(const DOMAttr* attribute) {
651 PROC_STRING_ATTRIB(Resource,RESOURCE,NULL);
652 SubjectQueryImpl::processAttribute(attribute);
656 class SAML_DLLLOCAL NameIDPolicyImpl : public virtual NameIDPolicy,
657 public AbstractSimpleElement,
658 public AbstractDOMCachingXMLObject,
659 public AbstractXMLObjectMarshaller,
660 public AbstractXMLObjectUnmarshaller
664 m_SPNameQualifier=NULL;
665 m_AllowCreate=XML_BOOL_NULL;
668 virtual ~NameIDPolicyImpl()
670 XMLString::release(&m_Format);
671 XMLString::release(&m_SPNameQualifier);
674 NameIDPolicyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
675 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
680 NameIDPolicyImpl(const NameIDPolicyImpl& src)
681 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
683 setFormat(src.getFormat());
684 setSPNameQualifier(src.getSPNameQualifier());
685 AllowCreate(m_AllowCreate);
688 IMPL_XMLOBJECT_CLONE(NameIDPolicy);
689 IMPL_STRING_ATTRIB(Format);
690 IMPL_STRING_ATTRIB(SPNameQualifier);
691 IMPL_BOOLEAN_ATTRIB(AllowCreate);
694 void marshallAttributes(DOMElement* domElement) const {
695 MARSHALL_STRING_ATTRIB(Format,FORMAT,NULL);
696 MARSHALL_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
697 MARSHALL_BOOLEAN_ATTRIB(AllowCreate,ALLOWCREATE,NULL);
700 void processAttribute(const DOMAttr* attribute) {
701 PROC_STRING_ATTRIB(Format,FORMAT,NULL);
702 PROC_STRING_ATTRIB(SPNameQualifier,SPNAMEQUALIFIER,NULL);
703 PROC_BOOLEAN_ATTRIB(AllowCreate,ALLOWCREATE,NULL);
704 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
708 class SAML_DLLLOCAL IDPEntryImpl : public virtual IDPEntry,
709 public AbstractSimpleElement,
710 public AbstractDOMCachingXMLObject,
711 public AbstractXMLObjectMarshaller,
712 public AbstractXMLObjectUnmarshaller
720 virtual ~IDPEntryImpl()
722 XMLString::release(&m_ProviderID);
723 XMLString::release(&m_Name);
724 XMLString::release(&m_Loc);
727 IDPEntryImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
728 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
733 IDPEntryImpl(const IDPEntryImpl& src)
734 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
736 setProviderID(src.getProviderID());
737 setName(src.getName());
738 setLoc(src.getLoc());
741 IMPL_XMLOBJECT_CLONE(IDPEntry);
742 IMPL_STRING_ATTRIB(ProviderID);
743 IMPL_STRING_ATTRIB(Name);
744 IMPL_STRING_ATTRIB(Loc);
747 void marshallAttributes(DOMElement* domElement) const {
748 MARSHALL_STRING_ATTRIB(ProviderID,PROVIDERID,NULL);
749 MARSHALL_STRING_ATTRIB(Name,NAME,NULL);
750 MARSHALL_STRING_ATTRIB(Loc,LOC,NULL);
753 void processAttribute(const DOMAttr* attribute) {
754 PROC_STRING_ATTRIB(ProviderID,PROVIDERID,NULL);
755 PROC_STRING_ATTRIB(Name,NAME,NULL);
756 PROC_STRING_ATTRIB(Loc,LOC,NULL);
757 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
761 class SAML_DLLLOCAL IDPListImpl : public virtual IDPList,
762 public AbstractComplexElement,
763 public AbstractDOMCachingXMLObject,
764 public AbstractXMLObjectMarshaller,
765 public AbstractXMLObjectUnmarshaller
769 m_children.push_back(NULL);
770 m_pos_GetComplete=m_children.begin();
774 virtual ~IDPListImpl() { }
776 IDPListImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
777 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
782 IDPListImpl(const IDPListImpl& src)
783 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
785 if (src.getGetComplete())
786 setGetComplete(src.getGetComplete()->cloneGetComplete());
787 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
789 IDPEntry* entry=dynamic_cast<IDPEntry*>(*i);
791 getIDPEntrys().push_back(entry->cloneIDPEntry());
798 IMPL_XMLOBJECT_CLONE(IDPList);
799 IMPL_TYPED_CHILDREN(IDPEntry,m_pos_GetComplete);
800 IMPL_TYPED_CHILD(GetComplete);
803 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
804 PROC_TYPED_CHILDREN(IDPEntry,SAML20P_NS,false);
805 PROC_TYPED_CHILD(GetComplete,SAML20P_NS,false);
806 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
811 class SAML_DLLLOCAL ScopingImpl : public virtual Scoping,
812 public AbstractComplexElement,
813 public AbstractDOMCachingXMLObject,
814 public AbstractXMLObjectMarshaller,
815 public AbstractXMLObjectUnmarshaller
820 m_children.push_back(NULL);
821 m_pos_IDPList=m_children.begin();
825 virtual ~ScopingImpl() {
826 XMLString::release(&m_ProxyCount);
829 ScopingImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
830 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
835 ScopingImpl(const ScopingImpl& src)
836 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
838 setProxyCount(m_ProxyCount);
839 if (src.getIDPList())
840 setIDPList(src.getIDPList()->cloneIDPList());
841 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
843 RequesterID* reqid =dynamic_cast<RequesterID*>(*i);
845 getRequesterIDs().push_back(reqid->cloneRequesterID());
852 IMPL_XMLOBJECT_CLONE(Scoping);
853 IMPL_INTEGER_ATTRIB(ProxyCount);
854 IMPL_TYPED_CHILD(IDPList);
855 IMPL_TYPED_CHILDREN(RequesterID,m_children.end());
858 void marshallAttributes(DOMElement* domElement) const {
859 MARSHALL_INTEGER_ATTRIB(ProxyCount,PROXYCOUNT,NULL);
862 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
863 PROC_TYPED_CHILD(IDPList,SAML20P_NS,false);
864 PROC_TYPED_CHILDREN(RequesterID,SAML20P_NS,false);
865 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
868 void processAttribute(const DOMAttr* attribute) {
869 PROC_INTEGER_ATTRIB(ProxyCount,PROXYCOUNT,NULL);
870 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
874 class SAML_DLLLOCAL AuthnRequestImpl : public virtual AuthnRequest, public RequestAbstractTypeImpl
877 m_ForceAuthn=XML_BOOL_NULL;
878 m_IsPassive=XML_BOOL_NULL;
879 m_ProtocolBinding=NULL;
880 m_AssertionConsumerServiceIndex=NULL;
881 m_AssertionConsumerServiceURL=NULL;
882 m_AttributeConsumingServiceIndex=NULL;
888 m_RequestedAuthnContext=NULL;
890 m_children.push_back(NULL);
891 m_children.push_back(NULL);
892 m_children.push_back(NULL);
893 m_children.push_back(NULL);
894 m_children.push_back(NULL);
895 m_pos_Subject=m_pos_Extensions;
897 m_pos_NameIDPolicy=m_pos_Subject;
898 ++m_pos_NameIDPolicy;
899 m_pos_Conditions=m_pos_NameIDPolicy;
901 m_pos_RequestedAuthnContext=m_pos_Conditions;
902 ++m_pos_RequestedAuthnContext;
903 m_pos_Scoping=m_pos_RequestedAuthnContext;
908 virtual ~AuthnRequestImpl() {
909 XMLString::release(&m_ProtocolBinding);
910 XMLString::release(&m_AssertionConsumerServiceURL);
911 XMLString::release(&m_ProviderName);
912 XMLString::release(&m_AssertionConsumerServiceIndex);
913 XMLString::release(&m_AttributeConsumingServiceIndex);
916 AuthnRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
917 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
922 AuthnRequestImpl(const AuthnRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
925 ForceAuthn(m_ForceAuthn);
926 IsPassive(m_IsPassive);
927 setProtocolBinding(src.getProtocolBinding());
928 setAssertionConsumerServiceIndex(m_AssertionConsumerServiceIndex);
929 setAssertionConsumerServiceURL(src.getAssertionConsumerServiceURL());
930 setAttributeConsumingServiceIndex(m_AttributeConsumingServiceIndex);
931 setProviderName(src.getProviderName());
933 if (src.getSubject())
934 setSubject(src.getSubject()->cloneSubject());
935 if (src.getNameIDPolicy())
936 setNameIDPolicy(src.getNameIDPolicy()->cloneNameIDPolicy());
937 if (src.getConditions())
938 setConditions(src.getConditions()->cloneConditions());
939 if (src.getRequestedAuthnContext())
940 setRequestedAuthnContext(src.getRequestedAuthnContext()->cloneRequestedAuthnContext());
941 if (src.getScoping())
942 setScoping(src.getScoping()->cloneScoping());
945 IMPL_XMLOBJECT_CLONE(AuthnRequest);
946 RequestAbstractType* cloneRequestAbstractType() const {
947 return cloneAuthnRequest();
950 IMPL_BOOLEAN_ATTRIB(ForceAuthn);
951 IMPL_BOOLEAN_ATTRIB(IsPassive);
952 IMPL_STRING_ATTRIB(ProtocolBinding);
953 IMPL_INTEGER_ATTRIB(AssertionConsumerServiceIndex);
954 IMPL_STRING_ATTRIB(AssertionConsumerServiceURL);
955 IMPL_INTEGER_ATTRIB(AttributeConsumingServiceIndex);
956 IMPL_STRING_ATTRIB(ProviderName);
958 IMPL_TYPED_FOREIGN_CHILD(Subject,saml2);
959 IMPL_TYPED_CHILD(NameIDPolicy);
960 IMPL_TYPED_FOREIGN_CHILD(Conditions,saml2);
961 IMPL_TYPED_CHILD(RequestedAuthnContext);
962 IMPL_TYPED_CHILD(Scoping);
965 void marshallAttributes(DOMElement* domElement) const {
966 MARSHALL_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL);
967 MARSHALL_BOOLEAN_ATTRIB(IsPassive,ISPASSIVE,NULL);
968 MARSHALL_STRING_ATTRIB(ProtocolBinding,PROTOCOLBINDING,NULL);
969 MARSHALL_INTEGER_ATTRIB(AssertionConsumerServiceIndex,ASSERTIONCONSUMERSERVICEINDEX,NULL);
970 MARSHALL_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL);
971 MARSHALL_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL);
972 MARSHALL_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL);
973 RequestAbstractTypeImpl::marshallAttributes(domElement);
976 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
977 PROC_TYPED_FOREIGN_CHILD(Subject,saml2,SAML20_NS,false);
978 PROC_TYPED_CHILD(NameIDPolicy,SAML20P_NS,false);
979 PROC_TYPED_FOREIGN_CHILD(Conditions,saml2,SAML20_NS,false);
980 PROC_TYPED_CHILD(RequestedAuthnContext,SAML20P_NS,false);
981 PROC_TYPED_CHILD(Scoping,SAML20P_NS,false);
982 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
984 void processAttribute(const DOMAttr* attribute) {
985 PROC_BOOLEAN_ATTRIB(ForceAuthn,FORCEAUTHN,NULL);
986 PROC_BOOLEAN_ATTRIB(IsPassive,ISPASSIVE,NULL);
987 PROC_STRING_ATTRIB(ProtocolBinding,PROTOCOLBINDING,NULL);
988 PROC_INTEGER_ATTRIB(AssertionConsumerServiceIndex,ASSERTIONCONSUMERSERVICEINDEX,NULL);
989 PROC_STRING_ATTRIB(AssertionConsumerServiceURL,ASSERTIONCONSUMERSERVICEURL,NULL);
990 PROC_INTEGER_ATTRIB(AttributeConsumingServiceIndex,ATTRIBUTECONSUMINGSERVICEINDEX,NULL);
991 PROC_STRING_ATTRIB(ProviderName,PROVIDERNAME,NULL);
992 RequestAbstractTypeImpl::processAttribute(attribute);
996 class SAML_DLLLOCAL StatusResponseTypeImpl : public virtual StatusResponseType,
997 public AbstractComplexElement,
998 public AbstractDOMCachingXMLObject,
999 public AbstractXMLObjectMarshaller,
1000 public AbstractXMLObjectUnmarshaller
1004 m_InResponseTo=NULL;
1006 m_IssueInstant=NULL;
1013 m_children.push_back(NULL);
1014 m_children.push_back(NULL);
1015 m_children.push_back(NULL);
1016 m_children.push_back(NULL);
1017 m_pos_Issuer=m_children.begin();
1018 m_pos_Signature=m_pos_Issuer;
1020 m_pos_Extensions=m_pos_Signature;
1022 m_pos_Status=m_pos_Extensions;
1026 StatusResponseTypeImpl() {
1030 virtual ~StatusResponseTypeImpl() {
1031 XMLString::release(&m_ID);
1032 XMLString::release(&m_InResponseTo);
1033 XMLString::release(&m_Version);
1034 XMLString::release(&m_Destination);
1035 XMLString::release(&m_Consent);
1036 delete m_IssueInstant;
1039 StatusResponseTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1040 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1045 StatusResponseTypeImpl(const StatusResponseTypeImpl& src)
1046 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
1049 setInResponseTo(src.getInResponseTo());
1050 setVersion(src.getVersion());
1051 setIssueInstant(src.getIssueInstant());
1052 setDestination(src.getDestination());
1053 setConsent(src.getConsent());
1054 if (src.getIssuer())
1055 setIssuer(src.getIssuer()->cloneIssuer());
1056 if (src.getSignature())
1057 setSignature(src.getSignature()->cloneSignature());
1058 if (src.getExtensions())
1059 setExtensions(src.getExtensions()->cloneExtensions());
1060 if (src.getStatus())
1061 setStatus(src.getStatus()->cloneStatus());
1064 //IMPL_TYPED_CHILD(Signature);
1065 // Need customized setter.
1067 Signature* m_Signature;
1068 list<XMLObject*>::iterator m_pos_Signature;
1070 Signature* getSignature() const {
1074 void setSignature(Signature* sig) {
1075 prepareForAssignment(m_Signature,sig);
1076 *m_pos_Signature=m_Signature=sig;
1077 // Sync content reference back up.
1079 m_Signature->setContentReference(new opensaml::ContentReference(*this));
1082 IMPL_STRING_ATTRIB(Version);
1084 IMPL_STRING_ATTRIB(InResponseTo);
1085 IMPL_DATETIME_ATTRIB(IssueInstant,0);
1086 IMPL_STRING_ATTRIB(Destination);
1087 IMPL_STRING_ATTRIB(Consent);
1088 IMPL_TYPED_FOREIGN_CHILD(Issuer,saml2);
1089 IMPL_TYPED_CHILD(Extensions);
1090 IMPL_TYPED_CHILD(Status);
1093 void marshallAttributes(DOMElement* domElement) const {
1095 const_cast<StatusResponseTypeImpl*>(this)->m_Version=XMLString::transcode("2.0");
1096 MARSHALL_STRING_ATTRIB(Version,VER,NULL);
1098 const_cast<StatusResponseTypeImpl*>(this)->m_ID=SAMLConfig::getConfig().generateIdentifier();
1099 MARSHALL_ID_ATTRIB(ID,ID,NULL);
1100 if (!m_IssueInstant) {
1101 const_cast<StatusResponseTypeImpl*>(this)->m_IssueInstantEpoch=time(NULL);
1102 const_cast<StatusResponseTypeImpl*>(this)->m_IssueInstant=new DateTime(m_IssueInstantEpoch);
1104 MARSHALL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
1105 MARSHALL_STRING_ATTRIB(Destination,DESTINATION,NULL);
1106 MARSHALL_STRING_ATTRIB(Consent,CONSENT,NULL);
1107 MARSHALL_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
1110 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1111 PROC_TYPED_FOREIGN_CHILD(Issuer,saml2,SAML20_NS,false);
1112 PROC_TYPED_FOREIGN_CHILD(Signature,xmlsignature,XMLSIG_NS,false);
1113 PROC_TYPED_CHILD(Extensions,SAML20P_NS,false);
1114 PROC_TYPED_CHILD(Status,SAML20P_NS,false);
1115 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
1118 void processAttribute(const DOMAttr* attribute) {
1119 PROC_ID_ATTRIB(ID,ID,NULL);
1120 PROC_STRING_ATTRIB(Version,VER,NULL);
1121 PROC_STRING_ATTRIB(InResponseTo,INRESPONSETO,NULL);
1122 PROC_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT,NULL);
1123 PROC_STRING_ATTRIB(Destination,DESTINATION,NULL);
1124 PROC_STRING_ATTRIB(Consent,CONSENT,NULL);
1125 AbstractXMLObjectUnmarshaller::processAttribute(attribute);
1129 class SAML_DLLLOCAL ResponseImpl : public virtual Response, public StatusResponseTypeImpl
1132 virtual ~ResponseImpl() { }
1134 ResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1135 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1137 ResponseImpl(const ResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1138 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
1140 Assertion* assertion=dynamic_cast<Assertion*>(*i);
1142 getAssertions().push_back(assertion->cloneAssertion());
1145 EncryptedAssertion* encAssertion=dynamic_cast<EncryptedAssertion*>(*i);
1147 getEncryptedAssertions().push_back(encAssertion->cloneEncryptedAssertion());
1155 IMPL_XMLOBJECT_CLONE(Response);
1156 StatusResponseType* cloneStatusResponseType() const {
1157 return cloneResponse();
1160 IMPL_TYPED_FOREIGN_CHILDREN(Assertion,saml2,m_children.end());
1161 IMPL_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,m_children.end());
1164 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1165 PROC_TYPED_FOREIGN_CHILDREN(Assertion,saml2,SAML20_NS,false);
1166 PROC_TYPED_FOREIGN_CHILDREN(EncryptedAssertion,saml2,SAML20_NS,false);
1167 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1171 class SAML_DLLLOCAL ArtifactResolveImpl : public virtual ArtifactResolve, public RequestAbstractTypeImpl
1175 m_children.push_back(NULL);
1176 m_pos_Artifact=m_pos_Extensions;
1180 virtual ~ArtifactResolveImpl() { }
1182 ArtifactResolveImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1183 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1188 ArtifactResolveImpl(const ArtifactResolveImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1190 if(src.getArtifact())
1191 setArtifact(src.getArtifact()->cloneArtifact());
1194 IMPL_XMLOBJECT_CLONE(ArtifactResolve);
1195 RequestAbstractType* cloneRequestAbstractType() const {
1196 return cloneArtifactResolve();
1199 IMPL_TYPED_CHILD(Artifact);
1202 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1203 PROC_TYPED_CHILD(Artifact,SAML20P_NS,false);
1204 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1208 class SAML_DLLLOCAL ArtifactResponseImpl : public virtual ArtifactResponse, public StatusResponseTypeImpl
1212 m_children.push_back(NULL);
1213 m_pos_Payload=m_pos_Status;
1217 virtual ~ArtifactResponseImpl() { }
1219 ArtifactResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1220 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1225 ArtifactResponseImpl(const ArtifactResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1227 if (src.getPayload())
1228 setPayload(getPayload()->clone());
1232 IMPL_XMLOBJECT_CLONE(ArtifactResponse);
1233 StatusResponseType* cloneStatusResponseType() const {
1234 return cloneArtifactResponse();
1237 IMPL_XMLOBJECT_CHILD(Payload);
1240 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1241 // These are valid elements for the parent StatusResponseType, so don't process these.
1242 // If not one of these, then it must be the payload.
1244 ! XMLHelper::isNodeNamed(root,SAML20_NS,saml2::Issuer::LOCAL_NAME) &&
1245 ! XMLHelper::isNodeNamed(root,XMLSIG_NS,xmlsignature::Signature::LOCAL_NAME) &&
1246 ! XMLHelper::isNodeNamed(root,SAML20P_NS,saml2p::Extensions::LOCAL_NAME) &&
1247 ! XMLHelper::isNodeNamed(root,SAML20P_NS,saml2p::Status::LOCAL_NAME)
1250 setPayload(childXMLObject);
1254 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1258 class SAML_DLLLOCAL NewEncryptedIDImpl : public virtual NewEncryptedID,
1259 public AbstractComplexElement,
1260 public AbstractDOMCachingXMLObject,
1261 public AbstractXMLObjectMarshaller,
1262 public AbstractXMLObjectUnmarshaller
1265 m_EncryptedData=NULL;
1266 m_children.push_back(NULL);
1267 m_pos_EncryptedData=m_children.begin();
1271 NewEncryptedIDImpl()
1277 virtual ~NewEncryptedIDImpl() {}
1279 NewEncryptedIDImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1280 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1285 NewEncryptedIDImpl(const NewEncryptedIDImpl& src)
1286 : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) {
1288 if (src.getEncryptedData())
1289 setEncryptedData(src.getEncryptedData()->cloneEncryptedData());
1290 VectorOf(xmlencryption::EncryptedKey) v=getEncryptedKeys();
1291 for (vector<xmlencryption::EncryptedKey*>::const_iterator i=src.m_EncryptedKeys.begin(); i!=src.m_EncryptedKeys.end(); i++) {
1293 v.push_back((*i)->cloneEncryptedKey());
1298 XMLObject* decrypt(KeyResolver* KEKresolver, const XMLCh* recipient) const
1300 if (!m_EncryptedData)
1301 throw DecryptionException("No encrypted data present.");
1302 Decrypter decrypter(KEKresolver, new EncryptedKeyResolver(*this, recipient));
1303 DOMDocumentFragment* frag = decrypter.decryptData(m_EncryptedData);
1304 if (frag->hasChildNodes() && frag->getFirstChild()==frag->getLastChild()) {
1305 DOMNode* plaintext=frag->getFirstChild();
1306 if (plaintext->getNodeType()==DOMNode::ELEMENT_NODE) {
1307 auto_ptr<XMLObject> ret(XMLObjectBuilder::buildOneFromElement(static_cast<DOMElement*>(plaintext)));
1308 ret->releaseThisAndChildrenDOM();
1309 return ret.release();
1313 throw DecryptionException("Decryption did not result in a single element.");
1316 IMPL_XMLOBJECT_CLONE(NewEncryptedID);
1317 EncryptedElementType* cloneEncryptedElementType() const {
1318 return new NewEncryptedIDImpl(*this);
1321 IMPL_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption);
1322 IMPL_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,m_children.end());
1325 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1326 PROC_TYPED_FOREIGN_CHILD(EncryptedData,xmlencryption,XMLENC_NS,false);
1327 PROC_TYPED_FOREIGN_CHILDREN(EncryptedKey,xmlencryption,XMLENC_NS,false);
1328 AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root);
1332 class SAML_DLLLOCAL TerminateImpl : public virtual Terminate,
1333 public AbstractSimpleElement,
1334 public AbstractDOMCachingXMLObject,
1335 public AbstractXMLObjectMarshaller,
1336 public AbstractXMLObjectUnmarshaller
1339 virtual ~TerminateImpl() { }
1341 TerminateImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1342 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1344 TerminateImpl(const TerminateImpl& src)
1345 : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) {
1348 IMPL_XMLOBJECT_CLONE(Terminate);
1351 // has no attributes or children
1354 class SAML_DLLLOCAL ManageNameIDRequestImpl : public virtual ManageNameIDRequest, public RequestAbstractTypeImpl
1360 m_NewEncryptedID=NULL;
1362 m_children.push_back(NULL);
1363 m_children.push_back(NULL);
1364 m_children.push_back(NULL);
1365 m_children.push_back(NULL);
1366 m_children.push_back(NULL);
1367 m_pos_NameID=m_pos_Extensions;
1369 m_pos_EncryptedID=m_pos_NameID;
1370 ++m_pos_EncryptedID;
1371 m_pos_NewID=m_pos_EncryptedID;
1373 m_pos_NewEncryptedID=m_pos_NewID;
1374 ++m_pos_NewEncryptedID;
1375 m_pos_Terminate=m_pos_NewEncryptedID;
1380 virtual ~ManageNameIDRequestImpl() { }
1382 ManageNameIDRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1383 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1388 ManageNameIDRequestImpl(const ManageNameIDRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1391 if (src.getNameID())
1392 setNameID(src.getNameID()->cloneNameID());
1393 if (src.getEncryptedID())
1394 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1396 setNewID(src.getNewID()->cloneNewID());
1397 if (src.getNewEncryptedID())
1398 setNewEncryptedID(src.getNewEncryptedID()->cloneNewEncryptedID());
1399 if (src.getTerminate())
1400 setTerminate(src.getTerminate()->cloneTerminate());
1404 IMPL_XMLOBJECT_CLONE(ManageNameIDRequest);
1405 RequestAbstractType* cloneRequestAbstractType() const {
1406 return cloneManageNameIDRequest();
1409 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1410 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1411 IMPL_TYPED_CHILD(NewID);
1412 IMPL_TYPED_CHILD(NewEncryptedID);
1413 IMPL_TYPED_CHILD(Terminate);
1416 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1417 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1418 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1419 PROC_TYPED_CHILD(NewID,SAML20P_NS,false);
1420 PROC_TYPED_CHILD(NewEncryptedID,SAML20P_NS,false);
1421 PROC_TYPED_CHILD(Terminate,SAML20P_NS,false);
1422 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1426 class SAML_DLLLOCAL ManageNameIDResponseImpl : public virtual ManageNameIDResponse, public StatusResponseTypeImpl
1429 virtual ~ManageNameIDResponseImpl() { }
1431 ManageNameIDResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1432 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1434 ManageNameIDResponseImpl(const ManageNameIDResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1437 IMPL_XMLOBJECT_CLONE(ManageNameIDResponse);
1438 StatusResponseType* cloneStatusResponseType() const {
1439 return cloneManageNameIDResponse();
1443 class SAML_DLLLOCAL LogoutRequestImpl : public virtual LogoutRequest, public RequestAbstractTypeImpl
1447 m_NotOnOrAfter=NULL;
1452 m_children.push_back(NULL);
1453 m_children.push_back(NULL);
1454 m_children.push_back(NULL);
1455 m_pos_BaseID=m_pos_Extensions;
1457 m_pos_NameID=m_pos_BaseID;
1459 m_pos_EncryptedID=m_pos_NameID;
1460 ++m_pos_EncryptedID;
1464 virtual ~LogoutRequestImpl() {
1465 XMLString::release(&m_Reason);
1466 delete m_NotOnOrAfter;
1469 LogoutRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1470 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1475 LogoutRequestImpl(const LogoutRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1478 setReason(src.getReason());
1479 setNotOnOrAfter(src.getNotOnOrAfter());
1481 if (src.getBaseID())
1482 setBaseID(src.getBaseID()->cloneBaseID());
1483 if (src.getNameID())
1484 setNameID(src.getNameID()->cloneNameID());
1485 if (src.getEncryptedID())
1486 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1488 for (list<XMLObject*>::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) {
1490 SessionIndex* si = dynamic_cast<SessionIndex*>(*i);
1492 getSessionIndexs().push_back(si->cloneSessionIndex());
1499 IMPL_XMLOBJECT_CLONE(LogoutRequest);
1500 RequestAbstractType* cloneRequestAbstractType() const {
1501 return cloneLogoutRequest();
1504 IMPL_STRING_ATTRIB(Reason);
1505 IMPL_DATETIME_ATTRIB(NotOnOrAfter,SAMLTIME_MAX);
1506 IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2);
1507 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1508 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1509 IMPL_TYPED_CHILDREN(SessionIndex,m_children.end());
1512 void marshallAttributes(DOMElement* domElement) const {
1513 MARSHALL_STRING_ATTRIB(Reason,REASON,NULL);
1514 MARSHALL_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
1515 RequestAbstractTypeImpl::marshallAttributes(domElement);
1518 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1519 PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAML20_NS,false);
1520 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1521 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1522 PROC_TYPED_CHILDREN(SessionIndex,SAML20P_NS,false);
1523 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1525 void processAttribute(const DOMAttr* attribute) {
1526 PROC_STRING_ATTRIB(Reason,REASON,NULL);
1527 PROC_DATETIME_ATTRIB(NotOnOrAfter,NOTONORAFTER,NULL);
1528 RequestAbstractTypeImpl::processAttribute(attribute);
1532 class SAML_DLLLOCAL LogoutResponseImpl : public virtual LogoutResponse, public StatusResponseTypeImpl
1535 virtual ~LogoutResponseImpl() { }
1537 LogoutResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1538 : AbstractXMLObject(nsURI, localName, prefix, schemaType) { }
1540 LogoutResponseImpl(const LogoutResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1543 IMPL_XMLOBJECT_CLONE(LogoutResponse);
1544 StatusResponseType* cloneStatusResponseType() const {
1545 return cloneLogoutResponse();
1550 class SAML_DLLLOCAL NameIDMappingRequestImpl : public virtual NameIDMappingRequest, public RequestAbstractTypeImpl
1556 m_NameIDPolicy=NULL;
1557 m_children.push_back(NULL);
1558 m_children.push_back(NULL);
1559 m_children.push_back(NULL);
1560 m_children.push_back(NULL);
1561 m_pos_BaseID=m_pos_Extensions;
1563 m_pos_NameID=m_pos_BaseID;
1565 m_pos_EncryptedID=m_pos_NameID;
1566 ++m_pos_EncryptedID;
1567 m_pos_NameIDPolicy=m_pos_EncryptedID;
1568 ++m_pos_NameIDPolicy;
1572 virtual ~NameIDMappingRequestImpl() { }
1574 NameIDMappingRequestImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1575 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1580 NameIDMappingRequestImpl(const NameIDMappingRequestImpl& src) : AbstractXMLObject(src), RequestAbstractTypeImpl(src) {
1583 if (src.getBaseID())
1584 setBaseID(src.getBaseID()->cloneBaseID());
1585 if (src.getNameID())
1586 setNameID(src.getNameID()->cloneNameID());
1587 if (src.getEncryptedID())
1588 setEncryptedID(src.getEncryptedID()->cloneEncryptedID());
1589 if (src.getNameIDPolicy())
1590 setNameIDPolicy(src.getNameIDPolicy()->cloneNameIDPolicy());
1594 IMPL_XMLOBJECT_CLONE(NameIDMappingRequest);
1595 RequestAbstractType* cloneRequestAbstractType() const {
1596 return cloneNameIDMappingRequest();
1599 IMPL_TYPED_FOREIGN_CHILD(BaseID,saml2);
1600 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1601 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1602 IMPL_TYPED_CHILD(NameIDPolicy);
1605 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1606 PROC_TYPED_FOREIGN_CHILD(BaseID,saml2,SAML20_NS,false);
1607 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1608 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1609 PROC_TYPED_CHILD(NameIDPolicy,SAML20P_NS,false);
1610 RequestAbstractTypeImpl::processChildElement(childXMLObject,root);
1614 class SAML_DLLLOCAL NameIDMappingResponseImpl : public virtual NameIDMappingResponse, public StatusResponseTypeImpl
1619 m_children.push_back(NULL);
1620 m_children.push_back(NULL);
1621 m_pos_NameID=m_pos_Status;
1623 m_pos_EncryptedID=m_pos_NameID;
1624 ++m_pos_EncryptedID;
1627 virtual ~NameIDMappingResponseImpl() { }
1629 NameIDMappingResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
1630 : AbstractXMLObject(nsURI, localName, prefix, schemaType)
1635 NameIDMappingResponseImpl(const NameIDMappingResponseImpl& src) : AbstractXMLObject(src), StatusResponseTypeImpl(src) {
1638 if (src.getNameID())
1639 setNameID(getNameID()->cloneNameID());
1640 if (src.getEncryptedID())
1641 setEncryptedID(getEncryptedID()->cloneEncryptedID());
1645 IMPL_XMLOBJECT_CLONE(NameIDMappingResponse);
1646 StatusResponseType* cloneStatusResponseType() const {
1647 return cloneNameIDMappingResponse();
1650 IMPL_TYPED_FOREIGN_CHILD(NameID,saml2);
1651 IMPL_TYPED_FOREIGN_CHILD(EncryptedID,saml2);
1654 void processChildElement(XMLObject* childXMLObject, const DOMElement* root) {
1655 PROC_TYPED_FOREIGN_CHILD(NameID,saml2,SAML20_NS,false);
1656 PROC_TYPED_FOREIGN_CHILD(EncryptedID,saml2,SAML20_NS,false);
1657 StatusResponseTypeImpl::processChildElement(childXMLObject,root);
1663 #if defined (_MSC_VER)
1664 #pragma warning( pop )
1667 // Builder Implementations
1668 IMPL_XMLOBJECTBUILDER(Artifact);
1669 IMPL_XMLOBJECTBUILDER(ArtifactResolve);
1670 IMPL_XMLOBJECTBUILDER(ArtifactResponse);
1671 IMPL_XMLOBJECTBUILDER(AssertionIDRequest);
1672 IMPL_XMLOBJECTBUILDER(AttributeQuery);
1673 IMPL_XMLOBJECTBUILDER(AuthnQuery);
1674 IMPL_XMLOBJECTBUILDER(AuthnRequest);
1675 IMPL_XMLOBJECTBUILDER(AuthzDecisionQuery);
1676 IMPL_XMLOBJECTBUILDER(Extensions);
1677 IMPL_XMLOBJECTBUILDER(GetComplete);
1678 IMPL_XMLOBJECTBUILDER(IDPEntry);
1679 IMPL_XMLOBJECTBUILDER(IDPList);
1680 IMPL_XMLOBJECTBUILDER(LogoutRequest);
1681 IMPL_XMLOBJECTBUILDER(LogoutResponse);
1682 IMPL_XMLOBJECTBUILDER(ManageNameIDRequest);
1683 IMPL_XMLOBJECTBUILDER(ManageNameIDResponse);
1684 IMPL_XMLOBJECTBUILDER(NameIDMappingRequest);
1685 IMPL_XMLOBJECTBUILDER(NameIDMappingResponse);
1686 IMPL_XMLOBJECTBUILDER(NameIDPolicy);
1687 IMPL_XMLOBJECTBUILDER(NewEncryptedID);
1688 IMPL_XMLOBJECTBUILDER(NewID);
1689 IMPL_XMLOBJECTBUILDER(RequestedAuthnContext);
1690 IMPL_XMLOBJECTBUILDER(RequesterID);
1691 IMPL_XMLOBJECTBUILDER(Response);
1692 IMPL_XMLOBJECTBUILDER(Scoping);
1693 IMPL_XMLOBJECTBUILDER(SessionIndex);
1694 IMPL_XMLOBJECTBUILDER(Status);
1695 IMPL_XMLOBJECTBUILDER(StatusCode);
1696 IMPL_XMLOBJECTBUILDER(StatusDetail);
1697 IMPL_XMLOBJECTBUILDER(StatusMessage);
1698 IMPL_XMLOBJECTBUILDER(Terminate);
1700 IMPL_XMLOBJECTBUILDER(RespondTo);
1703 const XMLCh Artifact::LOCAL_NAME[] = UNICODE_LITERAL_8(A,r,t,i,f,a,c,t);
1704 const XMLCh ArtifactResolve::LOCAL_NAME[] = UNICODE_LITERAL_15(A,r,t,i,f,a,c,t,R,e,s,o,l,v,e);
1705 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);
1706 const XMLCh ArtifactResponse::LOCAL_NAME[] = UNICODE_LITERAL_16(A,r,t,i,f,a,c,t,R,e,s,p,o,n,s,e);
1707 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);
1708 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);
1709 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);
1710 const XMLCh AttributeQuery::LOCAL_NAME[] = UNICODE_LITERAL_14(A,t,t,r,i,b,u,t,e,Q,u,e,r,y);
1711 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);
1712 const XMLCh AuthnQuery::LOCAL_NAME[] = UNICODE_LITERAL_10(A,u,t,h,n,Q,u,e,r,y);
1713 const XMLCh AuthnQuery::TYPE_NAME[] = UNICODE_LITERAL_14(A,u,t,h,n,Q,u,e,r,y,T,y,p,e);
1714 const XMLCh AuthnQuery::SESSIONINDEX_ATTRIB_NAME[] = UNICODE_LITERAL_12(S,e,s,s,i,o,n,I,n,d,e,x);
1715 const XMLCh AuthnRequest::LOCAL_NAME[] = UNICODE_LITERAL_12(A,u,t,h,n,R,e,q,u,e,s,t);
1716 const XMLCh AuthnRequest::TYPE_NAME[] = UNICODE_LITERAL_16(A,u,t,h,n,R,e,q,u,e,s,t,T,y,p,e);
1717 const XMLCh AuthnRequest::FORCEAUTHN_ATTRIB_NAME[] = UNICODE_LITERAL_10(F,o,r,c,e,A,u,t,h,n);
1718 const XMLCh AuthnRequest::ISPASSIVE_ATTRIB_NAME[] = UNICODE_LITERAL_9(I,s,P,a,s,s,i,v,e);
1719 const XMLCh AuthnRequest::PROTOCOLBINDING_ATTRIB_NAME[] = UNICODE_LITERAL_15(P,r,o,t,o,c,o,l,B,i,n,d,i,n,g);
1720 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);
1721 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);
1722 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);
1723 const XMLCh AuthnRequest::PROVIDERNAME_ATTRIB_NAME[] = UNICODE_LITERAL_12(P,r,o,v,i,d,e,r,N,a,m,e);
1724 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);
1725 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);
1726 const XMLCh AuthzDecisionQuery::RESOURCE_ATTRIB_NAME[] = UNICODE_LITERAL_8(R,e,s,o,u,r,c,e);
1727 const XMLCh Extensions::LOCAL_NAME[] = UNICODE_LITERAL_10(E,x,t,e,n,s,i,o,n,s);
1728 const XMLCh Extensions::TYPE_NAME[] = UNICODE_LITERAL_14(E,x,t,e,n,s,i,o,n,s,T,y,p,e);
1729 const XMLCh GetComplete::LOCAL_NAME[] = UNICODE_LITERAL_11(G,e,t,C,o,m,p,l,e,t,e);
1730 const XMLCh IDPEntry::LOCAL_NAME[] = UNICODE_LITERAL_8(I,D,P,E,n,t,r,y);
1731 const XMLCh IDPEntry::TYPE_NAME[] = UNICODE_LITERAL_12(I,D,P,E,n,t,r,y,T,y,p,e);
1732 const XMLCh IDPEntry::PROVIDERID_ATTRIB_NAME[] = UNICODE_LITERAL_10(P,r,o,v,i,d,e,r,I,D);
1733 const XMLCh IDPEntry::NAME_ATTRIB_NAME[] = UNICODE_LITERAL_4(N,a,m,e);
1734 const XMLCh IDPEntry::LOC_ATTRIB_NAME[] = UNICODE_LITERAL_3(L,o,c);
1735 const XMLCh IDPList::LOCAL_NAME[] = UNICODE_LITERAL_7(I,D,P,L,i,s,t);
1736 const XMLCh IDPList::TYPE_NAME[] = UNICODE_LITERAL_11(I,D,P,L,i,s,t,T,y,p,e);
1737 const XMLCh LogoutRequest::LOCAL_NAME[] = UNICODE_LITERAL_13(L,o,g,o,u,t,R,e,q,u,e,s,t);
1738 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);
1739 const XMLCh LogoutRequest::REASON_ATTRIB_NAME[] = UNICODE_LITERAL_6(R,e,a,s,o,n);
1740 const XMLCh LogoutRequest::NOTONORAFTER_ATTRIB_NAME[] = UNICODE_LITERAL_12(N,o,t,O,n,O,r,A,f,t,e,r);
1741 const XMLCh LogoutResponse::LOCAL_NAME[] = UNICODE_LITERAL_14(L,o,g,o,u,t,R,e,s,p,o,n,s,e);
1742 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);
1743 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);
1744 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);
1745 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);
1746 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);
1747 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);
1748 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);
1749 const XMLCh NameIDPolicy::LOCAL_NAME[] = UNICODE_LITERAL_12(N,a,m,e,I,D,P,o,l,i,c,y);
1750 const XMLCh NameIDPolicy::TYPE_NAME[] = UNICODE_LITERAL_16(N,a,m,e,I,D,P,o,l,i,c,y,T,y,p,e);
1751 const XMLCh NameIDPolicy::FORMAT_ATTRIB_NAME[] = UNICODE_LITERAL_6(F,o,r,m,a,t);
1752 const XMLCh NameIDPolicy::SPNAMEQUALIFIER_ATTRIB_NAME[] = UNICODE_LITERAL_15(S,P,N,a,m,e,Q,u,a,l,i,f,i,e,r);
1753 const XMLCh NameIDPolicy::ALLOWCREATE_ATTRIB_NAME[] = UNICODE_LITERAL_11(A,l,l,o,w,C,r,e,a,t,e);
1754 const XMLCh NewEncryptedID::LOCAL_NAME[] = UNICODE_LITERAL_14(N,e,w,E,n,c,r,y,p,t,e,d,I,D);
1755 const XMLCh NewID::LOCAL_NAME[] = UNICODE_LITERAL_5(N,e,w,I,D);
1756 const XMLCh RequesterID::LOCAL_NAME[] = UNICODE_LITERAL_11(R,e,q,u,e,s,t,e,r,I,D);
1757 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);
1758 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);
1759 const XMLCh RequestedAuthnContext::COMPARISON_ATTRIB_NAME[] = UNICODE_LITERAL_10(C,o,m,p,a,r,i,s,o,n);
1760 const XMLCh RequestedAuthnContext::COMPARISON_EXACT[] = UNICODE_LITERAL_5(e,x,a,c,t);
1761 const XMLCh RequestedAuthnContext::COMPARISON_MINIMUM[] = UNICODE_LITERAL_7(m,i,n,i,m,u,m);
1762 const XMLCh RequestedAuthnContext::COMPARISON_MAXIMUM[] = UNICODE_LITERAL_7(m,a,x,i,m,u,m);
1763 const XMLCh RequestedAuthnContext::COMPARISON_BETTER[] = UNICODE_LITERAL_6(b,e,t,t,e,r);
1764 const XMLCh RequestAbstractType::LOCAL_NAME[] = {chNull};
1765 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);
1766 const XMLCh RequestAbstractType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D);
1767 const XMLCh RequestAbstractType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n);
1768 const XMLCh RequestAbstractType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t);
1769 const XMLCh RequestAbstractType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n);
1770 const XMLCh RequestAbstractType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t);
1771 const XMLCh RespondTo::LOCAL_NAME[] = UNICODE_LITERAL_9(R,e,s,p,o,n,d,T,o);
1772 const XMLCh Response::LOCAL_NAME[] = UNICODE_LITERAL_8(R,e,s,p,o,n,s,e);
1773 const XMLCh Response::TYPE_NAME[] = UNICODE_LITERAL_12(R,e,s,p,o,n,s,e,T,y,p,e);
1774 const XMLCh Scoping::LOCAL_NAME[] = UNICODE_LITERAL_7(S,c,o,p,i,n,g);
1775 const XMLCh Scoping::TYPE_NAME[] = UNICODE_LITERAL_11(S,c,o,p,i,n,g,T,y,p,e);
1776 const XMLCh Scoping::PROXYCOUNT_ATTRIB_NAME[] = UNICODE_LITERAL_10(P,r,o,x,y,C,o,u,n,t);
1777 const XMLCh SessionIndex::LOCAL_NAME[] = UNICODE_LITERAL_12(S,e,s,s,i,o,n,I,n,d,e,x);
1778 const XMLCh Status::LOCAL_NAME[] = UNICODE_LITERAL_6(S,t,a,t,u,s);
1779 const XMLCh Status::TYPE_NAME[] = UNICODE_LITERAL_10(S,t,a,t,u,s,T,y,p,e);
1780 const XMLCh StatusCode::LOCAL_NAME[] = UNICODE_LITERAL_10(S,t,a,t,u,s,C,o,d,e);
1781 const XMLCh StatusCode::TYPE_NAME[] = UNICODE_LITERAL_14(S,t,a,t,u,s,C,o,d,e,T,y,p,e);
1782 const XMLCh StatusCode::VALUE_ATTRIB_NAME[] = UNICODE_LITERAL_5(V,a,l,u,e);
1783 const XMLCh StatusDetail::LOCAL_NAME[] = UNICODE_LITERAL_12(S,t,a,t,u,s,D,e,t,a,i,l);
1784 const XMLCh StatusDetail::TYPE_NAME[] = UNICODE_LITERAL_16(S,t,a,t,u,s,D,e,t,a,i,l,T,y,p,e);
1785 const XMLCh StatusMessage::LOCAL_NAME[] = UNICODE_LITERAL_13(S,t,a,t,u,s,M,e,s,s,a,g,e);
1786 const XMLCh StatusResponseType::LOCAL_NAME[] = {chNull};
1787 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);
1788 const XMLCh StatusResponseType::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D);
1789 const XMLCh StatusResponseType::INRESPONSETO_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,n,R,e,s,p,o,n,s,e,T,o);
1790 const XMLCh StatusResponseType::VER_ATTRIB_NAME[] = UNICODE_LITERAL_7(V,e,r,s,i,o,n);
1791 const XMLCh StatusResponseType::ISSUEINSTANT_ATTRIB_NAME[] = UNICODE_LITERAL_12(I,s,s,u,e,I,n,s,t,a,n,t);
1792 const XMLCh StatusResponseType::DESTINATION_ATTRIB_NAME[] = UNICODE_LITERAL_11(D,e,s,t,i,n,a,t,i,o,n);
1793 const XMLCh StatusResponseType::CONSENT_ATTRIB_NAME[] = UNICODE_LITERAL_7(C,o,n,s,e,n,t);
1794 const XMLCh SubjectQuery::LOCAL_NAME[] = UNICODE_LITERAL_12(S,u,b,j,e,c,t,Q,u,e,r,y);
1795 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);
1796 const XMLCh Terminate::LOCAL_NAME[] = UNICODE_LITERAL_9(T,e,r,m,i,n,a,t,e);
1797 const XMLCh Terminate::TYPE_NAME[] = UNICODE_LITERAL_13(T,e,r,m,i,n,a,t,e,T,y,p,e);
1799 // Unicode literals: LogoutRequest element, Reason attribute
1800 const XMLCh LogoutRequest::REASON_USER[] = // urn:oasis:names:tc:SAML:2.0:logout:user
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_u, chLatin_s, chLatin_e, chLatin_r, chNull
1808 const XMLCh LogoutRequest::REASON_ADMIN[] = // urn:oasis:names:tc:SAML:2.0:logout:admin
1809 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1810 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1811 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1812 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1813 chLatin_a, chLatin_d, chLatin_m, chLatin_i, chLatin_n, chNull
1817 const XMLCh LogoutRequest::REASON_GLOBAL_TIMEOUT[] = // urn:oasis:names:tc:SAML:2.0:logout:global-timeout
1818 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1819 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1820 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1821 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1822 chLatin_g, chLatin_l, chLatin_o, chLatin_b, chLatin_a, chLatin_l,
1823 chDash, chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull
1827 const XMLCh LogoutRequest::REASON_SP_TIMEOUT[] = // urn:oasis:names:tc:SAML:2.0:logout:sp-timeout
1828 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1829 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1830 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1831 chLatin_l, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chColon,
1832 chLatin_s, chLatin_p, chDash, chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull
1836 // Unicode literals, StatusCode Value
1837 const XMLCh StatusCode::SUCCESS[] = // urn:oasis:names:tc:SAML:2.0:status:Success
1838 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1839 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1840 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1841 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1842 chLatin_S, chLatin_u, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chNull
1845 const XMLCh StatusCode::REQUESTER[] = // urn:oasis:names:tc:SAML:2.0:status:Requester
1846 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1847 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1848 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1849 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1850 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t, chLatin_e, chLatin_r, chNull
1853 const XMLCh StatusCode::RESPONDER[] = // urn:oasis:names:tc:SAML:2.0:status:Responder
1854 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1855 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1856 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1857 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1858 chLatin_R, chLatin_e, chLatin_s, chLatin_p, chLatin_o, chLatin_n, chLatin_d, chLatin_e, chLatin_r, chNull
1861 const XMLCh StatusCode::VERSION_MISMATCH[] = // urn:oasis:names:tc:SAML:2.0:status:VersionMismatch
1862 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1863 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1864 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1865 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1866 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1867 chLatin_M, chLatin_i, chLatin_s, chLatin_m, chLatin_a, chLatin_t, chLatin_c, chLatin_h, chNull
1870 const XMLCh StatusCode::AUTHN_FAILED[] = // urn:oasis:names:tc:SAML:2.0:status:AuthnFailed
1871 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1872 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1873 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1874 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1875 chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_n,
1876 chLatin_F, chLatin_a, chLatin_i, chLatin_l, chLatin_e, chLatin_d, chNull
1879 const XMLCh StatusCode::INVALID_ATTR_NAME_OR_VALUE[] = // urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue
1880 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1881 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1882 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1883 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1884 chLatin_I, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d,
1885 chLatin_A, chLatin_t, chLatin_t, chLatin_r, chLatin_N, chLatin_a, chLatin_m, chLatin_e,
1886 chLatin_O, chLatin_r, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull
1889 const XMLCh StatusCode::INVALID_NAMEID_POLICY[] = // urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy
1890 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1891 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1892 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1893 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1894 chLatin_I, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d,
1895 chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_I, chLatin_D,
1896 chLatin_P, chLatin_o, chLatin_l, chLatin_i, chLatin_c, chLatin_y, chNull
1899 const XMLCh StatusCode::NO_AUTHN_CONTEXT[] = // urn:oasis:names:tc:SAML:2.0:status:NoAuthnContext
1900 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1901 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1902 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1903 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1904 chLatin_N, chLatin_o, chLatin_A, chLatin_u, chLatin_t, chLatin_h, chLatin_n,
1905 chLatin_C, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chNull
1908 const XMLCh StatusCode::NO_AVAILABLE_IDP[] = // urn:oasis:names:tc:SAML:2.0:status:NoAvailableIDP
1909 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1910 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1911 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1912 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1913 chLatin_N, chLatin_o, chLatin_A, chLatin_v, chLatin_a, chLatin_i, chLatin_l, chLatin_a, chLatin_b, chLatin_l, chLatin_e,
1914 chLatin_I, chLatin_D, chLatin_P, chNull
1917 const XMLCh StatusCode::NO_PASSIVE[] = // urn:oasis:names:tc:SAML:2.0:status:NoPassive
1918 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1919 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1920 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1921 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1922 chLatin_N, chLatin_o, chLatin_P, chLatin_a, chLatin_s, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull
1925 const XMLCh StatusCode::NO_SUPPORTED_IDP[] = // urn:oasis:names:tc:SAML:2.0:status:NoSupportedIDP
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_N, chLatin_o, chLatin_S, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d,
1931 chLatin_I, chLatin_D, chLatin_P, chNull
1934 const XMLCh StatusCode::PARTIAL_LOGOUT[] = // urn:oasis:names:tc:SAML:2.0:status:PartialLogout
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_P, chLatin_a, chLatin_r, chLatin_t, chLatin_i, chLatin_a, chLatin_l,
1940 chLatin_L, chLatin_o, chLatin_g, chLatin_o, chLatin_u, chLatin_t, chNull
1943 const XMLCh StatusCode::PROXY_COUNT_EXCEEDED[] = // urn:oasis:names:tc:SAML:2.0:status:ProxyCountExceeded
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_P, chLatin_r, chLatin_o, chLatin_x, chLatin_y, chLatin_C, chLatin_o, chLatin_u, chLatin_n, chLatin_t,
1949 chLatin_E, chLatin_x, chLatin_c, chLatin_e, chLatin_e, chLatin_d, chLatin_e, chLatin_d, chNull
1952 const XMLCh StatusCode::REQUEST_DENIED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestDenied
1953 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1954 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1955 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1956 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1957 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1958 chLatin_D, chLatin_e, chLatin_n, chLatin_i, chLatin_e, chLatin_d, chNull
1961 const XMLCh StatusCode::REQUEST_UNSUPPORTED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported
1962 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1963 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1964 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1965 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1966 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1967 chLatin_U, chLatin_n, chLatin_s, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d, chNull
1970 const XMLCh StatusCode::REQUEST_VERSION_DEPRECATED[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionDeprecated
1971 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1972 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1973 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1974 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1975 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1976 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1977 chLatin_D, chLatin_e, chLatin_p, chLatin_r, chLatin_e, chLatin_c, chLatin_a, chLatin_t, chLatin_e, chLatin_d, chNull
1980 const XMLCh StatusCode::REQUEST_VERSION_TOO_HIGH[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionTooHigh
1981 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1982 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1983 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1984 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1985 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1986 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1987 chLatin_T, chLatin_o, chLatin_o, chLatin_H, chLatin_i, chLatin_g, chLatin_h, chNull
1990 const XMLCh StatusCode::REQUEST_VERSION_TOO_LOW[] = // urn:oasis:names:tc:SAML:2.0:status:RequestVersionTooLow
1991 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
1992 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
1993 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
1994 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
1995 chLatin_R, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_s, chLatin_t,
1996 chLatin_V, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n,
1997 chLatin_T, chLatin_o, chLatin_o, chLatin_L, chLatin_o, chLatin_w, chNull
2000 const XMLCh StatusCode::RESOURCE_NOT_RECOGNIZED[] = // urn:oasis:names:tc:SAML:2.0:status:ResourceNotRecognized
2001 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2002 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2003 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2004 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2005 chLatin_R, chLatin_e, chLatin_s, chLatin_o, chLatin_u, chLatin_r, chLatin_c, chLatin_e,
2006 chLatin_N, chLatin_o, chLatin_t,
2007 chLatin_R, chLatin_e, chLatin_c, chLatin_o, chLatin_g, chLatin_n, chLatin_i, chLatin_z, chLatin_e, chLatin_d, chNull
2010 const XMLCh StatusCode::TOO_MANY_RESPONSES[] = // urn:oasis:names:tc:SAML:2.0:status:TooManyResponses
2011 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2012 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2013 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2014 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2015 chLatin_T, chLatin_o, chLatin_o, chLatin_M, chLatin_a, chLatin_n, chLatin_y,
2016 chLatin_R, chLatin_e, chLatin_s, chLatin_p, chLatin_o, chLatin_n, chLatin_s, chLatin_e, chLatin_s, chNull
2019 const XMLCh StatusCode::UNKNOWN_ATTR_PROFILE[] = // urn:oasis:names:tc:SAML:2.0:status:UnknownAttrProfile
2020 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2021 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2022 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2023 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2024 chLatin_U, chLatin_n, chLatin_k, chLatin_n, chLatin_o, chLatin_w, chLatin_n,
2025 chLatin_A, chLatin_t, chLatin_t, chLatin_r,
2026 chLatin_P, chLatin_r, chLatin_o, chLatin_f, chLatin_i, chLatin_l, chLatin_e, chNull
2029 const XMLCh StatusCode::UNKNOWN_PRINCIPAL[] = // urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal
2030 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2031 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2032 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2033 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2034 chLatin_U, chLatin_n, chLatin_k, chLatin_n, chLatin_o, chLatin_w, chLatin_n,
2035 chLatin_P, chLatin_r, chLatin_i, chLatin_n, chLatin_c, chLatin_i, chLatin_p, chLatin_a, chLatin_l, chNull
2038 const XMLCh StatusCode::UNSUPPORTED_BINDING[] = // urn:oasis:names:tc:SAML:2.0:status:UnsupportedBinding
2039 { chLatin_u, chLatin_r, chLatin_n, chColon, chLatin_o, chLatin_a, chLatin_s, chLatin_i, chLatin_s, chColon,
2040 chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chColon, chLatin_t, chLatin_c, chColon,
2041 chLatin_S, chLatin_A, chLatin_M, chLatin_L, chColon, chDigit_2, chPeriod, chDigit_0, chColon,
2042 chLatin_s, chLatin_t, chLatin_a, chLatin_t, chLatin_u, chLatin_s, chColon,
2043 chLatin_U, chLatin_n, chLatin_s, chLatin_u, chLatin_p, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chLatin_e, chLatin_d,
2044 chLatin_B, chLatin_i, chLatin_n, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chNull