diff options
author | Chris Wilson <chris+github@qwirx.com> | 2012-04-28 18:11:21 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2012-04-28 18:11:21 +0000 |
commit | 9261f88d923cff5307de4d5465fe9f72f45ccd0a (patch) | |
tree | 9dc850a5447eecdda7fb780bd962d8198d391bf6 /lib/crypto/CryptoUtils.cpp | |
parent | fcc32a449e27447f0d231a87325db4b3358f6767 (diff) |
Move LogError out of server/SSLLib so we can use it in Crypto.
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; +} + |