X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FXMLToolingConfig.h;h=2bdc59b1a3e63bc3e3dcbced13f82afc13729102;hb=a0d768778a8f5f539b909baf5b115e70ea765f0f;hp=4111fe0ac1c6b9b036d38be8d8710d234ea234ef;hpb=e5b5c9e4e7320a5199116fbf389d3d462fc754cc;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/XMLToolingConfig.h b/xmltooling/XMLToolingConfig.h index 4111fe0..2bdc59b 100644 --- a/xmltooling/XMLToolingConfig.h +++ b/xmltooling/XMLToolingConfig.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2010 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,9 +15,9 @@ */ /** - * @file XMLToolingConfig.h + * @file xmltooling/XMLToolingConfig.h * - * Library configuration + * Library configuration. */ #ifndef __xmltooling_config_h__ @@ -25,14 +25,10 @@ #include #include -#include +#include -#ifndef XMLTOOLING_NO_XMLSEC -namespace xmlsignature { - class XMLTOOL_API CredentialResolver; - class XMLTOOL_API KeyResolver; -}; -#endif +#include +#include #if defined (_MSC_VER) #pragma warning( push ) @@ -41,13 +37,20 @@ namespace xmlsignature { namespace xmltooling { + class XMLTOOL_API ParserPool; + class XMLTOOL_API PathResolver; + class XMLTOOL_API TemplateEngine; + class XMLTOOL_API URLEncoder; +#ifndef XMLTOOLING_LITE class XMLTOOL_API ReplayCache; - class XMLTOOL_API SOAPTransport; class XMLTOOL_API StorageService; - class XMLTOOL_API TemplateEngine; +#endif +#ifndef XMLTOOLING_NO_XMLSEC + class XMLTOOL_API CredentialResolver; + class XMLTOOL_API KeyInfoResolver; class XMLTOOL_API TrustEngine; - class XMLTOOL_API KeyInfoSource; class XMLTOOL_API XSECCryptoX509CRL; +#endif /** * Singleton object that manages library startup/shutdown.configuration. @@ -56,19 +59,31 @@ namespace xmltooling { * obtain a global system lock, but the actual configuration itself is not * synchronized. */ - class XMLTOOL_API XMLToolingConfig : public Lockable + class XMLTOOL_API XMLToolingConfig : public virtual Lockable { MAKE_NONCOPYABLE(XMLToolingConfig); protected: - XMLToolingConfig() : m_replayCache(NULL), clock_skew_secs(180) {} - + XMLToolingConfig(); + +#ifndef XMLTOOLING_NO_XMLSEC + /** Global KeyInfoResolver instance. */ + KeyInfoResolver* m_keyInfoResolver; + /** Global ReplayCache instance. */ ReplayCache* m_replayCache; +#endif + + /** Global PathResolver instance. */ + PathResolver* m_pathResolver; /** Global TemplateEngine instance. */ TemplateEngine* m_templateEngine; + + /** Global URLEncoder instance for use by URL-related functions. */ + URLEncoder* m_urlEncoder; + public: - virtual ~XMLToolingConfig() {} + virtual ~XMLToolingConfig(); /** * Returns the global configuration object for the library. @@ -108,7 +123,7 @@ namespace xmltooling { * @param context arbitrary data to pass to library initialization hook * @return true iff library was loaded successfully */ - virtual bool load_library(const char* path, void* context=NULL)=0; + virtual bool load_library(const char* path, void* context=nullptr)=0; /** * Configure logging system. @@ -120,7 +135,7 @@ namespace xmltooling { * (DEBUG, INFO, NOTICE, WARN, ERROR, CRIT, ALERT, FATAL, EMERG) * @return true iff configuration was successful */ - virtual bool log_config(const char* config=NULL)=0; + virtual bool log_config(const char* config=nullptr)=0; /** * Obtains a non-validating parser pool. @@ -139,6 +154,30 @@ namespace xmltooling { */ virtual ParserPool& getValidatingParser() const=0; +#ifndef XMLTOOLING_NO_XMLSEC + /** + * Returns the global KeyInfoResolver instance. + * + * @return global KeyInfoResolver or nullptr + */ + const KeyInfoResolver* getKeyInfoResolver() const; + + /** + * Returns the global ReplayCache instance. + * + * @return global ReplayCache or nullptr + */ + ReplayCache* getReplayCache() const; + + /** + * Sets the global KeyInfoResolver instance. + * This method must be externally synchronized with any code that uses the object. + * Any previously set object is destroyed. + * + * @param keyInfoResolver new KeyInfoResolver instance to store + */ + void setKeyInfoResolver(KeyInfoResolver* keyInfoResolver); + /** * Sets the global ReplayCache instance. * This method must be externally synchronized with any code that uses the object. @@ -147,17 +186,39 @@ namespace xmltooling { * @param replayCache new ReplayCache instance to store */ void setReplayCache(ReplayCache* replayCache); +#endif /** - * Returns the global ReplayCache instance. + * Returns the global PathResolver instance. + * + * @return global PathResolver or nullptr + */ + PathResolver* getPathResolver() const; + + /** + * Returns the global TemplateEngine instance. + * + * @return global TemplateEngine or nullptr + */ + TemplateEngine* getTemplateEngine() const; + + /** + * Returns the global URLEncoder instance. * - * @return global ReplayCache or NULL + * @return global URLEncoder or nullptr */ - ReplayCache* getReplayCache() const { - return m_replayCache; - } + const URLEncoder* getURLEncoder() const; /** + * Sets the global PathResolver instance. + * This method must be externally synchronized with any code that uses the object. + * Any previously set object is destroyed. + * + * @param pathResolver new PathResolver instance to store + */ + void setPathResolver(PathResolver* pathResolver); + + /** * Sets the global TemplateEngine instance. * This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. @@ -167,14 +228,14 @@ namespace xmltooling { void setTemplateEngine(TemplateEngine* templateEngine); /** - * Returns the global TemplateEngine instance. + * Sets the global URLEncoder instance. + * This method must be externally synchronized with any code that uses the object. + * Any previously set object is destroyed. * - * @return global TemplateEngine or NULL + * @param urlEncoder new URLEncoder instance to store */ - TemplateEngine* getTemplateEngine() const { - return m_templateEngine; - } - + void setURLEncoder(URLEncoder* urlEncoder); + /** * List of catalog files to load into validating parser pool at initialization time. * Like other path settings, the separator depends on the platform @@ -195,30 +256,51 @@ namespace xmltooling { virtual XSECCryptoX509CRL* X509CRL() const=0; /** - * Manages factories for KeyResolver plugins. + * Manages factories for KeyInfoResolver plugins. */ - PluginManager KeyResolverManager; + PluginManager KeyInfoResolverManager; /** * Manages factories for CredentialResolver plugins. */ - PluginManager CredentialResolverManager; + PluginManager CredentialResolverManager; /** * Manages factories for TrustEngine plugins. */ - PluginManager TrustEngineManager; -#endif + PluginManager TrustEngineManager; /** - * Manages factories for SOAPTransport plugins. + * Manages factories for StorageService plugins. */ - PluginManager > SOAPTransportManager; + PluginManager StorageServiceManager; /** - * Manages factories for StorageService plugins. + * Maps an XML Signature/Encryption algorithm identifier to a library-specific + * key algorithm and size for use in resolving credentials. + * + * @param xmlAlgorithm XML Signature/Encryption algorithm identifier + * @return a general key algorithm and key size (or 0 if the size is irrelevant) + */ + virtual std::pair mapXMLAlgorithmToKeyAlgorithm(const XMLCh* xmlAlgorithm) const=0; + + /** + * Registers an XML Signature/Encryption algorithm identifier against a library-specific + * key algorithm and size for use in resolving credentials. + * + * @param xmlAlgorithm XML Signature/Encryption algorithm identifier + * @param keyAlgorithm a key algorithm + * @param size a key size (or 0 if the size is irrelevant) + */ + virtual void registerXMLAlgorithm(const XMLCh* xmlAlgorithm, const char* keyAlgorithm, unsigned int size=0)=0; +#endif + + /** + * Manages factories for SOAPTransport plugins. + * + *

The factory interface takes a peer name/endpoint pair. */ - PluginManager StorageServiceManager; + PluginManager SOAPTransportManager; }; };