/usr/include/saml/saml2/metadata/AbstractMetadataProvider.h is in libsaml2-dev 2.6.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | /**
* 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.
*
* 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
*
* 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.
*/
/**
* @file saml/saml2/metadata/AbstractMetadataProvider.h
*
* Base class for caching metadata providers.
*/
#ifndef __saml2_absmetadataprov_h__
#define __saml2_absmetadataprov_h__
#include <saml/saml2/metadata/ObservableMetadataProvider.h>
#include <ctime>
#include <map>
#include <vector>
#include <string>
namespace xmltooling {
class XMLTOOL_API Credential;
class XMLTOOL_API CredentialCriteria;
class XMLTOOL_API KeyInfoResolver;
class XMLTOOL_API Mutex;
};
namespace opensaml {
namespace saml2md {
class SAML_API MetadataFilter;
#if defined (_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4251 )
#endif
/**
* Base class for caching metadata providers.
*/
class SAML_API AbstractMetadataProvider : public ObservableMetadataProvider
{
protected:
/**
* Constructor.
*
* If a DOM is supplied, a set of default logic will be used to identify
* and build a KeyInfoResolver plugin and install it into the provider.
*
* The following XML content is supported:
*
* <ul>
* <li><KeyInfoResolver> elements with a type attribute
* </ul>
*
* XML namespaces are ignored in the processing of these elements.
*
* @param e DOM to supply configuration for provider
*/
AbstractMetadataProvider(const xercesc::DOMElement* e=nullptr);
public:
virtual ~AbstractMetadataProvider();
using MetadataProvider::getEntityDescriptor;
using MetadataProvider::getEntitiesDescriptor;
void outputStatus(std::ostream& os) const;
void emitChangeEvent() const;
void emitChangeEvent(const EntityDescriptor&) const;
std::pair<const EntityDescriptor*,const RoleDescriptor*> getEntityDescriptor(const Criteria& criteria) const;
const EntitiesDescriptor* getEntitiesDescriptor(const char* name, bool requireValidMetadata=true) const;
const xmltooling::Credential* resolve(const xmltooling::CredentialCriteria* criteria=nullptr) const;
std::vector<const xmltooling::Credential*>::size_type resolve(
std::vector<const xmltooling::Credential*>& results, const xmltooling::CredentialCriteria* criteria=nullptr
) const;
protected:
/** Time of last update for reporting. */
mutable time_t m_lastUpdate;
/** Embedded KeyInfoResolver instance. */
xmltooling::KeyInfoResolver* m_resolver;
/**
* Loads an entity into the cache for faster lookup.
* <p>This includes processing known reverse lookup strategies for artifacts.
* The validUntil parameter will contain the smallest value found on output.
* This method will *not* free any objects removed from the cache.</p>
*
* @param site entity definition
* @param validUntil maximum expiration time of the entity definition
* @param replace true iff existing entries for the same entity should be cleared/replaced
*/
virtual void indexEntity(EntityDescriptor* site, time_t& validUntil, bool replace=false) const;
/**
* Loads a group of entities into the cache for faster lookup.
* <p>The validUntil parameter will contain the smallest value found on output.
*
* @param group group definition
* @param validUntil maximum expiration time of the group definition
*/
virtual void indexGroup(EntitiesDescriptor* group, time_t& validUntil) const;
/**
* @deprecated
* Loads an entity into the cache for faster lookup.
* <p>This includes processing known reverse lookup strategies for artifacts.
* This method will *not* free any objects removed from the cache.</p>
*
* @param site entity definition
* @param validUntil maximum expiration time of the entity definition
* @param replace true iff existing entries for the same entity should be cleared/replaced
*/
virtual void index(EntityDescriptor* site, time_t validUntil, bool replace=false) const;
/**
* @deprecated
* Loads a group of entities into the cache for faster lookup.
*
* @param group group definition
* @param validUntil maximum expiration time of the group definition
*/
virtual void index(EntitiesDescriptor* group, time_t validUntil) const;
/**
* Clear a specific entity from the cache.
*
* @param entityID the ID of the entity to remove
* @param freeSites true iff the objects cached in the site map should be freed.
*/
virtual void unindex(const XMLCh* entityID, bool freeSites=false) const;
/**
* Clear the cache of known entities and groups.
*
* @param freeSites true iff the objects cached in the site map should be freed.
*/
virtual void clearDescriptorIndex(bool freeSites=false);
private:
typedef std::multimap<std::string,const EntityDescriptor*> sitemap_t;
typedef std::multimap<std::string,const EntitiesDescriptor*> groupmap_t;
mutable sitemap_t m_sites;
mutable sitemap_t m_sources;
mutable groupmap_t m_groups;
std::auto_ptr<xmltooling::KeyInfoResolver> m_resolverWrapper;
mutable std::auto_ptr<xmltooling::Mutex> m_credentialLock;
typedef std::map< const RoleDescriptor*, std::vector<xmltooling::Credential*> > credmap_t;
mutable credmap_t m_credentialMap;
const credmap_t::mapped_type& resolveCredentials(const RoleDescriptor& role) const;
};
#if defined (_MSC_VER)
#pragma warning( pop )
#pragma warning( disable : 4251 )
#endif
};
};
#endif /* __saml2_absmetadataprov_h__ */
|