mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-04-09 23:06:47 +03:00
feat(net): add SRP6_Client
This commit is contained in:
parent
5d1a800076
commit
cb62e2dcfe
@ -1,4 +1,4 @@
|
||||
file(GLOB PRIVATE_SOURCES "*.cpp" "connection/*.cpp" "grunt/*.cpp" "login/*.cpp")
|
||||
file(GLOB PRIVATE_SOURCES "*.cpp" "connection/*.cpp" "grunt/*.cpp" "login/*.cpp" "srp/*.cpp")
|
||||
|
||||
add_library(net STATIC
|
||||
${PRIVATE_SOURCES}
|
||||
|
@ -82,7 +82,7 @@ void Grunt::ClientLink::LogonNewSession(const Grunt::ClientLink::Logon& logon) {
|
||||
*decoration = '\0';
|
||||
}
|
||||
|
||||
// TODO SRP6_Client::BeginAuthentication
|
||||
this->m_srpClient.BeginAuthentication(accountNameUnDecorated, password);
|
||||
|
||||
CDataStoreCache<1024> clientChallenge;
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "net/connection/WowConnectionResponse.hpp"
|
||||
#include "net/grunt/Pending.hpp"
|
||||
#include "net/grunt/Timer.hpp"
|
||||
#include "net/srp/SRP6_Client.hpp"
|
||||
#include "net/Types.hpp"
|
||||
#include <storm/Thread.hpp>
|
||||
|
||||
@ -31,6 +32,7 @@ class Grunt::ClientLink : public WowConnectionResponse, Grunt::Pending, Grunt::T
|
||||
Grunt::Timer m_timer;
|
||||
uint32_t m_clientIP = 0;
|
||||
int32_t m_state;
|
||||
SRP6_Client m_srpClient;
|
||||
SCritSect m_critSect;
|
||||
WowConnection* m_connection = nullptr;
|
||||
ClientResponse* m_clientResponse;
|
||||
|
24
src/net/srp/SRP6_Client.cpp
Normal file
24
src/net/srp/SRP6_Client.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
#include "net/srp/SRP6_Client.hpp"
|
||||
#include <cstring>
|
||||
|
||||
int32_t SRP6_Client::BeginAuthentication(const char* accountName, const char* password) {
|
||||
if (!accountName || !password) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
SHA1_Init(&this->ctx);
|
||||
|
||||
SHA1_CONTEXT ctx;
|
||||
|
||||
SHA1_Init(&ctx);
|
||||
SHA1_Update(&ctx, reinterpret_cast<const uint8_t*>(accountName), strlen(accountName));
|
||||
SHA1_Final(this->accountNameDigest, &ctx);
|
||||
|
||||
SHA1_Init(&ctx);
|
||||
SHA1_Update(&ctx, reinterpret_cast<const uint8_t*>(accountName), strlen(accountName));
|
||||
SHA1_Update(&ctx, reinterpret_cast<const uint8_t*>(":"), 1u);
|
||||
SHA1_Update(&ctx, reinterpret_cast<const uint8_t*>(password), strlen(password));
|
||||
SHA1_Final(this->interimDigest, &ctx);
|
||||
|
||||
return 0;
|
||||
}
|
17
src/net/srp/SRP6_Client.hpp
Normal file
17
src/net/srp/SRP6_Client.hpp
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef NET_SRP_SRP6_CLIENT_HPP
|
||||
#define NET_SRP_SRP6_CLIENT_HPP
|
||||
|
||||
#include <common/SHA1.hpp>
|
||||
|
||||
class SRP6_Client {
|
||||
public:
|
||||
// Member variables
|
||||
uint8_t accountNameDigest[SHA1_DIGEST_SIZE];
|
||||
uint8_t interimDigest[SHA1_DIGEST_SIZE];
|
||||
SHA1_CONTEXT ctx;
|
||||
|
||||
// Member functions
|
||||
int32_t BeginAuthentication(const char* accountName, const char* password);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user