X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FXMLToolingConfig.h;h=2523c549c54c35330d24f0a270f3e159af47d703;hb=fbb50076025b3885017ebae06b5e67af42303e96;hp=25c8a2907a31f3445b550b2927955bf2074a32db;hpb=88c5ba84e7c81a370a60c8e0f439c971ad3c5452;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/XMLToolingConfig.h b/xmltooling/XMLToolingConfig.h index 25c8a29..2523c54 100644 --- a/xmltooling/XMLToolingConfig.h +++ b/xmltooling/XMLToolingConfig.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,9 +28,11 @@ #include #ifndef XMLTOOLING_NO_XMLSEC -namespace xmlsignature { +namespace xmltooling { class XMLTOOL_API CredentialResolver; - class XMLTOOL_API KeyResolver; + class XMLTOOL_API KeyInfoResolver; + class XMLTOOL_API TrustEngine; + class XMLTOOL_API XSECCryptoX509CRL; }; #endif @@ -45,9 +47,7 @@ namespace xmltooling { class XMLTOOL_API SOAPTransport; class XMLTOOL_API StorageService; class XMLTOOL_API TemplateEngine; - class XMLTOOL_API TrustEngine; - class XMLTOOL_API KeyInfoSource; - class XMLTOOL_API XSECCryptoX509CRL; + class XMLTOOL_API URLEncoder; /** * Singleton object that manages library startup/shutdown.configuration. @@ -60,13 +60,20 @@ namespace xmltooling { { MAKE_NONCOPYABLE(XMLToolingConfig); protected: - XMLToolingConfig() : m_replayCache(NULL), m_templateEngine(NULL), clock_skew_secs(180) {} + 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; /** Global TemplateEngine instance. */ TemplateEngine* m_templateEngine; + + /** Global URLEncoder instance for use by URL-related functions. */ + URLEncoder* m_urlEncoder; + public: virtual ~XMLToolingConfig() {} @@ -140,6 +147,24 @@ namespace xmltooling { virtual ParserPool& getValidatingParser() const=0; /** + * 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. * Any previously set object is destroyed. @@ -158,6 +183,24 @@ namespace xmltooling { } /** + * Sets the global URLEncoder instance. + * This method must be externally synchronized with any code that uses the object. + * Any previously set object is destroyed. + * + * @param urlEncoder new URLEncoder instance to store + */ + void setURLEncoder(URLEncoder* urlEncoder); + + /** + * Returns the global URLEncoder instance. + * + * @return global URLEncoder or NULL + */ + const URLEncoder* getURLEncoder() const { + return m_urlEncoder; + } + + /** * Sets the global TemplateEngine instance. * This method must be externally synchronized with any code that uses the object. * Any previously set object is destroyed. @@ -195,30 +238,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; + PluginManager TrustEngineManager; + + /** + * 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 > SOAPTransportManager; + PluginManager > SOAPTransportManager; /** * Manages factories for StorageService plugins. */ - PluginManager StorageServiceManager; + PluginManager StorageServiceManager; }; };