mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Make early protocol auth mechanism generic, and add SRP
Adds everything needed for SRP (and everything works too), but still deactivated, as protocol v25 init packets aren't final yet. Can be activated by changing the LATEST_PROTOCOL_VERSION header to 25 inside networkprotocol.h.
This commit is contained in:
parent
181f7baa45
commit
82e35edff5
25 changed files with 3351 additions and 309 deletions
|
@ -22,12 +22,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "numeric.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "sha1.h"
|
||||
#include "base64.h"
|
||||
#include "hex.h"
|
||||
#include "../porting.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
#include <map>
|
||||
|
@ -176,26 +173,6 @@ std::string wide_to_narrow(const std::wstring &wcs)
|
|||
|
||||
#endif
|
||||
|
||||
// Get an sha-1 hash of the player's name combined with
|
||||
// the password entered. That's what the server uses as
|
||||
// their password. (Exception : if the password field is
|
||||
// blank, we send a blank password - this is for backwards
|
||||
// compatibility with password-less players).
|
||||
std::string translatePassword(const std::string &playername,
|
||||
const std::string &password)
|
||||
{
|
||||
if (password.length() == 0)
|
||||
return "";
|
||||
|
||||
std::string slt = playername + password;
|
||||
SHA1 sha1;
|
||||
sha1.addBytes(slt.c_str(), slt.length());
|
||||
unsigned char *digest = sha1.getDigest();
|
||||
std::string pwd = base64_encode(digest, 20);
|
||||
free(digest);
|
||||
return pwd;
|
||||
}
|
||||
|
||||
std::string urlencode(std::string str)
|
||||
{
|
||||
// Encodes non-unreserved URI characters by a percent sign
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue