diff --git a/include/fc/crypto/openssl.hpp b/include/fc/crypto/openssl.hpp index 0bf0fe8..5811390 100644 --- a/include/fc/crypto/openssl.hpp +++ b/include/fc/crypto/openssl.hpp @@ -58,7 +58,7 @@ namespace fc /** Allows to explicitly specify OpenSSL configuration file path to be loaded at OpenSSL library init. If not set OpenSSL will try to load the conf. file (openssl.cnf) from the path it was - configured with what caused serious Keyhotee startup bugs on some Win7 machines. + configured with what caused serious Keyhotee startup bugs on some Win7, Win8 machines. \warning to be effective this method should be used before any part using OpenSSL, especially before init_openssl call */ diff --git a/include/fc/filesystem.hpp b/include/fc/filesystem.hpp index d67cdd8..d655d68 100644 --- a/include/fc/filesystem.hpp +++ b/include/fc/filesystem.hpp @@ -165,6 +165,9 @@ namespace fc { */ const path& app_path(); + /** @return application executable path */ + const fc::path& current_path(); + class variant; void to_variant( const fc::path&, fc::variant& ); void from_variant( const fc::variant& , fc::path& ); diff --git a/src/crypto/openssl.cpp b/src/crypto/openssl.cpp index 14a0b80..36a3889 100644 --- a/src/crypto/openssl.cpp +++ b/src/crypto/openssl.cpp @@ -49,7 +49,13 @@ namespace fc int init_openssl() { - static openssl_scope ossl; - return 0; + auto strAppDir = current_path(); + fc::path appDir(strAppDir); + fc::path openSSLConf = appDir / "openssl.cnf"; + if (fc::exists(openSSLConf)) + fc::store_configuration_path(openSSLConf); + + static openssl_scope ossl; + return 0; } } diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 2dd961a..459d22b 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -421,4 +421,10 @@ namespace fc { #endif return appdir; } + + const fc::path& current_path() + { + static fc::path appCurrentPath = boost::filesystem::current_path(); + return appCurrentPath; + } }