From b7790e94ff4b965df2a5fb22d7ffd1d64881ab2a Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 2 Mar 2007 00:04:18 +0000 Subject: [PATCH] --- pokerth.pro | 13 +++--- src/core/{ => common}/thread.cpp | 0 src/core/linux/rand.cpp | 34 ++++++++++++++++ src/core/rand.h | 7 ++++ src/core/win32/rand.cpp | 66 +++++++++++++++++++++++++++++++ src/engine/local_engine/tools.cpp | 9 ++--- src/engine/local_engine/tools.h | 1 - 7 files changed, 117 insertions(+), 13 deletions(-) rename src/core/{ => common}/thread.cpp (100%) create mode 100644 src/core/linux/rand.cpp create mode 100644 src/core/rand.h create mode 100644 src/core/win32/rand.cpp diff --git a/pokerth.pro b/pokerth.pro index d5cdd1af..6dc92e26 100755 --- a/pokerth.pro +++ b/pokerth.pro @@ -111,20 +111,21 @@ SOURCES += pokerth.cpp \ clientdata.cpp \ clientcallback.cpp \ socket_helper_cmn.cpp \ - thread.cpp + thread.cpp \ + rand.cpp TEMPLATE = vcapp RESOURCES = src/gui/qt/deck.qrc TEMPLATE = app -DEPENDPATH += . src uics src/config src/core/tinyxml src/gui src/gui/qt src/gui/qt/mainwindow/startsplash src/gui/qt/mainwindow src/gui/qt/aboutpokerth src/gui/qt/joinnetworkgamedialog src/gui/qt/connecttoserverdialog src/gui/qt/newlocalgamedialog src/gui/qt/settingsdialog src/gui/qt/waitforservertostartgamedialog src/gui/qt/startnetworkgamedialog src/gui/qt/createnetworkgamedialog src/gui/qt/log src/engine src/engine/local_engine src/net src/net/common src/core/ -INCLUDEPATH += . src uics src/config src/core/tinyxml src/gui src/gui/qt src/gui/qt/mainwindow/startsplash src/gui/qt/mainwindow src/gui/qt/aboutpokerth src/gui/qt/joinnetworkgamedialog src/gui/qt/connecttoserverdialog src/gui/qt/newlocalgamedialog src/gui/qt/settingsdialog src/gui/qt/waitforservertostartgamedialog src/gui/qt/startnetworkgamedialog src/gui/qt/createnetworkgamedialog src/gui/qt/log src/engine src/engine/local_engine src/net src/net/common src/core/ +DEPENDPATH += . src uics src/config src/core/tinyxml src/gui src/gui/qt src/gui/qt/mainwindow/startsplash src/gui/qt/mainwindow src/gui/qt/aboutpokerth src/gui/qt/joinnetworkgamedialog src/gui/qt/connecttoserverdialog src/gui/qt/newlocalgamedialog src/gui/qt/settingsdialog src/gui/qt/waitforservertostartgamedialog src/gui/qt/startnetworkgamedialog src/gui/qt/createnetworkgamedialog src/gui/qt/log src/engine src/engine/local_engine src/net src/net/common src/core src/core/common +INCLUDEPATH += . src uics src/config src/core/tinyxml src/gui src/gui/qt src/gui/qt/mainwindow/startsplash src/gui/qt/mainwindow src/gui/qt/aboutpokerth src/gui/qt/joinnetworkgamedialog src/gui/qt/connecttoserverdialog src/gui/qt/newlocalgamedialog src/gui/qt/settingsdialog src/gui/qt/waitforservertostartgamedialog src/gui/qt/startnetworkgamedialog src/gui/qt/createnetworkgamedialog src/gui/qt/log src/engine src/engine/local_engine src/net src/net/common src/core src/core/common win32 { - DEPENDPATH += src/net/win32/ + DEPENDPATH += src/net/win32/ src/core/win32 INCLUDEPATH += ../boost/ LIBPATH += ../boost/stage/lib - LIBS += ws2_32.lib + LIBS += ws2_32.lib advapi32.lib } !win32 { - DEPENDPATH += src/net/linux/ + DEPENDPATH += src/net/linux/ src/core/linux LIBS += -lboost_thread -l ssl } diff --git a/src/core/thread.cpp b/src/core/common/thread.cpp similarity index 100% rename from src/core/thread.cpp rename to src/core/common/thread.cpp diff --git a/src/core/linux/rand.cpp b/src/core/linux/rand.cpp new file mode 100644 index 00000000..0de6886f --- /dev/null +++ b/src/core/linux/rand.cpp @@ -0,0 +1,34 @@ +/*************************************************************************** + * Copyright (C) 2007 by Lothar May * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program 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 * + * 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, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifdef _WIN32 +#error This source code is not for Win32. +#endif + +#include +#include + +void +RandomBytes(unsigned char *buf, unsigned size) +{ + if(!RAND_bytes(buf, size)) + { + RAND_pseudo_bytes(buf, size); + } +} + diff --git a/src/core/rand.h b/src/core/rand.h new file mode 100644 index 00000000..593bab92 --- /dev/null +++ b/src/core/rand.h @@ -0,0 +1,7 @@ +#ifndef RAND_H +#define RAND_H + +void RandomBytes(unsigned char *buf, unsigned size); + +#endif + diff --git a/src/core/win32/rand.cpp b/src/core/win32/rand.cpp new file mode 100644 index 00000000..ec9d2fdb --- /dev/null +++ b/src/core/win32/rand.cpp @@ -0,0 +1,66 @@ +/*************************************************************************** + * Copyright (C) 2007 by Lothar May * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program 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 * + * 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, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef _WIN32 +#error This source code is Win32 only. +#endif + +#include +#include + +#include +#include + +class CryptData +{ +public: + CryptData() + { + if (!::CryptAcquireContext( + &cryptProvider, + NULL, + NULL, + PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) + { + cryptProvider = 0; + } + } + ~CryptData() + { + if (cryptProvider) CryptReleaseContext(cryptProvider, 0); + } + + HCRYPTPROV cryptProvider; +}; + +void +RandomBytes(unsigned char *buf, unsigned size) +{ + static boost::thread_specific_ptr m_cryptData; + + if (!m_cryptData.get()) + m_cryptData.reset(new CryptData); + + HCRYPTPROV provider = m_cryptData.get()->cryptProvider; + + if (provider) + ::CryptGenRandom(provider, size, buf); +} + + diff --git a/src/engine/local_engine/tools.cpp b/src/engine/local_engine/tools.cpp index 5aa3aebe..0a73eeeb 100755 --- a/src/engine/local_engine/tools.cpp +++ b/src/engine/local_engine/tools.cpp @@ -18,6 +18,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "tools.h" +#include using namespace std; @@ -43,9 +44,7 @@ void Tools::getRandNumber(int start, int end, int howMany, int* randArray, bool for (i=0; i #include -#include class Tools{