X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Finternal.h;h=189617ebdbaa1e6e0d277c33805151e7083f327c;hb=a0d768778a8f5f539b909baf5b115e70ea765f0f;hp=49b1a3588c3648a5d380be93f3f2b7a5cf4701ec;hpb=289be7af572ff899efc2f75878bba2f79a893332;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/internal.h b/xmltooling/internal.h index 49b1a35..189617e 100644 --- a/xmltooling/internal.h +++ b/xmltooling/internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 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. @@ -47,15 +47,40 @@ #define XMLTOOLING_LOGCAT "XMLTooling" +// Macros for path and directory separators. +#if defined __CYGWIN32__ && !defined __CYGWIN__ + /* For backwards compatibility with Cygwin b19 and + earlier, we define __CYGWIN__ here, so that + we can rely on checking just for that macro. */ +# define __CYGWIN__ __CYGWIN32__ +#endif + +#if defined _WIN32 && !defined __CYGWIN__ + /* Use Windows separators on all _WIN32 defining + environments, except Cygwin. */ +# define DIR_SEPARATOR_CHAR '\\' +# define DIR_SEPARATOR_STR "\\" +# define PATH_SEPARATOR_CHAR ';' +# define PATH_SEPARATOR_STR ";" +#endif +#ifndef DIR_SEPARATOR_CHAR + /* Assume that not having this is an indicator that all + are missing. */ +# define DIR_SEPARATOR_CHAR '/' +# define DIR_SEPARATOR_STR "/" +# define PATH_SEPARATOR_CHAR ':' +# define PATH_SEPARATOR_STR ":" +#endif /* !DIR_SEPARATOR_CHAR */ + namespace xmltooling { /// @cond OFF - class XMLToolingInternalConfig : public xmltooling::XMLToolingConfig + class XMLToolingInternalConfig : public XMLToolingConfig { public: - XMLToolingInternalConfig() : m_lock(NULL), m_parserPool(NULL), m_validatingPool(NULL) { + XMLToolingInternalConfig() : m_lock(nullptr), m_parserPool(nullptr), m_validatingPool(nullptr) { #ifndef XMLTOOLING_NO_XMLSEC - m_xsecProvider=NULL; + m_xsecProvider=nullptr; #endif } @@ -70,8 +95,8 @@ namespace xmltooling { void unlock(); // configuration - bool load_library(const char* path, void* context=NULL); - bool log_config(const char* config=NULL); + bool load_library(const char* path, void* context=nullptr); + bool log_config(const char* config=nullptr); // parser access ParserPool& getParser() const { @@ -83,7 +108,39 @@ namespace xmltooling { } #ifndef XMLTOOLING_NO_XMLSEC + XSECCryptoX509CRL* X509CRL() const; + + std::pair mapXMLAlgorithmToKeyAlgorithm(const XMLCh* xmlAlgorithm) const { +# ifdef HAVE_GOOD_STL + algmap_t::const_iterator i = m_algorithmMap.find(xmlAlgorithm); +# else + auto_ptr_char alg(xmlAlgorithm); + algmap_t::const_iterator i = m_algorithmMap.find(alg.get()); +# endif + if (i==m_algorithmMap.end()) + return std::pair(nullptr,0); + return std::make_pair(i->second.first.c_str(), i->second.second); + } + + void registerXMLAlgorithm(const XMLCh* xmlAlgorithm, const char* keyAlgorithm, unsigned int size=0) { +# ifdef HAVE_GOOD_STL + m_algorithmMap[xmlAlgorithm] = std::pair(keyAlgorithm,size); +# else + auto_ptr_char alg(xmlAlgorithm); + m_algorithmMap[alg.get()] = std::pair(keyAlgorithm,size); +# endif + } + + void registerXMLAlgorithms(); + XSECProvider* m_xsecProvider; + private: +# ifdef HAVE_GOOD_STL + typedef std::map< xstring,std::pair > algmap_t; +# else + typedef std::map< std::string,std::pair > algmap_t; +# endif + algmap_t m_algorithmMap; #endif private: @@ -92,6 +149,11 @@ namespace xmltooling { ParserPool* m_parserPool; ParserPool* m_validatingPool; }; + +#ifndef XMLTOOLING_NO_XMLSEC + void log_openssl(); +#endif + /// @endcond };