mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-18 19:29:09 +00:00
Move half of the Challenge Hash stuff.
This commit is contained in:
@ -3,10 +3,12 @@ include_directories("../../NucleusLib")
|
||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||
|
||||
set(pnEncryption_SOURCES
|
||||
plChallengeHash.cpp
|
||||
plChecksum.cpp
|
||||
)
|
||||
|
||||
set(pnEncryption_HEADERS
|
||||
plChallengeHash.h
|
||||
plChecksum.h
|
||||
)
|
||||
|
||||
|
78
Sources/Plasma/NucleusLib/pnEncryption/plChallengeHash.cpp
Normal file
78
Sources/Plasma/NucleusLib/pnEncryption/plChallengeHash.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
|
||||
#include "plChallengeHash.h"
|
||||
#include "pnUtils/pnUtils.h"
|
||||
|
||||
ShaDigest fSeed;
|
||||
|
||||
void CryptCreateRandomSeed(size_t length, uint8_t* data) {
|
||||
}
|
||||
|
||||
void CryptHashPassword(const plString& username, const plString& password, ShaDigest dest) {
|
||||
|
||||
/* This should be unnecessary once plString has ToLower() */
|
||||
wchar_t* w_name = (wchar_t*)_TEMP_CONVERT_TO_WCHAR_T(username);
|
||||
StrLower(w_name);
|
||||
|
||||
plString buf = password;
|
||||
buf += _TEMP_CONVERT_FROM_WCHAR_T(w_name);
|
||||
|
||||
plSHAChecksum sum(buf.GetSize() * sizeof(wchar_t), (uint8_t*)_TEMP_CONVERT_TO_WCHAR_T(buf));
|
||||
|
||||
memcpy(dest, sum.GetValue(), sizeof(ShaDigest));
|
||||
}
|
||||
|
||||
void CryptHashPasswordChallenge(uint32_t clientChallenge, uint32_t serverChallenge, ShaDigest namePassHash, ShaDigest challengeHash) {
|
||||
plSHAChecksum sum;
|
||||
|
||||
sum.Start();
|
||||
sum.AddTo(sizeof(uint32_t), (uint8_t*)&clientChallenge);
|
||||
sum.AddTo(sizeof(uint32_t), (uint8_t*)&serverChallenge);
|
||||
sum.AddTo(sizeof(ShaDigest), namePassHash);
|
||||
sum.Finish();
|
||||
|
||||
memcpy(challengeHash, sum.GetValue(), sizeof(ShaDigest));
|
||||
}
|
||||
|
||||
void CryptCreateFastWeakChallenge(uint32_t* challenge, uint32_t val1, uint32_t val2) {
|
||||
}
|
57
Sources/Plasma/NucleusLib/pnEncryption/plChallengeHash.h
Normal file
57
Sources/Plasma/NucleusLib/pnEncryption/plChallengeHash.h
Normal file
@ -0,0 +1,57 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#ifndef PL_CHALLENGE_HASH_H
|
||||
#define PL_CHALLENGE_HASH_H
|
||||
|
||||
#include "HeadSpin.h"
|
||||
#include "plChecksum.h"
|
||||
#include "plString.h"
|
||||
|
||||
void CryptCreateRandomSeed(size_t length, uint8_t* data);
|
||||
|
||||
void CryptHashPassword(const plString& username, const plString& password, ShaDigest dest);
|
||||
|
||||
void CryptHashPasswordChallenge(uint32_t clientChallenge, uint32_t serverChallenge, ShaDigest namePassHash, ShaDigest challengeHash);
|
||||
|
||||
void CryptCreateFastWeakChallenge(uint32_t* challenge, uint32_t val1, uint32_t val2);
|
||||
|
||||
#endif //PL_CHALLENGE_HASH_H
|
@ -104,7 +104,7 @@ plChecksum::plChecksum(unsigned int bufsize, const char* buffer)
|
||||
|
||||
//============================================================================
|
||||
|
||||
plMD5Checksum::plMD5Checksum( uint32_t size, uint8_t *buffer )
|
||||
plMD5Checksum::plMD5Checksum(size_t size, uint8_t *buffer )
|
||||
{
|
||||
fValid = false;
|
||||
Start();
|
||||
@ -173,7 +173,7 @@ void plMD5Checksum::Start()
|
||||
fValid = false;
|
||||
}
|
||||
|
||||
void plMD5Checksum::AddTo( uint32_t size, const uint8_t *buffer )
|
||||
void plMD5Checksum::AddTo(size_t size, const uint8_t *buffer )
|
||||
{
|
||||
MD5_Update( &fContext, buffer, size );
|
||||
}
|
||||
@ -230,7 +230,7 @@ bool plMD5Checksum::operator==( const plMD5Checksum &rhs ) const
|
||||
|
||||
//============================================================================
|
||||
|
||||
plSHAChecksum::plSHAChecksum( uint32_t size, uint8_t *buffer )
|
||||
plSHAChecksum::plSHAChecksum(size_t size, uint8_t *buffer )
|
||||
{
|
||||
fValid = false;
|
||||
Start();
|
||||
@ -301,7 +301,7 @@ void plSHAChecksum::Start()
|
||||
fValid = false;
|
||||
}
|
||||
|
||||
void plSHAChecksum::AddTo(uint32_t size, const uint8_t* buffer)
|
||||
void plSHAChecksum::AddTo(size_t size, const uint8_t* buffer)
|
||||
{
|
||||
SHA_Update(&fContext, buffer, size);
|
||||
}
|
||||
@ -356,7 +356,7 @@ bool plSHAChecksum::operator==(const plSHAChecksum& rhs) const
|
||||
|
||||
//============================================================================
|
||||
|
||||
plSHA1Checksum::plSHA1Checksum( uint32_t size, uint8_t *buffer )
|
||||
plSHA1Checksum::plSHA1Checksum(size_t size, uint8_t *buffer )
|
||||
{
|
||||
fValid = false;
|
||||
Start();
|
||||
@ -427,7 +427,7 @@ void plSHA1Checksum::Start()
|
||||
fValid = false;
|
||||
}
|
||||
|
||||
void plSHA1Checksum::AddTo(uint32_t size, const uint8_t* buffer)
|
||||
void plSHA1Checksum::AddTo(size_t size, const uint8_t* buffer)
|
||||
{
|
||||
SHA1_Update(&fContext, buffer, size);
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ class plMD5Checksum
|
||||
uint8_t fChecksum[MD5_DIGEST_LENGTH];
|
||||
|
||||
public:
|
||||
plMD5Checksum(uint32_t size, uint8_t *buffer);
|
||||
plMD5Checksum(size_t size, uint8_t *buffer);
|
||||
plMD5Checksum();
|
||||
plMD5Checksum(const plMD5Checksum &rhs);
|
||||
plMD5Checksum(const char *fileName);
|
||||
@ -82,11 +82,11 @@ class plMD5Checksum
|
||||
void CalcFromStream(hsStream* stream);
|
||||
|
||||
void Start();
|
||||
void AddTo(uint32_t size, const uint8_t *buffer);
|
||||
void AddTo(size_t size, const uint8_t *buffer);
|
||||
void Finish();
|
||||
|
||||
const uint8_t *GetValue() const { return fChecksum; }
|
||||
uint32_t GetSize() const { return sizeof(fChecksum); }
|
||||
size_t GetSize() const { return sizeof(fChecksum); }
|
||||
|
||||
// Backdoor for cached checksums (ie, if you loaded it off disk)
|
||||
void SetValue(uint8_t* checksum);
|
||||
@ -113,7 +113,7 @@ class plSHAChecksum
|
||||
ShaDigest fChecksum;
|
||||
|
||||
public:
|
||||
plSHAChecksum(uint32_t size, uint8_t* buffer);
|
||||
plSHAChecksum(size_t size, uint8_t* buffer);
|
||||
plSHAChecksum();
|
||||
plSHAChecksum(const plSHAChecksum& rhs);
|
||||
plSHAChecksum(const char* fileName);
|
||||
@ -126,11 +126,11 @@ class plSHAChecksum
|
||||
void CalcFromStream(hsStream* stream);
|
||||
|
||||
void Start();
|
||||
void AddTo(uint32_t size, const uint8_t* buffer);
|
||||
void AddTo(size_t size, const uint8_t* buffer);
|
||||
void Finish();
|
||||
|
||||
const uint8_t* GetValue() const { return fChecksum; }
|
||||
uint32_t GetSize() const { return sizeof(fChecksum); }
|
||||
size_t GetSize() const { return sizeof(fChecksum); }
|
||||
|
||||
// Backdoor for cached checksums (ie, if you loaded it off disk)
|
||||
void SetValue(uint8_t* checksum);
|
||||
@ -152,7 +152,7 @@ class plSHA1Checksum
|
||||
ShaDigest fChecksum;
|
||||
|
||||
public:
|
||||
plSHA1Checksum(uint32_t size, uint8_t* buffer);
|
||||
plSHA1Checksum(size_t size, uint8_t* buffer);
|
||||
plSHA1Checksum();
|
||||
plSHA1Checksum(const plSHA1Checksum& rhs);
|
||||
plSHA1Checksum(const char* fileName);
|
||||
@ -165,11 +165,11 @@ class plSHA1Checksum
|
||||
void CalcFromStream(hsStream* stream);
|
||||
|
||||
void Start();
|
||||
void AddTo(uint32_t size, const uint8_t* buffer);
|
||||
void AddTo(size_t size, const uint8_t* buffer);
|
||||
void Finish();
|
||||
|
||||
const uint8_t* GetValue() const { return fChecksum; }
|
||||
uint32_t GetSize() const { return sizeof(fChecksum); }
|
||||
size_t GetSize() const { return sizeof(fChecksum); }
|
||||
|
||||
// Backdoor for cached checksums (ie, if you loaded it off disk)
|
||||
void SetValue(uint8_t* checksum);
|
||||
|
Reference in New Issue
Block a user