[Box Backup-commit] COMMIT r3096 - in box/trunk/lib: crypto server
subversion at boxbackup.org
subversion at boxbackup.org
Sat Apr 28 19:11:21 BST 2012
Author: chris
Date: 2012-04-28 19:11:21 +0100 (Sat, 28 Apr 2012)
New Revision: 3096
Added:
box/trunk/lib/crypto/CryptoUtils.cpp
box/trunk/lib/crypto/CryptoUtils.h
Modified:
box/trunk/lib/server/SSLLib.cpp
box/trunk/lib/server/SSLLib.h
box/trunk/lib/server/SocketStreamTLS.cpp
box/trunk/lib/server/TLSContext.cpp
Log:
Move LogError out of server/SSLLib so we can use it in Crypto.
Added: box/trunk/lib/crypto/CryptoUtils.cpp
===================================================================
--- box/trunk/lib/crypto/CryptoUtils.cpp (rev 0)
+++ box/trunk/lib/crypto/CryptoUtils.cpp 2012-04-28 18:11:21 UTC (rev 3096)
@@ -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;
+}
+
Added: box/trunk/lib/crypto/CryptoUtils.h
===================================================================
--- box/trunk/lib/crypto/CryptoUtils.h (rev 0)
+++ box/trunk/lib/crypto/CryptoUtils.h 2012-04-28 18:11:21 UTC (rev 3096)
@@ -0,0 +1,27 @@
+// --------------------------------------------------------------------------
+//
+// File
+// Name: CryptoUtils.h
+// Purpose: Utility functions for dealing with the OpenSSL library
+// Created: 2012/04/26
+//
+// --------------------------------------------------------------------------
+
+#ifndef CRYPTOUTILS__H
+#define CRYPTOUTILS__H
+
+// --------------------------------------------------------------------------
+//
+// Namespace
+// Name: CryptoUtils
+// Purpose: Utility functions for dealing with the OpenSSL library
+// Created: 2003/08/06
+//
+// --------------------------------------------------------------------------
+namespace CryptoUtils
+{
+ std::string LogError(const std::string& rErrorDuringAction);
+};
+
+#endif // CRYPTOUTILS__H
+
Modified: box/trunk/lib/server/SSLLib.cpp
===================================================================
--- box/trunk/lib/server/SSLLib.cpp 2012-04-28 18:08:28 UTC (rev 3095)
+++ box/trunk/lib/server/SSLLib.cpp 2012-04-28 18:11:21 UTC (rev 3096)
@@ -18,6 +18,7 @@
#include <wincrypt.h>
#endif
+#include "CryptoUtils.h"
#include "SSLLib.h"
#include "ServerException.h"
@@ -39,8 +40,9 @@
{
if(!::SSL_library_init())
{
- LogError("initialising OpenSSL");
- THROW_EXCEPTION(ServerException, SSLLibraryInitialisationError)
+ THROW_EXCEPTION_MESSAGE(ServerException,
+ SSLLibraryInitialisationError,
+ CryptoUtils::LogError("initialising OpenSSL"));
}
// More helpful error messages
@@ -89,23 +91,3 @@
}
-// --------------------------------------------------------------------------
-//
-// Function
-// Name: SSLLib::LogError(const char *)
-// Purpose: Logs an error
-// Created: 2003/08/06
-//
-// --------------------------------------------------------------------------
-void SSLLib::LogError(const std::string& rErrorDuringAction)
-{
- unsigned long errcode;
- char errname[256]; // SSL docs say at least 120 bytes
- while((errcode = ERR_get_error()) != 0)
- {
- ::ERR_error_string_n(errcode, errname, sizeof(errname));
- BOX_ERROR("SSL error while " << rErrorDuringAction << ": " <<
- errname);
- }
-}
-
Modified: box/trunk/lib/server/SSLLib.h
===================================================================
--- box/trunk/lib/server/SSLLib.h 2012-04-28 18:08:28 UTC (rev 3095)
+++ box/trunk/lib/server/SSLLib.h 2012-04-28 18:11:21 UTC (rev 3096)
@@ -29,7 +29,6 @@
namespace SSLLib
{
void Initialise();
- void LogError(const std::string& rErrorDuringAction);
};
#endif // SSLLIB__H
Modified: box/trunk/lib/server/SocketStreamTLS.cpp
===================================================================
--- box/trunk/lib/server/SocketStreamTLS.cpp 2012-04-28 18:08:28 UTC (rev 3095)
+++ box/trunk/lib/server/SocketStreamTLS.cpp 2012-04-28 18:11:21 UTC (rev 3096)
@@ -19,11 +19,12 @@
#include <poll.h>
#endif
+#include "BoxTime.h"
+#include "CryptoUtils.h"
+#include "ServerException.h"
#include "SocketStreamTLS.h"
#include "SSLLib.h"
-#include "ServerException.h"
#include "TLSContext.h"
-#include "BoxTime.h"
#include "MemLeakFindOn.h"
@@ -124,7 +125,7 @@
mpBIO = ::BIO_new(::BIO_s_socket());
if(mpBIO == 0)
{
- SSLLib::LogError("creating socket bio");
+ CryptoUtils::LogError("creating socket bio");
THROW_EXCEPTION(ServerException, TLSAllocationFailed)
}
@@ -135,7 +136,7 @@
mpSSL = ::SSL_new(rContext.GetRawContext());
if(mpSSL == 0)
{
- SSLLib::LogError("creating SSL object");
+ CryptoUtils::LogError("creating SSL object");
THROW_EXCEPTION(ServerException, TLSAllocationFailed)
}
@@ -203,12 +204,12 @@
// Error occured
if(IsServer)
{
- SSLLib::LogError("accepting connection");
+ CryptoUtils::LogError("accepting connection");
THROW_EXCEPTION(ConnectionException, Conn_TLSHandshakeFailed)
}
else
{
- SSLLib::LogError("connecting");
+ CryptoUtils::LogError("connecting");
THROW_EXCEPTION(ConnectionException, Conn_TLSHandshakeFailed)
}
}
@@ -335,7 +336,7 @@
break;
default:
- SSLLib::LogError("reading");
+ CryptoUtils::LogError("reading");
THROW_EXCEPTION(ConnectionException, Conn_TLSReadFailed)
break;
}
@@ -400,7 +401,7 @@
break;
default:
- SSLLib::LogError("writing");
+ CryptoUtils::LogError("writing");
THROW_EXCEPTION(ConnectionException, Conn_TLSWriteFailed)
break;
}
@@ -442,7 +443,7 @@
if(::SSL_shutdown(mpSSL) < 0)
{
- SSLLib::LogError("shutting down");
+ CryptoUtils::LogError("shutting down");
THROW_EXCEPTION(ConnectionException, Conn_TLSShutdownFailed)
}
Modified: box/trunk/lib/server/TLSContext.cpp
===================================================================
--- box/trunk/lib/server/TLSContext.cpp 2012-04-28 18:08:28 UTC (rev 3095)
+++ box/trunk/lib/server/TLSContext.cpp 2012-04-28 18:11:21 UTC (rev 3096)
@@ -12,7 +12,7 @@
#define TLS_CLASS_IMPLEMENTATION_CPP
#include <openssl/ssl.h>
-#include "TLSContext.h"
+#include "CryptoUtils.h"
#include "ServerException.h"
#include "SSLLib.h"
#include "TLSContext.h"
@@ -77,14 +77,14 @@
{
std::string msg = "loading certificates from ";
msg += CertificatesFile;
- SSLLib::LogError(msg);
+ CryptoUtils::LogError(msg);
THROW_EXCEPTION(ServerException, TLSLoadCertificatesFailed)
}
if(::SSL_CTX_use_PrivateKey_file(mpContext, PrivateKeyFile, SSL_FILETYPE_PEM) != 1)
{
std::string msg = "loading private key from ";
msg += PrivateKeyFile;
- SSLLib::LogError(msg);
+ CryptoUtils::LogError(msg);
THROW_EXCEPTION(ServerException, TLSLoadPrivateKeyFailed)
}
@@ -93,7 +93,7 @@
{
std::string msg = "loading CA cert from ";
msg += TrustedCAsFile;
- SSLLib::LogError(msg);
+ CryptoUtils::LogError(msg);
THROW_EXCEPTION(ServerException, TLSLoadTrustedCAsFailed)
}
@@ -105,7 +105,7 @@
// Setup allowed ciphers
if(::SSL_CTX_set_cipher_list(mpContext, CIPHER_LIST) != 1)
{
- SSLLib::LogError("setting cipher list to " CIPHER_LIST);
+ CryptoUtils::LogError("setting cipher list to " CIPHER_LIST);
THROW_EXCEPTION(ServerException, TLSSetCiphersFailed)
}
}
More information about the Boxbackup-commit
mailing list