#include <saml/saml2/metadata/Metadata.h>
#include <saml/saml2/metadata/MetadataProvider.h>
#include <xmltooling/security/TrustEngine.h>
-#include <xmltooling/signature/CredentialResolver.h>
-#include <xmltooling/util/Threads.h>
#include <saml/saml.h>
#undef SAML10_PROTOCOL_ENUM
namespace shibboleth
{
- // Credentials interface abstracts access to "owned" keys and certificates.
-
- struct SHIB_EXPORTS ICredentials : public virtual saml::ILockable, public virtual saml::IPlugIn
- {
- virtual xmlsignature::CredentialResolver* lookup(const char* id) const=0;
- virtual ~ICredentials() {}
- };
-
// Attribute acceptance processing interfaces, applied to incoming attributes.
struct SHIB_EXPORTS IAttributeRule
};
#ifdef SHIB_INSTANTIATE
- template class SHIB_EXPORTS saml::Iterator<ICredentials*>;
- template class SHIB_EXPORTS saml::ArrayIterator<ICredentials*>;
template class SHIB_EXPORTS saml::Iterator<IAAP*>;
template class SHIB_EXPORTS saml::ArrayIterator<IAAP*>;
#endif
- class SHIB_EXPORTS Credentials
- {
- public:
- Credentials(const saml::Iterator<ICredentials*>& creds) : m_creds(creds), m_mapper(NULL) {}
- ~Credentials();
-
- xmlsignature::CredentialResolver* lookup(const char* id);
-
- private:
- Credentials(const Credentials&);
- void operator=(const Credentials&);
- ICredentials* m_mapper;
- saml::Iterator<ICredentials*> m_creds;
- };
-
class SHIB_EXPORTS AAP
{
public:
// enables runtime and clients to access configuration
static ShibConfig& getConfig();
};
-
- /* Helper classes for implementing reloadable XML-based config files
- The ILockable interface will usually be inherited twice, once as
- part of the external interface to clients and once as an implementation
- detail of the reloading class below.
- */
-
- class SHIB_EXPORTS ReloadableXMLFileImpl
- {
- public:
- ReloadableXMLFileImpl(const char* pathname);
- ReloadableXMLFileImpl(const DOMElement* pathname);
- virtual ~ReloadableXMLFileImpl();
-
- protected:
- DOMDocument* m_doc;
- const DOMElement* m_root;
- };
-
- class SHIB_EXPORTS ReloadableXMLFile : protected virtual saml::ILockable
- {
- public:
- ReloadableXMLFile(const DOMElement* e);
- ~ReloadableXMLFile() { delete m_lock; delete m_impl; }
-
- virtual void lock();
- virtual void unlock() { if (m_lock) m_lock->unlock(); }
-
- ReloadableXMLFileImpl* getImplementation() const;
-
- protected:
- virtual ReloadableXMLFileImpl* newImplementation(const char* pathname, bool first=true) const=0;
- virtual ReloadableXMLFileImpl* newImplementation(const DOMElement* e, bool first=true) const=0;
- mutable ReloadableXMLFileImpl* m_impl;
-
- private:
- const DOMElement* m_root;
- std::string m_source;
- time_t m_filestamp;
- xmltooling::RWLock* m_lock;
- };
}
#endif