diff options
Diffstat (limited to 'cpp/src/IceSSL/ConfigParser.h')
-rw-r--r-- | cpp/src/IceSSL/ConfigParser.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/cpp/src/IceSSL/ConfigParser.h b/cpp/src/IceSSL/ConfigParser.h new file mode 100644 index 00000000000..eef74f93e8d --- /dev/null +++ b/cpp/src/IceSSL/ConfigParser.h @@ -0,0 +1,90 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef ICE_SSL_CONFIG_H +#define ICE_SSL_CONFIG_H + +#include <dom/DOM.hpp> +#include <Ice/TraceLevelsF.h> +#include <Ice/LoggerF.h> +#include <IceSSL/CertificateDesc.h> +#include <IceSSL/GeneralConfig.h> +#include <IceSSL/CertificateAuthority.h> +#include <IceSSL/BaseCerts.h> +#include <IceSSL/TempCerts.h> +#include <string> + +namespace IceSSL +{ + +class ConfigParser +{ +public: + + // Construction based on the indicated config file, or config file and + // certificate path. + ConfigParser(const std::string&); + ConfigParser(const std::string&, const std::string&); + ~ConfigParser(); + + // Performs a complete parsing of the file. + void process(); + + // Loads the Client/Server portions of the config file. + bool loadClientConfig(GeneralConfig&, CertificateAuthority&, BaseCertificates&); + bool loadServerConfig(GeneralConfig&, CertificateAuthority&, BaseCertificates&, TempCertificates&); + + void setTrace(const IceInternal::TraceLevelsPtr&); + bool isTraceSet() const; + + void setLogger(const Ice::LoggerPtr&); + bool isLoggerSet() const; + +private: + + DOM_Node _root; + std::string _configFile; + std::string _configPath; + + IceInternal::TraceLevelsPtr _traceLevels; + Ice::LoggerPtr _logger; + + // Parse tree walking utility methods. + void popRoot(std::string&, std::string&, std::string&); + DOM_Node find(std::string&); + DOM_Node find(DOM_Node, std::string&); + + // Loading of the base elements of the file. + void getGeneral(DOM_Node, GeneralConfig&); + void getCertAuth(DOM_Node, CertificateAuthority&); + void getBaseCerts(DOM_Node, BaseCertificates&); + void getTempCerts(DOM_Node, TempCertificates&); + + // Loading of temporary certificates/params (Ephemeral Keys). + void loadDHParams(DOM_Node, TempCertificates&); + void loadRSACert(DOM_Node, TempCertificates&); + + // Populate with information from the indicated node in the parse tree. + void getCert(DOM_Node, CertificateDesc&); + void getDHParams(DOM_Node, DiffieHellmanParamsFile&); + + // Populate a certificate file object, basis of all certificates. + void loadCertificateFile(DOM_Node, CertificateFile&); + + // Parses the certificate encoding format from a string representation + // to the proper integer value used by the underlying SSL framework. + int parseEncoding(std::string&); + + std::string toString(const DOMString&); +}; + +} + +#endif |