diff --git a/src/game/Player.h b/src/game/Player.h index 127273f4d..d5708293d 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1106,6 +1106,7 @@ class MANGOS_DLL_SPEC Player : public Unit // Played Time Stuff time_t m_logintime; time_t m_Last_tick; + uint32 m_Played_time[MAX_PLAYED_TIME_INDEX]; uint32 GetTotalPlayedTime() { return m_Played_time[PLAYED_TIME_TOTAL]; } uint32 GetLevelPlayedTime() { return m_Played_time[PLAYED_TIME_LEVEL]; } diff --git a/src/shared/Auth/AuthCrypt.cpp b/src/shared/Auth/AuthCrypt.cpp index c7c1ee24f..3317ec70e 100644 --- a/src/shared/Auth/AuthCrypt.cpp +++ b/src/shared/Auth/AuthCrypt.cpp @@ -21,7 +21,7 @@ #include "Log.h" #include "BigNumber.h" -AuthCrypt::AuthCrypt() +AuthCrypt::AuthCrypt() : _clientDecrypt(SHA_DIGEST_LENGTH), _serverEncrypt(SHA_DIGEST_LENGTH) { _initialized = false; } diff --git a/src/shared/Auth/BigNumber.cpp b/src/shared/Auth/BigNumber.cpp index 4d18ddbf5..27bae8986 100644 --- a/src/shared/Auth/BigNumber.cpp +++ b/src/shared/Auth/BigNumber.cpp @@ -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; } diff --git a/src/shared/Auth/BigNumber.h b/src/shared/Auth/BigNumber.h index 611fe7d06..3654f8870 100644 --- a/src/shared/Auth/BigNumber.h +++ b/src/shared/Auth/BigNumber.h @@ -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(); diff --git a/src/shared/Auth/HMACSHA1.cpp b/src/shared/Auth/HMACSHA1.cpp index 44e0bd432..1f78066c8 100644 --- a/src/shared/Auth/HMACSHA1.cpp +++ b/src/shared/Auth/HMACSHA1.cpp @@ -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; diff --git a/src/shared/Auth/HMACSHA1.h b/src/shared/Auth/HMACSHA1.h index c36fd9aec..233d81c2d 100644 --- a/src/shared/Auth/HMACSHA1.h +++ b/src/shared/Auth/HMACSHA1.h @@ -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; } diff --git a/src/shared/Auth/SARC4.cpp b/src/shared/Auth/SARC4.cpp index eba3ae8c1..4984f9fda 100644 --- a/src/shared/Auth/SARC4.cpp +++ b/src/shared/Auth/SARC4.cpp @@ -19,18 +19,18 @@ #include "Auth/SARC4.h" #include -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); } diff --git a/src/shared/Auth/SARC4.h b/src/shared/Auth/SARC4.h index 9805f10c9..d80ce62bb 100644 --- a/src/shared/Auth/SARC4.h +++ b/src/shared/Auth/SARC4.h @@ -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);