fixed: crypto++ compile errors, linux compiler syntax bugs, and code style (spaces -> tabs)

This commit is contained in:
Nick Bolton 2013-04-11 00:30:41 +00:00
parent 650da22c33
commit c0dcdd52e7
10 changed files with 99 additions and 77 deletions

View File

@ -57,7 +57,7 @@ public:
//@}
#ifdef TEST_ENV
void handleDataForTest() { handleData(NULL, NULL); }
void handleDataForTest() { handleData(CEvent(), NULL); }
#endif
protected:
@ -76,7 +76,7 @@ private:
// modifier key translation
KeyID translateKey(KeyID) const;
KeyModifierMask translateModifierMask(KeyModifierMask) const;
KeyModifierMask translateModifierMask(KeyModifierMask) const;
// event handlers
void handleData(const CEvent&, void*);
@ -110,7 +110,7 @@ private:
typedef EResult (CServerProxy::*MessageParser)(const UInt8*);
CClient* m_client;
synergy::IStream* m_stream;
synergy::IStream* m_stream;
UInt32 m_seqNum;
@ -121,13 +121,13 @@ private:
bool m_ignoreMouse;
KeyModifierID m_modifierTranslationTable[kKeyModifierIDLast];
KeyModifierID m_modifierTranslationTable[kKeyModifierIDLast];
double m_keepAliveAlarm;
CEventQueueTimer* m_keepAliveAlarmTimer;
CEventQueueTimer* m_keepAliveAlarmTimer;
MessageParser m_parser;
IEventQueue* m_eventQueue;
MessageParser m_parser;
IEventQueue* m_eventQueue;
};
#endif

View File

@ -16,6 +16,7 @@
*/
#include "CCryptoMode.h"
#include "XSynergy.h"
using namespace CryptoPP;
@ -46,7 +47,7 @@ CCryptoMode::CCryptoMode(ECryptoMode mode, bool encryption) :
break;
default:
throw std::exception("crypto mode not set");
throw XBadCryptoMode();
}
}
else {
@ -71,7 +72,7 @@ CCryptoMode::CCryptoMode(ECryptoMode mode, bool encryption) :
break;
default:
throw std::exception("crypto mode not set");
throw XBadCryptoMode();
}
}
}

View File

@ -17,8 +17,8 @@
#pragma once
#include <cryptopp562/gcm.h>
#include <cryptopp562/modes.h>
#include <cryptopp562/gcm.h>
#include <cryptopp562/modes.h>
#include <cryptopp562/aes.h>
#include "ECryptoMode.h"
#include "CString.h"
@ -50,7 +50,7 @@ private:
typedef CryptoPP::CTR_Mode<CryptoPP::AES>::Decryption CCtrModeDec;
typedef CryptoPP::GCM<CryptoPP::AES>::Decryption CGcmModeDec;
static CCryptoMode::ECryptoMode parseMode(CString& mode);
static ECryptoMode parseMode(CString& mode);
ECryptoMode m_mode;
void* m_crypto;

View File

@ -16,6 +16,7 @@
*/
#include "CCryptoOptions.h"
#include "XSynergy.h"
CCryptoOptions::CCryptoOptions(
const CString& modeString,
@ -48,6 +49,6 @@ CCryptoOptions::parseMode(CString modeString)
return kGcm;
}
else {
throw std::exception("invalid crypto mode");
throw XBadCryptoMode();
}
}

View File

@ -15,12 +15,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "CCryptoStream.h"
#include "CLog.h"
#include <sstream>
#include <string>
#include "CCryptoOptions.h"
#include "CCryptoStream.h"
#include "CLog.h"
#include "CCryptoOptions.h"
#include <sstream>
#include <string>
#include <stdio.h>
using namespace CryptoPP;
using namespace synergy::crypto;
@ -96,7 +97,7 @@ CCryptoStream::createKey(byte* out, const CString& password, UInt8 keyLength, UI
assert(keyLength <= SHA256::DIGESTSIZE);
byte temp[SHA256::DIGESTSIZE];
byte* in = reinterpret_cast<byte*>(const_cast<char*>(password.c_str()));
byte* in = reinterpret_cast<byte*>(const_cast<char*>(password.c_str()));
SHA256().CalculateDigest(temp, in, password.length());
byte* tempKey = new byte[SHA256::DIGESTSIZE];
@ -119,28 +120,28 @@ CCryptoStream::setIv(const byte* iv)
m_decryption.setKeyWithIv(m_key, kKeyLength, iv);
}
void
CCryptoStream::newIv(byte* out)
{
m_autoSeedRandomPool.GenerateBlock(out, CRYPTO_IV_SIZE);
setIv(out);
}
void
CCryptoStream::logBuffer(const char* name, const byte* buf, int length)
{
if (CLOG->getFilter() < kDEBUG4) {
return;
}
std::stringstream ss;
ss << "crypto: " << name << ":";
char buffer[4];
for (int i = 0; i < length; i++) {
sprintf(buffer, " %02X", buf[i]);
ss << buffer;
}
LOG((CLOG_DEBUG4 "%s", ss.str().c_str()));
void
CCryptoStream::newIv(byte* out)
{
m_autoSeedRandomPool.GenerateBlock(out, CRYPTO_IV_SIZE);
setIv(out);
}
void
CCryptoStream::logBuffer(const char* name, const byte* buf, int length)
{
if (CLOG->getFilter() < kDEBUG4) {
return;
}
std::stringstream ss;
ss << "crypto: " << name << ":";
char buffer[4];
for (int i = 0; i < length; i++) {
sprintf(buffer, " %02X", buf[i]);
ss << buffer;
}
LOG((CLOG_DEBUG4 "%s", ss.str().c_str()));
}

View File

@ -18,11 +18,12 @@
#pragma once
#include "BasicTypes.h"
#include "CStreamFilter.h"
#include "CCryptoMode.h"
#include "CCryptoOptions.h"
#include "CStreamFilter.h"
#include "CCryptoMode.h"
#include <cryptopp562/osrng.h>
#include "cryptopp562/sha.h"
#include <cryptopp562/sha.h>
class CCryptoOptions;
#define CRYPTO_IV_SIZE CryptoPP::AES::BLOCKSIZE
@ -51,8 +52,8 @@ public:
*/
virtual void write(const void* in, UInt32 n);
//! Set the IV
void setIv(const byte* iv);
//! Set the IV
void setIv(const byte* iv);
//! Get a new IV
/*!
@ -67,11 +68,11 @@ public:
private:
void logBuffer(const char* name, const byte* buf, int length);
byte* m_key;
CCryptoMode m_encryption;
byte* m_key;
CCryptoMode m_encryption;
CCryptoMode m_decryption;
CryptoPP::AutoSeededRandomPool m_autoSeedRandomPool;
};
};
namespace synergy {
namespace crypto {

View File

@ -29,6 +29,15 @@ XBadClient::getWhat() const throw()
return "XBadClient";
}
//
// XBadCryptoMode
//
CString
XBadCryptoMode::getWhat() const throw()
{
return "XBadCryptoMode";
}
//
// XIncompatibleClient

View File

@ -30,6 +30,12 @@ Thrown when the client fails to follow the protocol.
*/
XBASE_SUBCLASS_WHAT(XBadClient, XSynergy);
//! Bad crypto mode
/*!
Thrown when the user enters an invalid crypto mode.
*/
XBASE_SUBCLASS_WHAT(XBadCryptoMode, XSynergy);
//! Incompatible client exception
/*!
Thrown when a client attempting to connect has an incompatible version.

View File

@ -20,6 +20,7 @@
#include "CMockStream.h"
#include "CMockEventQueue.h"
#include "CPacketStreamFilter.h"
#include "CCryptoOptions.h"
using ::testing::_;
using ::testing::Invoke;

View File

@ -7,45 +7,47 @@
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set(cpp_dir cryptopp562)
file(GLOB cpp_src ${cpp_dir}/*.cpp)
if (WIN32)
file(GLOB cpp_hdr ${cpp_dir}/*.h)
file(GLOB cpp_hdr ${cpp_dir}/*.h)
list(APPEND cpp_src ${cpp_hdr})
endif()
file(GLOB cpp_ignore
${cpp_dir}/simple.cpp
${cpp_dir}/strciphr.cpp
${cpp_dir}/polynomi.cpp
${cpp_dir}/eprecomp.cpp
${cpp_dir}/eccrypto.cpp
${cpp_dir}/algebra.cpp)
${cpp_dir}/simple.cpp
${cpp_dir}/strciphr.cpp
${cpp_dir}/polynomi.cpp
${cpp_dir}/eprecomp.cpp
${cpp_dir}/eccrypto.cpp
${cpp_dir}/algebra.cpp)
list(REMOVE_ITEM cpp_src ${cpp_ignore})
# 64-bit windows - compile asm file.
if(CMAKE_CL_64)
list(APPEND cpp_src ${cpp_dir}/x64dll.asm ${cpp_dir}/x64masm.asm)
add_custom_command(OUTPUT $(IntDir)x64dll.obj
COMMAND ml64.exe /c /nologo /Fo$(IntDir)x64dll.obj /Zi
"${CMAKE_CURRENT_SOURCE_DIR}/${cpp_dir}/x64dll.asm"
MAIN_DEPENDENCY ${cpp_dir}/x64dll.asm
VERBATIM)
add_custom_command(OUTPUT $(IntDir)x64masm.obj
COMMAND ml64.exe /c /nologo /Fo$(IntDir)x64masm.obj /Zi
"${CMAKE_CURRENT_SOURCE_DIR}/${cpp_dir}/x64masm.asm"
MAIN_DEPENDENCY ${cpp_dir}/x64masm.asm
VERBATIM)
# if 64-bit windows, compile asm file.
if (CMAKE_CL_64)
list(APPEND cpp_src ${cpp_dir}/x64dll.asm ${cpp_dir}/x64masm.asm)
add_custom_command(OUTPUT $(IntDir)x64dll.obj
COMMAND ml64.exe /c /nologo /Fo$(IntDir)x64dll.obj /Zi
"${CMAKE_CURRENT_SOURCE_DIR}/${cpp_dir}/x64dll.asm"
MAIN_DEPENDENCY ${cpp_dir}/x64dll.asm
VERBATIM)
add_custom_command(OUTPUT $(IntDir)x64masm.obj
COMMAND ml64.exe /c /nologo /Fo$(IntDir)x64masm.obj /Zi
"${CMAKE_CURRENT_SOURCE_DIR}/${cpp_dir}/x64masm.asm"
MAIN_DEPENDENCY ${cpp_dir}/x64masm.asm
VERBATIM)
else()
add_definitions(-DCRYPTOPP_DISABLE_ASM)
endif()
if (APPLE)