aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Auth
diff options
context:
space:
mode:
authormaximius <none@none>2009-10-17 15:35:07 -0700
committermaximius <none@none>2009-10-17 15:35:07 -0700
commit26b5e033ffde3d161382fc9addbfa99738379641 (patch)
treea344f369ca32945f787a02dee35c3dbe342bed7e /src/shared/Auth
parentf21f47005dcb6b76e1abc9f35fbcd03eed191bff (diff)
*Massive cleanup (\n\n -> \n, *\n -> \n, cleanup for(...) to for (...), and some other cleanups by hand)
*Fix a possible crash in Spell::DoAllEffectOnTarget --HG-- branch : trunk
Diffstat (limited to 'src/shared/Auth')
-rw-r--r--src/shared/Auth/AuthCrypt.cpp17
-rw-r--r--src/shared/Auth/AuthCrypt.h7
-rw-r--r--src/shared/Auth/BigNumber.cpp39
-rw-r--r--src/shared/Auth/BigNumber.h15
-rw-r--r--src/shared/Auth/Hmac.cpp8
-rw-r--r--src/shared/Auth/Hmac.h5
-rw-r--r--src/shared/Auth/SARC4.cpp6
-rw-r--r--src/shared/Auth/SARC4.h3
-rw-r--r--src/shared/Auth/Sha1.cpp9
-rw-r--r--src/shared/Auth/Sha1.h9
10 files changed, 0 insertions, 118 deletions
diff --git a/src/shared/Auth/AuthCrypt.cpp b/src/shared/Auth/AuthCrypt.cpp
index e8126ad9f73..56d70d4c14e 100644
--- a/src/shared/Auth/AuthCrypt.cpp
+++ b/src/shared/Auth/AuthCrypt.cpp
@@ -17,65 +17,48 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#include "AuthCrypt.h"
#include "Hmac.h"
#include "Log.h"
#include "BigNumber.h"
-
AuthCrypt::AuthCrypt()
{
_initialized = false;
}
-
AuthCrypt::~AuthCrypt()
{
-
}
-
void AuthCrypt::Init(BigNumber *K)
{
uint8 ServerEncryptionKey[SEED_KEY_SIZE] = { 0x22, 0xBE, 0xE5, 0xCF, 0xBB, 0x07, 0x64, 0xD9, 0x00, 0x45, 0x1B, 0xD0, 0x24, 0xB8, 0xD5, 0x45 };
HmacHash serverEncryptHmac(SEED_KEY_SIZE, (uint8*)ServerEncryptionKey);
uint8 *encryptHash = serverEncryptHmac.ComputeHash(K);
-
uint8 ServerDecryptionKey[SEED_KEY_SIZE] = { 0xF4, 0x66, 0x31, 0x59, 0xFC, 0x83, 0x6E, 0x31, 0x31, 0x02, 0x51, 0xD5, 0x44, 0x31, 0x67, 0x98 };
HmacHash clientDecryptHmac(SEED_KEY_SIZE, (uint8*)ServerDecryptionKey);
uint8 *decryptHash = clientDecryptHmac.ComputeHash(K);
-
//SARC4 _serverDecrypt(encryptHash);
_clientDecrypt.Init(decryptHash);
_serverEncrypt.Init(encryptHash);
//SARC4 _clientEncrypt(decryptHash);
-
uint8 syncBuf[1024];
-
memset(syncBuf, 0, 1024);
-
_serverEncrypt.UpdateData(1024, syncBuf);
//_clientEncrypt.UpdateData(1024, syncBuf);
-
memset(syncBuf, 0, 1024);
-
//_serverDecrypt.UpdateData(1024, syncBuf);
_clientDecrypt.UpdateData(1024, syncBuf);
-
_initialized = true;
}
-
void AuthCrypt::DecryptRecv(uint8 *data, size_t len)
{
if (!_initialized)
return;
-
_clientDecrypt.UpdateData(len, data);
}
-
void AuthCrypt::EncryptSend(uint8 *data, size_t len)
{
if (!_initialized)
return;
-
_serverEncrypt.UpdateData(len, data);
}
diff --git a/src/shared/Auth/AuthCrypt.h b/src/shared/Auth/AuthCrypt.h
index 226fde018ae..7f885e563ab 100644
--- a/src/shared/Auth/AuthCrypt.h
+++ b/src/shared/Auth/AuthCrypt.h
@@ -17,27 +17,20 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#ifndef _AUTHCRYPT_H
#define _AUTHCRYPT_H
-
#include <Common.h>
#include "SARC4.h"
-
class BigNumber;
-
class AuthCrypt
{
public:
AuthCrypt();
~AuthCrypt();
-
void Init(BigNumber *K);
void DecryptRecv(uint8 *, size_t);
void EncryptSend(uint8 *, size_t);
-
bool IsInitialized() { return _initialized; }
-
private:
SARC4 _clientDecrypt;
SARC4 _serverEncrypt;
diff --git a/src/shared/Auth/BigNumber.cpp b/src/shared/Auth/BigNumber.cpp
index 303687c266c..837b75804df 100644
--- a/src/shared/Auth/BigNumber.cpp
+++ b/src/shared/Auth/BigNumber.cpp
@@ -17,182 +17,143 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#include "Auth/BigNumber.h"
#include <openssl/bn.h>
#include <algorithm>
-
BigNumber::BigNumber()
{
_bn = BN_new();
_array = NULL;
}
-
BigNumber::BigNumber(const BigNumber &bn)
{
_bn = BN_dup(bn._bn);
_array = NULL;
}
-
BigNumber::BigNumber(uint32 val)
{
_bn = BN_new();
BN_set_word(_bn, val);
_array = NULL;
}
-
BigNumber::~BigNumber()
{
BN_free(_bn);
if(_array) delete[] _array;
}
-
void BigNumber::SetDword(uint32 val)
{
BN_set_word(_bn, val);
}
-
void BigNumber::SetQword(uint64 val)
{
BN_add_word(_bn, (uint32)(val >> 32));
BN_lshift(_bn, _bn, 32);
BN_add_word(_bn, (uint32)(val & 0xFFFFFFFF));
}
-
void BigNumber::SetBinary(const uint8 *bytes, int len)
{
uint8 t[1000];
for (int i = 0; i < len; i++) t[i] = bytes[len - 1 - i];
BN_bin2bn(t, len, _bn);
}
-
void BigNumber::SetHexStr(const char *str)
{
BN_hex2bn(&_bn, str);
}
-
void BigNumber::SetRand(int numbits)
{
BN_rand(_bn, numbits, 0, 1);
}
-
BigNumber BigNumber::operator=(const BigNumber &bn)
{
BN_copy(_bn, bn._bn);
return *this;
}
-
BigNumber BigNumber::operator+=(const BigNumber &bn)
{
BN_add(_bn, _bn, bn._bn);
return *this;
}
-
BigNumber BigNumber::operator-=(const BigNumber &bn)
{
BN_sub(_bn, _bn, bn._bn);
return *this;
}
-
BigNumber BigNumber::operator*=(const BigNumber &bn)
{
BN_CTX *bnctx;
-
bnctx = BN_CTX_new();
BN_mul(_bn, _bn, bn._bn, bnctx);
BN_CTX_free(bnctx);
-
return *this;
}
-
BigNumber BigNumber::operator/=(const BigNumber &bn)
{
BN_CTX *bnctx;
-
bnctx = BN_CTX_new();
BN_div(_bn, NULL, _bn, bn._bn, bnctx);
BN_CTX_free(bnctx);
-
return *this;
}
-
BigNumber BigNumber::operator%=(const BigNumber &bn)
{
BN_CTX *bnctx;
-
bnctx = BN_CTX_new();
BN_mod(_bn, _bn, bn._bn, bnctx);
BN_CTX_free(bnctx);
-
return *this;
}
-
BigNumber BigNumber::Exp(const BigNumber &bn)
{
BigNumber ret;
BN_CTX *bnctx;
-
bnctx = BN_CTX_new();
BN_exp(ret._bn, _bn, bn._bn, bnctx);
BN_CTX_free(bnctx);
-
return ret;
}
-
BigNumber BigNumber::ModExp(const BigNumber &bn1, const BigNumber &bn2)
{
BigNumber ret;
BN_CTX *bnctx;
-
bnctx = BN_CTX_new();
BN_mod_exp(ret._bn, _bn, bn1._bn, bn2._bn, bnctx);
BN_CTX_free(bnctx);
-
return ret;
}
-
int BigNumber::GetNumBytes(void)
{
return BN_num_bytes(_bn);
}
-
uint32 BigNumber::AsDword()
{
return (uint32)BN_get_word(_bn);
}
-
bool BigNumber::isZero() const
{
return BN_is_zero(_bn)!=0;
}
-
uint8 *BigNumber::AsByteArray(int minSize)
{
int length = (minSize >= GetNumBytes()) ? minSize : GetNumBytes();
-
if (_array)
{
delete[] _array;
_array = NULL;
}
_array = new uint8[length];
-
// If we need more bytes than length of BigNumber set the rest to 0
if (length > GetNumBytes())
memset((void*)_array, 0, length);
-
BN_bn2bin(_bn, (unsigned char *)_array);
-
std::reverse(_array, _array + length);
-
return _array;
}
-
const char *BigNumber::AsHexStr()
{
return BN_bn2hex(_bn);
}
-
const char *BigNumber::AsDecStr()
{
return BN_bn2dec(_bn);
diff --git a/src/shared/Auth/BigNumber.h b/src/shared/Auth/BigNumber.h
index f1b3a0beda2..898f53c2a05 100644
--- a/src/shared/Auth/BigNumber.h
+++ b/src/shared/Auth/BigNumber.h
@@ -17,14 +17,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#ifndef _AUTH_BIGNUMBER_H
#define _AUTH_BIGNUMBER_H
-
#include "Common.h"
-
struct bignum_st;
-
class BigNumber
{
public:
@@ -32,16 +28,12 @@ class BigNumber
BigNumber(const BigNumber &bn);
BigNumber(uint32);
~BigNumber();
-
void SetDword(uint32);
void SetQword(uint64);
void SetBinary(const uint8 *bytes, int len);
void SetHexStr(const char *str);
-
void SetRand(int numbits);
-
BigNumber operator=(const BigNumber &bn);
-
BigNumber operator+=(const BigNumber &bn);
BigNumber operator+(const BigNumber &bn)
{
@@ -72,22 +64,15 @@ class BigNumber
BigNumber t(*this);
return t %= bn;
}
-
bool isZero() const;
-
BigNumber ModExp(const BigNumber &bn1, const BigNumber &bn2);
BigNumber Exp(const BigNumber &);
-
int GetNumBytes(void);
-
struct bignum_st *BN() { return _bn; }
-
uint32 AsDword();
uint8* AsByteArray(int minSize = 0);
-
const char *AsHexStr();
const char *AsDecStr();
-
private:
struct bignum_st *_bn;
uint8 *_array;
diff --git a/src/shared/Auth/Hmac.cpp b/src/shared/Auth/Hmac.cpp
index 985b4fb9a56..ed68ce8c5df 100644
--- a/src/shared/Auth/Hmac.cpp
+++ b/src/shared/Auth/Hmac.cpp
@@ -17,40 +17,32 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#include "Auth/Hmac.h"
#include "BigNumber.h"
-
HmacHash::HmacHash(uint32 len, uint8 *seed)
{
ASSERT(len == SEED_KEY_SIZE);
-
HMAC_CTX_init(&m_ctx);
HMAC_Init_ex(&m_ctx, seed, SEED_KEY_SIZE, EVP_sha1(), NULL);
}
-
HmacHash::~HmacHash()
{
HMAC_CTX_cleanup(&m_ctx);
}
-
void HmacHash::UpdateBigNumber(BigNumber *bn)
{
UpdateData(bn->AsByteArray(), bn->GetNumBytes());
}
-
void HmacHash::UpdateData(const uint8 *data, int length)
{
HMAC_Update(&m_ctx, data, length);
}
-
void HmacHash::Finalize()
{
uint32 length = 0;
HMAC_Final(&m_ctx, (uint8*)m_digest, &length);
ASSERT(length == SHA_DIGEST_LENGTH)
}
-
uint8 *HmacHash::ComputeHash(BigNumber *bn)
{
HMAC_Update(&m_ctx, bn->AsByteArray(), bn->GetNumBytes());
diff --git a/src/shared/Auth/Hmac.h b/src/shared/Auth/Hmac.h
index 76a302d68de..a039617f801 100644
--- a/src/shared/Auth/Hmac.h
+++ b/src/shared/Auth/Hmac.h
@@ -17,18 +17,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#ifndef _AUTH_HMAC_H
#define _AUTH_HMAC_H
-
#include "Common.h"
#include <openssl/hmac.h>
#include <openssl/sha.h>
-
class BigNumber;
-
#define SEED_KEY_SIZE 16
-
class HmacHash
{
public:
diff --git a/src/shared/Auth/SARC4.cpp b/src/shared/Auth/SARC4.cpp
index f59bb7f0c53..5687deece59 100644
--- a/src/shared/Auth/SARC4.cpp
+++ b/src/shared/Auth/SARC4.cpp
@@ -15,17 +15,14 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#include "Auth/SARC4.h"
#include <openssl/sha.h>
-
SARC4::SARC4()
{
EVP_CIPHER_CTX_init(&m_ctx);
EVP_EncryptInit_ex(&m_ctx, EVP_rc4(), NULL, NULL, NULL);
EVP_CIPHER_CTX_set_key_length(&m_ctx, SHA_DIGEST_LENGTH);
}
-
SARC4::SARC4(uint8 *seed)
{
EVP_CIPHER_CTX_init(&m_ctx);
@@ -33,17 +30,14 @@ SARC4::SARC4(uint8 *seed)
EVP_CIPHER_CTX_set_key_length(&m_ctx, SHA_DIGEST_LENGTH);
EVP_EncryptInit_ex(&m_ctx, NULL, NULL, seed, NULL);
}
-
SARC4::~SARC4()
{
EVP_CIPHER_CTX_cleanup(&m_ctx);
}
-
void SARC4::Init(uint8 *seed)
{
EVP_EncryptInit_ex(&m_ctx, NULL, NULL, seed, NULL);
}
-
void SARC4::UpdateData(int len, uint8 *data)
{
int outlen = 0;
diff --git a/src/shared/Auth/SARC4.h b/src/shared/Auth/SARC4.h
index 3f15328d6cb..350b4ad51e6 100644
--- a/src/shared/Auth/SARC4.h
+++ b/src/shared/Auth/SARC4.h
@@ -15,13 +15,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#ifndef _AUTH_SARC4_H
#define _AUTH_SARC4_H
-
#include "Common.h"
#include <openssl/evp.h>
-
class SARC4
{
public:
diff --git a/src/shared/Auth/Sha1.cpp b/src/shared/Auth/Sha1.cpp
index 802f1bbcdff..1cb1ea5fb40 100644
--- a/src/shared/Auth/Sha1.cpp
+++ b/src/shared/Auth/Sha1.cpp
@@ -17,36 +17,29 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#include "Auth/Sha1.h"
#include "Auth/BigNumber.h"
#include <stdarg.h>
-
Sha1Hash::Sha1Hash()
{
SHA1_Init(&mC);
}
-
Sha1Hash::~Sha1Hash()
{
SHA1_Init(&mC);
}
-
void Sha1Hash::UpdateData(const uint8 *dta, int len)
{
SHA1_Update(&mC, dta, len);
}
-
void Sha1Hash::UpdateData(const std::string &str)
{
UpdateData((uint8 const*)str.c_str(), str.length());
}
-
void Sha1Hash::UpdateBigNumbers(BigNumber *bn0, ...)
{
va_list v;
BigNumber *bn;
-
va_start(v, bn0);
bn = bn0;
while (bn)
@@ -56,12 +49,10 @@ void Sha1Hash::UpdateBigNumbers(BigNumber *bn0, ...)
}
va_end(v);
}
-
void Sha1Hash::Initialize()
{
SHA1_Init(&mC);
}
-
void Sha1Hash::Finalize(void)
{
SHA1_Final(mDigest, &mC);
diff --git a/src/shared/Auth/Sha1.h b/src/shared/Auth/Sha1.h
index bd2b1afa876..9b6dad84234 100644
--- a/src/shared/Auth/Sha1.h
+++ b/src/shared/Auth/Sha1.h
@@ -17,34 +17,25 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#ifndef _AUTH_SHA1_H
#define _AUTH_SHA1_H
-
#include "Common.h"
#include <openssl/sha.h>
#include <openssl/crypto.h>
-
class BigNumber;
-
class Sha1Hash
{
public:
Sha1Hash();
~Sha1Hash();
-
void UpdateFinalizeBigNumbers(BigNumber *bn0, ...);
void UpdateBigNumbers(BigNumber *bn0, ...);
-
void UpdateData(const uint8 *dta, int len);
void UpdateData(const std::string &str);
-
void Initialize();
void Finalize();
-
uint8 *GetDigest(void) { return mDigest; };
int GetLength(void) { return SHA_DIGEST_LENGTH; };
-
private:
SHA_CTX mC;
uint8 mDigest[SHA_DIGEST_LENGTH];