Small backport from other branch.

Conflicts:

	src/game/Player.cpp
	src/game/SharedDefines.h
	src/game/UpdateFields.h
	src/realmd/AuthCodes.h
	src/shared/Auth/AuthCrypt.cpp
	src/shared/Auth/HMACSHA1.cpp
This commit is contained in:
tomrus88 2010-04-05 13:39:51 +04:00
parent 1904d2e654
commit 73f6bf1783
8 changed files with 14 additions and 10 deletions

View file

@ -21,7 +21,7 @@
#include "Log.h"
#include "BigNumber.h"
AuthCrypt::AuthCrypt()
AuthCrypt::AuthCrypt() : _clientDecrypt(SHA_DIGEST_LENGTH), _serverEncrypt(SHA_DIGEST_LENGTH)
{
_initialized = false;
}

View file

@ -165,7 +165,7 @@ bool BigNumber::isZero() const
return BN_is_zero(_bn)!=0;
}
uint8 *BigNumber::AsByteArray(int minSize)
uint8 *BigNumber::AsByteArray(int minSize, bool reverse)
{
int length = (minSize >= GetNumBytes()) ? minSize : GetNumBytes();
@ -182,7 +182,8 @@ uint8 *BigNumber::AsByteArray(int minSize)
BN_bn2bin(_bn, (unsigned char *)_array);
std::reverse(_array, _array + length);
if (reverse)
std::reverse(_array, _array + length);
return _array;
}

View file

@ -81,7 +81,7 @@ class BigNumber
struct bignum_st *BN() { return _bn; }
uint32 AsDword();
uint8* AsByteArray(int minSize = 0);
uint8* AsByteArray(int minSize = 0, bool reverse = true);
const char *AsHexStr();
const char *AsDecStr();

View file

@ -44,6 +44,7 @@ void HMACSHA1::UpdateData(const std::string &str)
{
UpdateData((uint8 const*)str.c_str(), str.length());
}
void HMACSHA1::Finalize()
{
uint32 length = 0;

View file

@ -34,6 +34,7 @@ class HMACSHA1
~HMACSHA1();
void UpdateBigNumber(BigNumber *bn);
void UpdateData(const uint8 *data, int length);
void UpdateData(const std::string &str);
void Finalize();
uint8 *ComputeHash(BigNumber *bn);
uint8 *GetDigest() { return (uint8*)m_digest; }

View file

@ -19,18 +19,18 @@
#include "Auth/SARC4.h"
#include <openssl/sha.h>
SARC4::SARC4()
SARC4::SARC4(uint8 len)
{
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);
EVP_CIPHER_CTX_set_key_length(&m_ctx, len);
}
SARC4::SARC4(uint8 *seed)
SARC4::SARC4(uint8 *seed, uint8 len)
{
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);
EVP_CIPHER_CTX_set_key_length(&m_ctx, len);
EVP_EncryptInit_ex(&m_ctx, NULL, NULL, seed, NULL);
}

View file

@ -25,8 +25,8 @@
class SARC4
{
public:
SARC4();
SARC4(uint8 *seed);
SARC4(uint8 len);
SARC4(uint8 *seed, uint8 len);
~SARC4();
void Init(uint8 *seed);
void UpdateData(int len, uint8 *data);