diff options
author | Reinhard Tartler <siretart@tauware.de> | 2017-06-11 21:52:33 -0400 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2017-06-11 21:52:33 -0400 |
commit | e0eb815b67734abd09ff41e2271630d4b2a6d760 (patch) | |
tree | 0df971c34f98d2a1dfd0921524a17d561a4a6536 /lib/crypto/CryptoUtils.cpp | |
parent | 676c9e1c9d4ac8eb8a440d7f11c4ac44f98f4a6a (diff) | |
parent | e19a5db232e1ef90e9a02159d2fbd9707ffe4373 (diff) |
merge upstream version 0.12
Diffstat (limited to 'lib/crypto/CryptoUtils.cpp')
-rw-r--r-- | lib/crypto/CryptoUtils.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/crypto/CryptoUtils.cpp b/lib/crypto/CryptoUtils.cpp new file mode 100644 index 00000000..3e4aa15f --- /dev/null +++ b/lib/crypto/CryptoUtils.cpp @@ -0,0 +1,46 @@ +// -------------------------------------------------------------------------- +// +// File +// Name: CryptoUtils.cpp +// Purpose: Utility functions for dealing with the OpenSSL library +// Created: 2012/04/26 +// +// -------------------------------------------------------------------------- + +#include "Box.h" + +#define TLS_CLASS_IMPLEMENTATION_CPP +#include <openssl/ssl.h> +#include <openssl/err.h> + +#include "CryptoUtils.h" + +#include "MemLeakFindOn.h" + +// -------------------------------------------------------------------------- +// +// Function +// Name: CryptoUtils::LogError(const char *) +// Purpose: Logs an error from the OpenSSL library +// Created: 2012/04/26 +// +// -------------------------------------------------------------------------- +std::string CryptoUtils::LogError(const std::string& rErrorDuringAction) +{ + unsigned long errcode; + char errname[256]; // SSL docs say at least 120 bytes + std::string firstError; + + while((errcode = ERR_get_error()) != 0) + { + ::ERR_error_string_n(errcode, errname, sizeof(errname)); + if(firstError.empty()) + { + firstError = errname; + } + BOX_ERROR("SSL or crypto error: " << rErrorDuringAction << + ": " << errname); + } + return firstError; +} + |