X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FXMLToolingConfig.h;h=cb558a06aa7cd49fb8d37b0dc497858b3125a2a1;hb=270ca608be354a2adc23e957abd98dc558221ae5;hp=cd04d7196ee805848e21f90e5ab6a1bc1d9c2f18;hpb=d73e59e9834ff2447334d7a5e576cc4a2cb219f9;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/XMLToolingConfig.h b/xmltooling/XMLToolingConfig.h index cd04d71..cb558a0 100644 --- a/xmltooling/XMLToolingConfig.h +++ b/xmltooling/XMLToolingConfig.h @@ -15,7 +15,7 @@ */ /** - * @file XMLToolingConfig.h + * @file xmltooling/XMLToolingConfig.h * * Library configuration */ @@ -30,8 +30,7 @@ #ifndef XMLTOOLING_NO_XMLSEC namespace xmltooling { class XMLTOOL_API CredentialResolver; - class XMLTOOL_API KeyInfoSource; - class XMLTOOL_API KeyResolver; + class XMLTOOL_API KeyInfoResolver; class XMLTOOL_API TrustEngine; class XMLTOOL_API XSECCryptoX509CRL; }; @@ -44,11 +43,13 @@ namespace xmltooling { namespace xmltooling { - class XMLTOOL_API ReplayCache; class XMLTOOL_API SOAPTransport; - class XMLTOOL_API StorageService; class XMLTOOL_API TemplateEngine; class XMLTOOL_API URLEncoder; +#ifndef XMLTOOLING_LITE + class XMLTOOL_API ReplayCache; + class XMLTOOL_API StorageService; +#endif /** * Singleton object that manages library startup/shutdown.configuration. @@ -61,11 +62,18 @@ namespace xmltooling { { MAKE_NONCOPYABLE(XMLToolingConfig); protected: - XMLToolingConfig() : m_replayCache(NULL), m_templateEngine(NULL), m_urlEncoder(NULL), clock_skew_secs(180) {} - +#ifndef XMLTOOLING_NO_XMLSEC + XMLToolingConfig() : m_keyInfoResolver(NULL), m_replayCache(NULL), m_templateEngine(NULL), m_urlEncoder(NULL), clock_skew_secs(180) {} + + /** Global KeyInfoResolver instance. */ + KeyInfoResolver* m_keyInfoResolver; + /** Global ReplayCache instance. */ ReplayCache* m_replayCache; - +#else + XMLToolingConfig() : m_templateEngine(NULL), m_urlEncoder(NULL), clock_skew_secs(180) {} +#endif + /** Global TemplateEngine instance. */ TemplateEngine* m_templateEngine; @@ -144,6 +152,25 @@ namespace xmltooling { */ virtual ParserPool& getValidatingParser() const=0; +#ifndef XMLTOOLING_NO_XMLSEC + /** + * 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); + + /** + * Returns the global KeyInfoResolver instance. + * + * @return global KeyInfoResolver or NULL + */ + const KeyInfoResolver* getKeyInfoResolver() const { + return m_keyInfoResolver; + } + /** * Sets the global ReplayCache instance. * This method must be externally synchronized with any code that uses the object. @@ -161,6 +188,7 @@ namespace xmltooling { ReplayCache* getReplayCache() const { return m_replayCache; } +#endif /** * Sets the global URLEncoder instance. @@ -218,30 +246,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; }; };