X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FMetadataImpl.cpp;h=ecef5e365c4eb2ee2ef7d6ce2613c3c86537dee2;hb=3fe2b35dc5b5866e3ce7bde70faab0815acfa5b6;hp=0f99b22521676f17757f9acf91d1a3ad673449f4;hpb=0547a02ac67aeb6607ac96dadb25aae560aecf20;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/metadata/impl/MetadataImpl.cpp b/saml/saml2/metadata/impl/MetadataImpl.cpp index 0f99b22..ecef5e3 100644 --- a/saml/saml2/metadata/impl/MetadataImpl.cpp +++ b/saml/saml2/metadata/impl/MetadataImpl.cpp @@ -1,17 +1,21 @@ -/* - * Copyright 2001-2010 Internet2 +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. */ /** @@ -72,6 +76,9 @@ namespace opensaml { DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,ActionNamespace); DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,SourceID); + DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,IPHint); + DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,DomainHint); + DECL_XMLOBJECTIMPL_SIMPLE(SAML_DLLLOCAL,GeolocationHint); class SAML_DLLLOCAL localizedNameTypeImpl : public virtual localizedNameType, public AbstractSimpleElement, @@ -103,20 +110,25 @@ namespace opensaml { localizedNameTypeImpl(const localizedNameTypeImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { init(); + } + + void _clone(const localizedNameTypeImpl& src) { setLang(src.getLang()); if (src.m_LangPrefix) m_LangPrefix = XMLString::replicate(src.m_LangPrefix); } - IMPL_XMLOBJECT_CLONE(localizedNameType); + IMPL_XMLOBJECT_CLONE_EX(localizedNameType); IMPL_XMLOBJECT_FOREIGN_ATTRIB(Lang,XMLCh); protected: void marshallAttributes(DOMElement* domElement) const { if (m_Lang && *m_Lang) { - DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(xmlconstants::XML_NS,LANG_ATTRIB_NAME); + DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(xmlconstants::XML_NS, LANG_ATTRIB_NAME); if (m_LangPrefix && *m_LangPrefix) attr->setPrefix(m_LangPrefix); + else + attr->setPrefix(xmlconstants::XML_PREFIX); attr->setNodeValue(m_Lang); domElement->setAttributeNodeNS(attr); } @@ -164,20 +176,25 @@ namespace opensaml { localizedURITypeImpl(const localizedURITypeImpl& src) : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { init(); + } + + void _clone(const localizedURITypeImpl& src) { setLang(src.getLang()); if (src.m_LangPrefix) m_LangPrefix = XMLString::replicate(src.m_LangPrefix); } - IMPL_XMLOBJECT_CLONE(localizedURIType); + IMPL_XMLOBJECT_CLONE_EX(localizedURIType); IMPL_XMLOBJECT_FOREIGN_ATTRIB(Lang,XMLCh); protected: void marshallAttributes(DOMElement* domElement) const { if (m_Lang && *m_Lang) { - DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(xmlconstants::XML_NS,LANG_ATTRIB_NAME); + DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(xmlconstants::XML_NS, LANG_ATTRIB_NAME); if (m_LangPrefix && *m_LangPrefix) attr->setPrefix(m_LangPrefix); + else + attr->setPrefix(xmlconstants::XML_PREFIX); attr->setNodeValue(m_Lang); domElement->setAttributeNodeNS(attr); } @@ -205,10 +222,7 @@ namespace opensaml { OrganizationNameImpl(const OrganizationNameImpl& src) : AbstractXMLObject(src), localizedNameTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(OrganizationName); - localizedNameType* clonelocalizedNameType() const { - return new OrganizationNameImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(OrganizationName); }; class SAML_DLLLOCAL OrganizationDisplayNameImpl : public virtual OrganizationDisplayName, public localizedNameTypeImpl @@ -221,10 +235,7 @@ namespace opensaml { OrganizationDisplayNameImpl(const OrganizationDisplayNameImpl& src) : AbstractXMLObject(src), localizedNameTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(OrganizationDisplayName); - localizedNameType* clonelocalizedNameType() const { - return new OrganizationDisplayNameImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(OrganizationDisplayName); }; class SAML_DLLLOCAL OrganizationURLImpl : public virtual OrganizationURL, public localizedURITypeImpl @@ -237,10 +248,7 @@ namespace opensaml { OrganizationURLImpl(const OrganizationURLImpl& src) : AbstractXMLObject(src), localizedURITypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(OrganizationURL); - localizedURIType* clonelocalizedURIType() const { - return new OrganizationURLImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(OrganizationURL); }; class SAML_DLLLOCAL ServiceNameImpl : public virtual ServiceName, public localizedNameTypeImpl @@ -253,10 +261,7 @@ namespace opensaml { ServiceNameImpl(const ServiceNameImpl& src) : AbstractXMLObject(src), localizedNameTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(ServiceName); - localizedNameType* clonelocalizedNameType() const { - return new ServiceNameImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(ServiceName); }; class SAML_DLLLOCAL ServiceDescriptionImpl : public virtual ServiceDescription, public localizedNameTypeImpl @@ -269,10 +274,7 @@ namespace opensaml { ServiceDescriptionImpl(const ServiceDescriptionImpl& src) : AbstractXMLObject(src), localizedNameTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(ServiceDescription); - localizedNameType* clonelocalizedNameType() const { - return new ServiceDescriptionImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(ServiceDescription); }; class SAML_DLLLOCAL ExtensionsImpl : public virtual Extensions, @@ -618,7 +620,8 @@ namespace opensaml { } EndpointTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + init(); } EndpointTypeImpl(const EndpointTypeImpl& src) @@ -626,6 +629,10 @@ namespace opensaml { AbstractAttributeExtensibleXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + init(); + } + + void _clone(const EndpointTypeImpl& src) { setBinding(src.getBinding()); setLocation(src.getLocation()); setResponseLocation(src.getResponseLocation()); @@ -634,7 +641,7 @@ namespace opensaml { v.push_back((*i)->clone()); } - IMPL_XMLOBJECT_CLONE(EndpointType); + IMPL_XMLOBJECT_CLONE_EX(EndpointType); IMPL_STRING_ATTRIB(Binding); IMPL_STRING_ATTRIB(Location); IMPL_STRING_ATTRIB(ResponseLocation); @@ -697,18 +704,21 @@ namespace opensaml { } IndexedEndpointTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + init(); + } IndexedEndpointTypeImpl(const IndexedEndpointTypeImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) { - setIndex(src.m_Index); - isDefault(src.m_isDefault); + init(); } - IMPL_XMLOBJECT_CLONE(IndexedEndpointType); - EndpointType* cloneEndpointType() const { - return new IndexedEndpointTypeImpl(*this); + void _clone(const IndexedEndpointTypeImpl& src) { + EndpointTypeImpl::_clone(src); + setIndex(src.m_Index); + isDefault(src.m_isDefault); } + IMPL_XMLOBJECT_CLONE_EX(IndexedEndpointType); IMPL_INTEGER_ATTRIB(Index); IMPL_BOOLEAN_ATTRIB(isDefault); @@ -744,13 +754,7 @@ namespace opensaml { ArtifactResolutionServiceImpl(const ArtifactResolutionServiceImpl& src) : AbstractXMLObject(src), IndexedEndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(ArtifactResolutionService); - IndexedEndpointType* cloneIndexedEndpointType() const { - return new ArtifactResolutionServiceImpl(*this); - } - EndpointType* cloneEndpointType() const { - return new ArtifactResolutionServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(ArtifactResolutionService); }; class SAML_DLLLOCAL SingleLogoutServiceImpl : public virtual SingleLogoutService, public EndpointTypeImpl @@ -763,10 +767,7 @@ namespace opensaml { SingleLogoutServiceImpl(const SingleLogoutServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(SingleLogoutService); - EndpointType* cloneEndpointType() const { - return new SingleLogoutServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(SingleLogoutService); }; class SAML_DLLLOCAL ManageNameIDServiceImpl : public virtual ManageNameIDService, public EndpointTypeImpl @@ -779,10 +780,7 @@ namespace opensaml { ManageNameIDServiceImpl(const ManageNameIDServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(ManageNameIDService); - EndpointType* cloneEndpointType() const { - return new ManageNameIDServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(ManageNameIDService); }; class SAML_DLLLOCAL SingleSignOnServiceImpl : public virtual SingleSignOnService, public EndpointTypeImpl @@ -795,10 +793,7 @@ namespace opensaml { SingleSignOnServiceImpl(const SingleSignOnServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(SingleSignOnService); - EndpointType* cloneEndpointType() const { - return new SingleSignOnServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(SingleSignOnService); }; class SAML_DLLLOCAL NameIDMappingServiceImpl : public virtual NameIDMappingService, public EndpointTypeImpl @@ -811,10 +806,7 @@ namespace opensaml { NameIDMappingServiceImpl(const NameIDMappingServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(NameIDMappingService); - EndpointType* cloneEndpointType() const { - return new NameIDMappingServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(NameIDMappingService); }; class SAML_DLLLOCAL AssertionIDRequestServiceImpl : public virtual AssertionIDRequestService, public EndpointTypeImpl @@ -827,10 +819,7 @@ namespace opensaml { AssertionIDRequestServiceImpl(const AssertionIDRequestServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(AssertionIDRequestService); - EndpointType* cloneEndpointType() const { - return new AssertionIDRequestServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(AssertionIDRequestService); }; class SAML_DLLLOCAL AssertionConsumerServiceImpl : public virtual AssertionConsumerService, public IndexedEndpointTypeImpl @@ -843,13 +832,7 @@ namespace opensaml { AssertionConsumerServiceImpl(const AssertionConsumerServiceImpl& src) : AbstractXMLObject(src), IndexedEndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(AssertionConsumerService); - EndpointType* cloneEndpointType() const { - return new AssertionConsumerServiceImpl(*this); - } - IndexedEndpointType* cloneIndexedEndpointType() const { - return new AssertionConsumerServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(AssertionConsumerService); }; class SAML_DLLLOCAL AuthnQueryServiceImpl : public virtual AuthnQueryService, public EndpointTypeImpl @@ -862,10 +845,7 @@ namespace opensaml { AuthnQueryServiceImpl(const AuthnQueryServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(AuthnQueryService); - EndpointType* cloneEndpointType() const { - return new AuthnQueryServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(AuthnQueryService); }; class SAML_DLLLOCAL AuthzServiceImpl : public virtual AuthzService, public EndpointTypeImpl @@ -878,10 +858,7 @@ namespace opensaml { AuthzServiceImpl(const AuthzServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(AuthzService); - EndpointType* cloneEndpointType() const { - return new AuthzServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(AuthzService); }; class SAML_DLLLOCAL AttributeServiceImpl : public virtual AttributeService, public EndpointTypeImpl @@ -894,10 +871,7 @@ namespace opensaml { AttributeServiceImpl(const AttributeServiceImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(AttributeService); - EndpointType* cloneEndpointType() const { - return new AttributeServiceImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(AttributeService); }; class SAML_DLLLOCAL RoleDescriptorImpl : public virtual RoleDescriptor, @@ -952,6 +926,9 @@ namespace opensaml { : AbstractXMLObject(src), AbstractComplexElement(src), AbstractAttributeExtensibleXMLObject(src), AbstractDOMCachingXMLObject(src) { init(); + } + + void _clone(const RoleDescriptorImpl& src) { setID(src.getID()); setProtocolSupportEnumeration(src.getProtocolSupportEnumeration()); setErrorURL(src.getErrorURL()); @@ -996,6 +973,10 @@ namespace opensaml { m_Signature->setContentReference(new opensaml::ContentReference(*this)); } + RoleDescriptor* cloneRoleDescriptor() const { + return dynamic_cast(clone()); + } + IMPL_ID_ATTRIB_EX(ID,ID,nullptr); IMPL_STRING_ATTRIB(ProtocolSupportEnumeration); IMPL_STRING_ATTRIB(ErrorURL); @@ -1128,16 +1109,16 @@ namespace opensaml { } RoleDescriptorTypeImpl(const RoleDescriptorTypeImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) { + } + + void _clone(const RoleDescriptorTypeImpl& src) { + RoleDescriptorImpl::_clone(src); VectorOf(XMLObject) v=getUnknownXMLObjects(); for (vector::const_iterator i=src.m_UnknownXMLObjects.begin(); i!=src.m_UnknownXMLObjects.end(); ++i) v.push_back((*i)->clone()); } - IMPL_XMLOBJECT_CLONE(RoleDescriptorType); - RoleDescriptor* cloneRoleDescriptor() const { - return new RoleDescriptorTypeImpl(*this); - } - + IMPL_XMLOBJECT_CLONE_EX(RoleDescriptorType); IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); protected: @@ -1183,6 +1164,10 @@ namespace opensaml { SSODescriptorTypeImpl(const SSODescriptorTypeImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) { init(); + } + + void _clone(const SSODescriptorTypeImpl& src) { + RoleDescriptorImpl::_clone(src); VectorOf(ArtifactResolutionService) v=getArtifactResolutionServices(); for (vector::const_iterator i=src.m_ArtifactResolutionServices.begin(); i!=src.m_ArtifactResolutionServices.end(); i++) { if (*i) { @@ -1209,6 +1194,10 @@ namespace opensaml { } } + SSODescriptorType* cloneSSODescriptorType() const { + return dynamic_cast(clone()); + } + IMPL_TYPED_CHILDREN(ArtifactResolutionService,m_pos_ArtifactResolutionService); IMPL_TYPED_CHILDREN(SingleLogoutService,m_pos_SingleLogoutService); IMPL_TYPED_CHILDREN(ManageNameIDService,m_pos_ManageNameIDService); @@ -1257,6 +1246,10 @@ namespace opensaml { IDPSSODescriptorImpl(const IDPSSODescriptorImpl& src) : AbstractXMLObject(src), SSODescriptorTypeImpl(src) { init(); + } + + void _clone(const IDPSSODescriptorImpl& src) { + SSODescriptorTypeImpl::_clone(src); WantAuthnRequestsSigned(src.m_WantAuthnRequestsSigned); VectorOf(SingleSignOnService) v=getSingleSignOnServices(); for (vector::const_iterator i=src.m_SingleSignOnServices.begin(); i!=src.m_SingleSignOnServices.end(); i++) { @@ -1290,14 +1283,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(IDPSSODescriptor); - SSODescriptorType* cloneSSODescriptorType() const { - return new IDPSSODescriptorImpl(*this); - } - RoleDescriptor* cloneRoleDescriptor() const { - return new IDPSSODescriptorImpl(*this); - } - + IMPL_XMLOBJECT_CLONE_EX(IDPSSODescriptor); IMPL_BOOLEAN_ATTRIB(WantAuthnRequestsSigned); IMPL_TYPED_CHILDREN(SingleSignOnService,m_pos_SingleSignOnService); IMPL_TYPED_CHILDREN(NameIDMappingService,m_pos_NameIDMappingService); @@ -1370,11 +1356,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(RequestedAttribute); - Attribute* cloneAttribute() const { - return new RequestedAttributeImpl(*this); - } - + IMPL_XMLOBJECT_CLONE2(RequestedAttribute,Attribute); IMPL_STRING_ATTRIB(Name); IMPL_STRING_ATTRIB(NameFormat); IMPL_STRING_ATTRIB(FriendlyName); @@ -1524,6 +1506,10 @@ namespace opensaml { SPSSODescriptorImpl(const SPSSODescriptorImpl& src) : AbstractXMLObject(src), SSODescriptorTypeImpl(src) { init(); + } + + void _clone(const SPSSODescriptorImpl& src) { + SSODescriptorTypeImpl::_clone(src); AuthnRequestsSigned(src.m_AuthnRequestsSigned); WantAssertionsSigned(src.m_WantAssertionsSigned); VectorOf(AssertionConsumerService) v=getAssertionConsumerServices(); @@ -1540,14 +1526,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(SPSSODescriptor); - SSODescriptorType* cloneSSODescriptorType() const { - return cloneSPSSODescriptor(); - } - RoleDescriptor* cloneRoleDescriptor() const { - return cloneSPSSODescriptor(); - } - + IMPL_XMLOBJECT_CLONE_EX(SPSSODescriptor); IMPL_BOOLEAN_ATTRIB(AuthnRequestsSigned); IMPL_BOOLEAN_ATTRIB(WantAssertionsSigned); IMPL_TYPED_CHILDREN(AssertionConsumerService,m_pos_AssertionConsumerService); @@ -1599,12 +1578,16 @@ namespace opensaml { virtual ~AuthnAuthorityDescriptorImpl() {} AuthnAuthorityDescriptorImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } AuthnAuthorityDescriptorImpl(const AuthnAuthorityDescriptorImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) { init(); + } + + void _clone(const AuthnAuthorityDescriptorImpl& src) { + RoleDescriptorImpl::_clone(src); VectorOf(AuthnQueryService) v=getAuthnQueryServices(); for (vector::const_iterator i=src.m_AuthnQueryServices.begin(); i!=src.m_AuthnQueryServices.end(); i++) { if (*i) { @@ -1625,11 +1608,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(AuthnAuthorityDescriptor); - RoleDescriptor* cloneRoleDescriptor() const { - return cloneAuthnAuthorityDescriptor(); - } - + IMPL_XMLOBJECT_CLONE_EX(AuthnAuthorityDescriptor); IMPL_TYPED_CHILDREN(AuthnQueryService,m_pos_AuthnQueryService); IMPL_TYPED_CHILDREN(AssertionIDRequestService,m_pos_AssertionIDRequestService); IMPL_TYPED_CHILDREN(NameIDFormat,m_children.end()); @@ -1661,12 +1640,16 @@ namespace opensaml { virtual ~PDPDescriptorImpl() {} PDPDescriptorImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } PDPDescriptorImpl(const PDPDescriptorImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) { init(); + } + + void _clone(const PDPDescriptorImpl& src) { + RoleDescriptorImpl::_clone(src); VectorOf(AuthzService) v=getAuthzServices(); for (vector::const_iterator i=src.m_AuthzServices.begin(); i!=src.m_AuthzServices.end(); i++) { if (*i) { @@ -1687,11 +1670,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(PDPDescriptor); - RoleDescriptor* cloneRoleDescriptor() const { - return clonePDPDescriptor(); - } - + IMPL_XMLOBJECT_CLONE_EX(PDPDescriptor); IMPL_TYPED_CHILDREN(AuthzService,m_pos_AuthzService); IMPL_TYPED_CHILDREN(AssertionIDRequestService,m_pos_AssertionIDRequestService); IMPL_TYPED_CHILDREN(NameIDFormat,m_children.end()); @@ -1731,12 +1710,16 @@ namespace opensaml { virtual ~AttributeAuthorityDescriptorImpl() {} AttributeAuthorityDescriptorImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } AttributeAuthorityDescriptorImpl(const AttributeAuthorityDescriptorImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) { init(); + } + + void _clone(const AttributeAuthorityDescriptorImpl& src) { + RoleDescriptorImpl::_clone(src); VectorOf(AttributeService) v=getAttributeServices(); for (vector::const_iterator i=src.m_AttributeServices.begin(); i!=src.m_AttributeServices.end(); i++) { if (*i) { @@ -1769,11 +1752,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(AttributeAuthorityDescriptor); - RoleDescriptor* cloneRoleDescriptor() const { - return cloneAttributeAuthorityDescriptor(); - } - + IMPL_XMLOBJECT_CLONE_EX(AttributeAuthorityDescriptor); IMPL_TYPED_CHILDREN(AttributeService,m_pos_AttributeService); IMPL_TYPED_CHILDREN(AssertionIDRequestService,m_pos_AssertionIDRequestService); IMPL_TYPED_CHILDREN(NameIDFormat,m_pos_NameIDFormat); @@ -1811,12 +1790,16 @@ namespace opensaml { virtual ~QueryDescriptorTypeImpl() {} QueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) - : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { init(); } QueryDescriptorTypeImpl(const QueryDescriptorTypeImpl& src) : AbstractXMLObject(src), RoleDescriptorImpl(src) { init(); + } + + void _clone(const QueryDescriptorTypeImpl& src) { + RoleDescriptorImpl::_clone(src); WantAssertionsSigned(src.m_WantAssertionsSigned); VectorOf(NameIDFormat) y=getNameIDFormats(); for (vector::const_iterator m=src.m_NameIDFormats.begin(); m!=src.m_NameIDFormats.end(); m++) { @@ -1826,6 +1809,10 @@ namespace opensaml { } } + QueryDescriptorType* cloneQueryDescriptorType() const { + return dynamic_cast(clone()); + } + IMPL_BOOLEAN_ATTRIB(WantAssertionsSigned); IMPL_TYPED_CHILDREN(NameIDFormat,m_pos_NameIDFormat); @@ -1861,13 +1848,7 @@ namespace opensaml { AuthnQueryDescriptorTypeImpl(const AuthnQueryDescriptorTypeImpl& src) : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) {} - IMPL_XMLOBJECT_CLONE(AuthnQueryDescriptorType); - QueryDescriptorType* cloneQueryDescriptorType() const { - return new AuthnQueryDescriptorTypeImpl(*this); - } - RoleDescriptor* cloneRoleDescriptor() const { - return new AuthnQueryDescriptorTypeImpl(*this); - } + IMPL_XMLOBJECT_CLONE_EX(AuthnQueryDescriptorType); }; class SAML_DLLLOCAL AttributeQueryDescriptorTypeImpl : public virtual AttributeQueryDescriptorType, public QueryDescriptorTypeImpl @@ -1878,8 +1859,11 @@ namespace opensaml { AttributeQueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - AttributeQueryDescriptorTypeImpl(const AttributeQueryDescriptorTypeImpl& src) - : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) { + AttributeQueryDescriptorTypeImpl(const AttributeQueryDescriptorTypeImpl& src) : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) { + } + + void _clone(const AttributeQueryDescriptorTypeImpl& src) { + QueryDescriptorTypeImpl::_clone(src); VectorOf(AttributeConsumingService) w=getAttributeConsumingServices(); for (vector::const_iterator j=src.m_AttributeConsumingServices.begin(); j!=src.m_AttributeConsumingServices.end(); j++) { if (*j) { @@ -1888,14 +1872,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(AttributeQueryDescriptorType); - QueryDescriptorType* cloneQueryDescriptorType() const { - return new AttributeQueryDescriptorTypeImpl(*this); - } - RoleDescriptor* cloneRoleDescriptor() const { - return new AttributeQueryDescriptorTypeImpl(*this); - } - + IMPL_XMLOBJECT_CLONE_EX(AttributeQueryDescriptorType); IMPL_TYPED_CHILDREN(AttributeConsumingService,m_children.end()); protected: @@ -1913,8 +1890,11 @@ namespace opensaml { AuthzDecisionQueryDescriptorTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} - AuthzDecisionQueryDescriptorTypeImpl(const AuthzDecisionQueryDescriptorTypeImpl& src) - : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) { + AuthzDecisionQueryDescriptorTypeImpl(const AuthzDecisionQueryDescriptorTypeImpl& src) : AbstractXMLObject(src), QueryDescriptorTypeImpl(src) { + } + + void _clone(const AuthzDecisionQueryDescriptorTypeImpl& src) { + QueryDescriptorTypeImpl::_clone(src); VectorOf(ActionNamespace) w=getActionNamespaces(); for (vector::const_iterator j=src.m_ActionNamespaces.begin(); j!=src.m_ActionNamespaces.end(); j++) { if (*j) { @@ -1923,14 +1903,7 @@ namespace opensaml { } } - IMPL_XMLOBJECT_CLONE(AuthzDecisionQueryDescriptorType); - QueryDescriptorType* cloneQueryDescriptorType() const { - return new AuthzDecisionQueryDescriptorTypeImpl(*this); - } - RoleDescriptor* cloneRoleDescriptor() const { - return new AuthzDecisionQueryDescriptorTypeImpl(*this); - } - + IMPL_XMLOBJECT_CLONE_EX(AuthzDecisionQueryDescriptorType); IMPL_TYPED_CHILDREN(ActionNamespace,m_children.end()); protected: @@ -2460,6 +2433,32 @@ namespace opensaml { } }; + class SAML_DLLLOCAL DiscoveryResponseImpl : public virtual DiscoveryResponse, public IndexedEndpointTypeImpl + { + public: + virtual ~DiscoveryResponseImpl() {} + + DiscoveryResponseImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + + DiscoveryResponseImpl(const DiscoveryResponseImpl& src) : AbstractXMLObject(src), IndexedEndpointTypeImpl(src) {} + + IMPL_XMLOBJECT_CLONE_EX(DiscoveryResponse); + }; + + class SAML_DLLLOCAL RequestInitiatorImpl : public virtual RequestInitiator, public EndpointTypeImpl + { + public: + virtual ~RequestInitiatorImpl() {} + + RequestInitiatorImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + + RequestInitiatorImpl(const RequestInitiatorImpl& src) : AbstractXMLObject(src), EndpointTypeImpl(src) {} + + IMPL_XMLOBJECT_CLONE_EX(RequestInitiator); + }; + class SAML_DLLLOCAL EntityAttributesImpl : public virtual EntityAttributes, public AbstractComplexElement, public AbstractDOMCachingXMLObject, @@ -2493,7 +2492,6 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(EntityAttributes); - IMPL_TYPED_FOREIGN_CHILDREN(Attribute,saml2,m_children.end()); IMPL_TYPED_FOREIGN_CHILDREN(Assertion,saml2,m_children.end()); @@ -2529,9 +2527,8 @@ namespace opensaml { v.push_back((*i)->clone()); } - IMPL_STRING_ATTRIB(Algorithm); - IMPL_XMLOBJECT_CLONE(DigestMethod); + IMPL_STRING_ATTRIB(Algorithm); IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); protected: @@ -2580,11 +2577,10 @@ namespace opensaml { } IMPL_XMLOBJECT_CLONE(SigningMethod); - IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); - IMPL_STRING_ATTRIB(Algorithm); IMPL_INTEGER_ATTRIB(MinKeySize); IMPL_INTEGER_ATTRIB(MaxKeySize); + IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); protected: void marshallAttributes(DOMElement* domElement) const { @@ -2605,6 +2601,346 @@ namespace opensaml { } }; + class SAML_DLLLOCAL DisplayNameImpl : public virtual DisplayName, public localizedNameTypeImpl + { + public: + virtual ~DisplayNameImpl() {} + + DisplayNameImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + + DisplayNameImpl(const DisplayNameImpl& src) : AbstractXMLObject(src), localizedNameTypeImpl(src) {} + + IMPL_XMLOBJECT_CLONE_EX(DisplayName); + }; + + class SAML_DLLLOCAL DescriptionImpl : public virtual Description, public localizedNameTypeImpl + { + public: + virtual ~DescriptionImpl() {} + + DescriptionImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + + DescriptionImpl(const DescriptionImpl& src) : AbstractXMLObject(src), localizedNameTypeImpl(src) {} + + IMPL_XMLOBJECT_CLONE_EX(Description); + }; + + class SAML_DLLLOCAL InformationURLImpl : public virtual InformationURL, public localizedURITypeImpl + { + public: + virtual ~InformationURLImpl() {} + + InformationURLImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + + InformationURLImpl(const InformationURLImpl& src) : AbstractXMLObject(src), localizedURITypeImpl(src) {} + + IMPL_XMLOBJECT_CLONE_EX(InformationURL); + }; + + class SAML_DLLLOCAL PrivacyStatementURLImpl : public virtual PrivacyStatementURL, public localizedURITypeImpl + { + public: + virtual ~PrivacyStatementURLImpl() {} + + PrivacyStatementURLImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) {} + + PrivacyStatementURLImpl(const PrivacyStatementURLImpl& src) : AbstractXMLObject(src), localizedURITypeImpl(src) {} + + IMPL_XMLOBJECT_CLONE_EX(PrivacyStatementURL); + }; + + class SAML_DLLLOCAL KeywordsImpl : public virtual Keywords, + public AbstractSimpleElement, + public AbstractDOMCachingXMLObject, + public AbstractXMLObjectMarshaller, + public AbstractXMLObjectUnmarshaller + { + void init() { + m_Lang=nullptr; + m_LangPrefix=nullptr; + } + + protected: + KeywordsImpl() { + init(); + } + + public: + virtual ~KeywordsImpl() { + XMLString::release(&m_Lang); + XMLString::release(&m_LangPrefix); + } + + KeywordsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + init(); + } + + KeywordsImpl(const KeywordsImpl& src) + : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { + init(); + setLang(src.getLang()); + if (src.m_LangPrefix) + m_LangPrefix = XMLString::replicate(src.m_LangPrefix); + } + + IMPL_XMLOBJECT_CLONE(Keywords); + IMPL_XMLOBJECT_FOREIGN_ATTRIB(Lang,XMLCh); + + protected: + void marshallAttributes(DOMElement* domElement) const { + if (m_Lang && *m_Lang) { + DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(xmlconstants::XML_NS, LANG_ATTRIB_NAME); + if (m_LangPrefix && *m_LangPrefix) + attr->setPrefix(m_LangPrefix); + else + attr->setPrefix(xmlconstants::XML_PREFIX); + attr->setNodeValue(m_Lang); + domElement->setAttributeNodeNS(attr); + } + } + + void processAttribute(const DOMAttr* attribute) { + if (XMLHelper::isNodeNamed(attribute, xmlconstants::XML_NS, LANG_ATTRIB_NAME)) { + setLang(attribute->getValue()); + const XMLCh* temp = attribute->getPrefix(); + if (temp && *temp && !XMLString::equals(temp, xmlconstants::XML_NS)) + m_LangPrefix = XMLString::replicate(temp); + return; + } + AbstractXMLObjectUnmarshaller::processAttribute(attribute); + } + }; + + class SAML_DLLLOCAL LogoImpl : public virtual Logo, + public AbstractSimpleElement, + public AbstractDOMCachingXMLObject, + public AbstractXMLObjectMarshaller, + public AbstractXMLObjectUnmarshaller + { + void init() { + m_Lang=nullptr; + m_LangPrefix=nullptr; + m_Height=nullptr; + m_Width=nullptr; + } + + protected: + LogoImpl() { + init(); + } + + public: + virtual ~LogoImpl() { + XMLString::release(&m_Lang); + XMLString::release(&m_LangPrefix); + XMLString::release(&m_Height); + XMLString::release(&m_Width); + } + + LogoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + init(); + } + + LogoImpl(const LogoImpl& src) + : AbstractXMLObject(src), AbstractSimpleElement(src), AbstractDOMCachingXMLObject(src) { + init(); + setLang(src.getLang()); + if (src.m_LangPrefix) + m_LangPrefix = XMLString::replicate(src.m_LangPrefix); + setHeight(src.m_Height); + setWidth(src.m_Width); + } + + IMPL_XMLOBJECT_CLONE(Logo); + IMPL_XMLOBJECT_FOREIGN_ATTRIB(Lang,XMLCh); + IMPL_INTEGER_ATTRIB(Height); + IMPL_INTEGER_ATTRIB(Width); + + protected: + void marshallAttributes(DOMElement* domElement) const { + if (m_Lang && *m_Lang) { + DOMAttr* attr=domElement->getOwnerDocument()->createAttributeNS(xmlconstants::XML_NS, LANG_ATTRIB_NAME); + if (m_LangPrefix && *m_LangPrefix) + attr->setPrefix(m_LangPrefix); + else + attr->setPrefix(xmlconstants::XML_PREFIX); + attr->setNodeValue(m_Lang); + domElement->setAttributeNodeNS(attr); + } + MARSHALL_INTEGER_ATTRIB(Height,HEIGHT,nullptr); + MARSHALL_INTEGER_ATTRIB(Width,WIDTH,nullptr); + } + + void processAttribute(const DOMAttr* attribute) { + if (XMLHelper::isNodeNamed(attribute, xmlconstants::XML_NS, LANG_ATTRIB_NAME)) { + setLang(attribute->getValue()); + const XMLCh* temp = attribute->getPrefix(); + if (temp && *temp && !XMLString::equals(temp, xmlconstants::XML_NS)) + m_LangPrefix = XMLString::replicate(temp); + return; + } + PROC_INTEGER_ATTRIB(Height,HEIGHT,nullptr); + PROC_INTEGER_ATTRIB(Width,WIDTH,nullptr); + AbstractXMLObjectUnmarshaller::processAttribute(attribute); + } + }; + + class SAML_DLLLOCAL UIInfoImpl : public virtual UIInfo, + public AbstractComplexElement, + public AbstractDOMCachingXMLObject, + public AbstractXMLObjectMarshaller, + public AbstractXMLObjectUnmarshaller + { + public: + virtual ~UIInfoImpl() {} + + UIInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + } + + UIInfoImpl(const UIInfoImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { + if (*i) { + DisplayName* dn=dynamic_cast(*i); + if (dn) { + getDisplayNames().push_back(dn->cloneDisplayName()); + continue; + } + + Description* des=dynamic_cast(*i); + if (des) { + getDescriptions().push_back(des->cloneDescription()); + continue; + } + + Keywords* key=dynamic_cast(*i); + if (key) { + getKeywordss().push_back(key->cloneKeywords()); + continue; + } + + Logo* logo=dynamic_cast(*i); + if (logo) { + getLogos().push_back(logo->cloneLogo()); + continue; + } + + InformationURL* inf=dynamic_cast(*i); + if (inf) { + getInformationURLs().push_back(inf->cloneInformationURL()); + continue; + } + + PrivacyStatementURL* priv=dynamic_cast(*i); + if (priv) { + getPrivacyStatementURLs().push_back(priv->clonePrivacyStatementURL()); + continue; + } + + getUnknownXMLObjects().push_back((*i)->clone()); + } + } + } + + IMPL_XMLOBJECT_CLONE(UIInfo); + IMPL_TYPED_CHILDREN(DisplayName,m_children.end()); + IMPL_TYPED_CHILDREN(Description,m_children.end()); + IMPL_TYPED_CHILDREN(Keywords,m_children.end()); + IMPL_TYPED_CHILDREN(Logo,m_children.end()); + IMPL_TYPED_CHILDREN(InformationURL,m_children.end()); + IMPL_TYPED_CHILDREN(PrivacyStatementURL,m_children.end()); + IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); + + protected: + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { + PROC_TYPED_CHILDREN(DisplayName,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(Description,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(Keywords,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(Logo,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(InformationURL,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(PrivacyStatementURL,SAML20MD_UI_NS,false); + + // Unknown child. + const XMLCh* nsURI=root->getNamespaceURI(); + if (!XMLString::equals(nsURI,SAML20MD_UI_NS) && nsURI && *nsURI) { + getUnknownXMLObjects().push_back(childXMLObject); + return; + } + + AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); + } + }; + + class SAML_DLLLOCAL DiscoHintsImpl : public virtual DiscoHints, + public AbstractComplexElement, + public AbstractDOMCachingXMLObject, + public AbstractXMLObjectMarshaller, + public AbstractXMLObjectUnmarshaller + { + public: + virtual ~DiscoHintsImpl() {} + + DiscoHintsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) + : AbstractXMLObject(nsURI, localName, prefix, schemaType) { + } + + DiscoHintsImpl(const DiscoHintsImpl& src) + : AbstractXMLObject(src), AbstractComplexElement(src), AbstractDOMCachingXMLObject(src) { + for (list::const_iterator i=src.m_children.begin(); i!=src.m_children.end(); i++) { + if (*i) { + IPHint* ip=dynamic_cast(*i); + if (ip) { + getIPHints().push_back(ip->cloneIPHint()); + continue; + } + + DomainHint* dom=dynamic_cast(*i); + if (dom) { + getDomainHints().push_back(dom->cloneDomainHint()); + continue; + } + + GeolocationHint* geo=dynamic_cast(*i); + if (geo) { + getGeolocationHints().push_back(geo->cloneGeolocationHint()); + continue; + } + + getUnknownXMLObjects().push_back((*i)->clone()); + } + } + } + + IMPL_XMLOBJECT_CLONE(DiscoHints); + IMPL_TYPED_CHILDREN(IPHint,m_children.end()); + IMPL_TYPED_CHILDREN(DomainHint,m_children.end()); + IMPL_TYPED_CHILDREN(GeolocationHint,m_children.end()); + IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject,m_children.end()); + + protected: + void processChildElement(XMLObject* childXMLObject, const DOMElement* root) { + PROC_TYPED_CHILDREN(IPHint,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(DomainHint,SAML20MD_UI_NS,false); + PROC_TYPED_CHILDREN(GeolocationHint,SAML20MD_UI_NS,false); + + // Unknown child. + const XMLCh* nsURI=root->getNamespaceURI(); + if (!XMLString::equals(nsURI,SAML20MD_UI_NS) && nsURI && *nsURI) { + getUnknownXMLObjects().push_back(childXMLObject); + return; + } + + AbstractXMLObjectUnmarshaller::processChildElement(childXMLObject,root); + } + }; + }; }; @@ -2671,9 +3007,22 @@ IMPL_XMLOBJECTBUILDER(TelephoneNumber); IMPL_XMLOBJECTBUILDER(ActionNamespace); IMPL_XMLOBJECTBUILDER(SourceID); +IMPL_XMLOBJECTBUILDER(DiscoveryResponse); +IMPL_XMLOBJECTBUILDER(RequestInitiator); IMPL_XMLOBJECTBUILDER(EntityAttributes); IMPL_XMLOBJECTBUILDER(DigestMethod); IMPL_XMLOBJECTBUILDER(SigningMethod); +IMPL_XMLOBJECTBUILDER(DisplayName); +IMPL_XMLOBJECTBUILDER(Description); +IMPL_XMLOBJECTBUILDER(Keywords); +IMPL_XMLOBJECTBUILDER(Logo); +IMPL_XMLOBJECTBUILDER(InformationURL); +IMPL_XMLOBJECTBUILDER(PrivacyStatementURL); +IMPL_XMLOBJECTBUILDER(UIInfo); +IMPL_XMLOBJECTBUILDER(IPHint); +IMPL_XMLOBJECTBUILDER(DomainHint); +IMPL_XMLOBJECTBUILDER(GeolocationHint); +IMPL_XMLOBJECTBUILDER(DiscoHints); #ifdef HAVE_COVARIANT_RETURNS RoleDescriptor* RoleDescriptorBuilder::buildObject( @@ -2696,7 +3045,7 @@ const DigestMethod* RoleDescriptor::getDigestMethod() const for (vector::const_iterator i = exts.begin(); i != exts.end(); ++i) { const opensaml::saml2md::DigestMethod* dm = dynamic_cast(*i); if (dm) { - if (dm->getAlgorithm() && conf.isXMLAlgorithmSupported(dm->getAlgorithm())) + if (dm->getAlgorithm() && conf.isXMLAlgorithmSupported(dm->getAlgorithm(), XMLToolingConfig::ALGTYPE_DIGEST)) return dm; roleLevel = true; } @@ -2709,7 +3058,7 @@ const DigestMethod* RoleDescriptor::getDigestMethod() const const vector& exts = const_cast(entity->getExtensions())->getUnknownXMLObjects(); for (vector::const_iterator i = exts.begin(); i != exts.end(); ++i) { const opensaml::saml2md::DigestMethod* dm = dynamic_cast(*i); - if (dm && dm->getAlgorithm() && conf.isXMLAlgorithmSupported(dm->getAlgorithm())) + if (dm && dm->getAlgorithm() && conf.isXMLAlgorithmSupported(dm->getAlgorithm(), XMLToolingConfig::ALGTYPE_DIGEST)) return dm; } } @@ -2729,7 +3078,7 @@ pair RoleDescriptor::getSigningMethod(co const SigningMethod* sm = dynamic_cast(*i); if (sm) { roleLevel = true; - if (sm->getAlgorithm() && conf.isXMLAlgorithmSupported(sm->getAlgorithm())) { + if (sm->getAlgorithm() && conf.isXMLAlgorithmSupported(sm->getAlgorithm(), XMLToolingConfig::ALGTYPE_SIGN)) { cc.setXMLAlgorithm(sm->getAlgorithm()); pair minsize = sm->getMinKeySize(), maxsize = sm->getMaxKeySize(); if (minsize.first || maxsize.first) { @@ -2755,7 +3104,7 @@ pair RoleDescriptor::getSigningMethod(co for (vector::const_iterator i = exts.begin(); i != exts.end(); ++i) { const SigningMethod* sm = dynamic_cast(*i); if (sm) { - if (sm->getAlgorithm() && conf.isXMLAlgorithmSupported(sm->getAlgorithm())) { + if (sm->getAlgorithm() && conf.isXMLAlgorithmSupported(sm->getAlgorithm(), XMLToolingConfig::ALGTYPE_SIGN)) { cc.setXMLAlgorithm(sm->getAlgorithm()); pair minsize = sm->getMinKeySize(), maxsize = sm->getMaxKeySize(); if (minsize.first || maxsize.first) { @@ -2821,9 +3170,15 @@ const XMLCh ContactPerson::CONTACT_SUPPORT[] = UNICODE_LITERAL_7(s,u,p, const XMLCh ContactPerson::CONTACT_ADMINISTRATIVE[] = UNICODE_LITERAL_14(a,d,m,i,n,i,s,t,r,a,t,i,v,e); const XMLCh ContactPerson::CONTACT_BILLING[] = UNICODE_LITERAL_7(b,i,l,l,i,n,g); const XMLCh ContactPerson::CONTACT_OTHER[] = UNICODE_LITERAL_5(o,t,h,e,r); +const XMLCh Description::LOCAL_NAME[] = UNICODE_LITERAL_11(D,e,s,c,r,i,p,t,i,o,n); const XMLCh DigestMethod::LOCAL_NAME[] = UNICODE_LITERAL_12(D,i,g,e,s,t,M,e,t,h,o,d); const XMLCh DigestMethod::TYPE_NAME[] = UNICODE_LITERAL_16(D,i,g,e,s,t,M,e,t,h,o,d,T,y,p,e); const XMLCh DigestMethod::ALGORITHM_ATTRIB_NAME[] = UNICODE_LITERAL_9(A,l,g,o,r,i,t,h,m); +const XMLCh DiscoHints::LOCAL_NAME[] = UNICODE_LITERAL_10(D,i,s,c,o,H,i,n,t,s); +const XMLCh DiscoHints::TYPE_NAME[] = UNICODE_LITERAL_14(D,i,s,c,o,H,i,n,t,s,T,y,p,e); +const XMLCh DiscoveryResponse::LOCAL_NAME[] = UNICODE_LITERAL_17(D,i,s,c,o,v,e,r,y,R,e,s,p,o,n,s,e); +const XMLCh DisplayName::LOCAL_NAME[] = UNICODE_LITERAL_11(D,i,s,p,l,a,y,N,a,m,e); +const XMLCh DomainHint::LOCAL_NAME[] = UNICODE_LITERAL_10(D,o,m,a,i,n,H,i,n,t); const XMLCh EmailAddress::LOCAL_NAME[] = UNICODE_LITERAL_12(E,m,a,i,l,A,d,d,r,e,s,s); const XMLCh EndpointType::LOCAL_NAME[] = {chNull}; const XMLCh EndpointType::TYPE_NAME[] = UNICODE_LITERAL_12(E,n,d,p,o,i,n,t,T,y,p,e); @@ -2842,6 +3197,7 @@ const XMLCh EntityAttributes::LOCAL_NAME[] = UNICODE_LITERAL_16(E,n,t const XMLCh EntityAttributes::TYPE_NAME[] = UNICODE_LITERAL_20(E,n,t,i,t,y,A,t,t,r,i,b,u,t,e,s,T,y,p,e); const XMLCh Extensions::LOCAL_NAME[] = UNICODE_LITERAL_10(E,x,t,e,n,s,i,o,n,s); const XMLCh Extensions::TYPE_NAME[] = UNICODE_LITERAL_14(E,x,t,e,n,s,i,o,n,s,T,y,p,e); +const XMLCh GeolocationHint::LOCAL_NAME[] = UNICODE_LITERAL_15(G,e,o,l,o,c,a,t,i,o,n,H,i,n,t); const XMLCh GivenName::LOCAL_NAME[] = UNICODE_LITERAL_9(G,i,v,e,n,N,a,m,e); const XMLCh IDPSSODescriptor::LOCAL_NAME[] = UNICODE_LITERAL_16(I,D,P,S,S,O,D,e,s,c,r,i,p,t,o,r); const XMLCh IDPSSODescriptor::TYPE_NAME[] = UNICODE_LITERAL_20(I,D,P,S,S,O,D,e,s,c,r,i,p,t,o,r,T,y,p,e); @@ -2850,11 +3206,21 @@ const XMLCh IndexedEndpointType::LOCAL_NAME[] = {chNull}; const XMLCh IndexedEndpointType::TYPE_NAME[] = UNICODE_LITERAL_19(I,n,d,e,x,e,d,E,n,d,p,o,i,n,t,T,y,p,e); const XMLCh IndexedEndpointType::INDEX_ATTRIB_NAME[] = UNICODE_LITERAL_5(i,n,d,e,x); const XMLCh IndexedEndpointType::ISDEFAULT_ATTRIB_NAME[] = UNICODE_LITERAL_9(i,s,D,e,f,a,u,l,t); +const XMLCh InformationURL::LOCAL_NAME[] = UNICODE_LITERAL_14(I,n,f,o,r,m,a,t,i,o,n,U,R,L); +const XMLCh IPHint::LOCAL_NAME[] = UNICODE_LITERAL_6(I,P,H,i,n,t); const XMLCh KeyDescriptor::LOCAL_NAME[] = UNICODE_LITERAL_13(K,e,y,D,e,s,c,r,i,p,t,o,r); const XMLCh KeyDescriptor::TYPE_NAME[] = UNICODE_LITERAL_17(K,e,y,D,e,s,c,r,i,p,t,o,r,T,y,p,e); const XMLCh KeyDescriptor::USE_ATTRIB_NAME[] = UNICODE_LITERAL_3(u,s,e); const XMLCh KeyDescriptor::KEYTYPE_ENCRYPTION[] = UNICODE_LITERAL_10(e,n,c,r,y,p,t,i,o,n); const XMLCh KeyDescriptor::KEYTYPE_SIGNING[] = UNICODE_LITERAL_7(s,i,g,n,i,n,g); +const XMLCh Keywords::LOCAL_NAME[] = UNICODE_LITERAL_8(K,e,y,w,o,r,d,s); +const XMLCh Keywords::TYPE_NAME[] = UNICODE_LITERAL_12(K,e,y,w,o,r,d,s,T,y,p,e); +const XMLCh Keywords::LANG_ATTRIB_NAME[] = UNICODE_LITERAL_4(l,a,n,g); +const XMLCh Logo::LOCAL_NAME[] = UNICODE_LITERAL_4(L,o,g,o); +const XMLCh Logo::TYPE_NAME[] = UNICODE_LITERAL_8(L,o,g,o,T,y,p,e); +const XMLCh Logo::LANG_ATTRIB_NAME[] = UNICODE_LITERAL_4(l,a,n,g); +const XMLCh Logo::HEIGHT_ATTRIB_NAME[] = UNICODE_LITERAL_6(h,e,i,g,h,t); +const XMLCh Logo::WIDTH_ATTRIB_NAME[] = UNICODE_LITERAL_5(w,i,d,t,h); const XMLCh localizedNameType::LOCAL_NAME[] = {chNull}; const XMLCh localizedNameType::TYPE_NAME[] = UNICODE_LITERAL_17(l,o,c,a,l,i,z,e,d,N,a,m,e,T,y,p,e); const XMLCh localizedNameType::LANG_ATTRIB_NAME[] = UNICODE_LITERAL_4(l,a,n,g); @@ -2871,12 +3237,14 @@ const XMLCh OrganizationDisplayName::LOCAL_NAME[] = UNICODE_LITERAL_23(O,r,g const XMLCh OrganizationURL::LOCAL_NAME[] = UNICODE_LITERAL_15(O,r,g,a,n,i,z,a,t,i,o,n,U,R,L); const XMLCh PDPDescriptor::LOCAL_NAME[] = UNICODE_LITERAL_13(P,D,P,D,e,s,c,r,i,p,t,o,r); const XMLCh PDPDescriptor::TYPE_NAME[] = UNICODE_LITERAL_17(P,D,P,D,e,s,c,r,i,p,t,o,r,T,y,p,e); +const XMLCh PrivacyStatementURL::LOCAL_NAME[] = UNICODE_LITERAL_19(P,r,i,v,a,c,y,S,t,a,t,e,m,e,n,t,U,R,L); const XMLCh QueryDescriptorType::LOCAL_NAME[] = {chNull}; const XMLCh QueryDescriptorType::TYPE_NAME[] = UNICODE_LITERAL_19(Q,u,e,r,y,D,e,s,c,r,i,p,t,o,r,T,y,p,e); const XMLCh QueryDescriptorType::WANTASSERTIONSSIGNED_ATTRIB_NAME[] = UNICODE_LITERAL_20(W,a,n,t,A,s,s,e,r,t,i,o,n,s,S,i,g,n,e,d); const XMLCh RequestedAttribute::LOCAL_NAME[] = UNICODE_LITERAL_18(R,e,q,u,e,s,t,e,d,A,t,t,r,i,b,u,t,e); const XMLCh RequestedAttribute::TYPE_NAME[] = UNICODE_LITERAL_22(R,e,q,u,e,s,t,e,d,A,t,t,r,i,b,u,t,e,T,y,p,e); const XMLCh RequestedAttribute::ISREQUIRED_ATTRIB_NAME[] = UNICODE_LITERAL_10(i,s,R,e,q,u,i,r,e,d); +const XMLCh RequestInitiator::LOCAL_NAME[] = UNICODE_LITERAL_16(R,e,q,u,e,s,t,I,n,i,t,i,a,t,o,r); const XMLCh RoleDescriptor::LOCAL_NAME[] = UNICODE_LITERAL_14(R,o,l,e,D,e,s,c,r,i,p,t,o,r); const XMLCh RoleDescriptor::ID_ATTRIB_NAME[] = UNICODE_LITERAL_2(I,D); const XMLCh RoleDescriptor::PROTOCOLSUPPORTENUMERATION_ATTRIB_NAME[] = UNICODE_LITERAL_26(p,r,o,t,o,c,o,l,S,u,p,p,o,r,t,E,n,u,m,e,r,a,t,i,o,n); @@ -2900,3 +3268,5 @@ const XMLCh SSODescriptorType::TYPE_NAME[] = UNICODE_LITERAL_17(S,S,O const XMLCh SurName::LOCAL_NAME[] = UNICODE_LITERAL_7(S,u,r,N,a,m,e); const XMLCh TelephoneNumber::LOCAL_NAME[] = UNICODE_LITERAL_15(T,e,l,e,p,h,o,n,e,N,u,m,b,e,r); const XMLCh TimeBoundSAMLObject::VALIDUNTIL_ATTRIB_NAME[] = UNICODE_LITERAL_10(v,a,l,i,d,U,n,t,i,l); +const XMLCh UIInfo::LOCAL_NAME[] = UNICODE_LITERAL_6(U,I,I,n,f,o); +const XMLCh UIInfo::TYPE_NAME[] = UNICODE_LITERAL_10(U,I,I,n,f,o,T,y,p,e);