Restore ability to login with microsoft broken after yggdrasil login implementation

This commit is contained in:
mcflurrybaby 2023-12-02 12:39:52 +02:00
parent 1c17da2665
commit ceff78a821
3 changed files with 6 additions and 4 deletions

View file

@ -538,7 +538,8 @@ namespace MinecraftClient.Protocol.Handlers
if (needCheckSession) if (needCheckSession)
{ {
if ((type == LoginType.mojang && ProtocolHandler.SessionCheck(uuid, sessionID, serverHash)) || (type == LoginType.yggdrasil && ProtocolHandler.YggdrasilSessionCheck(uuid, sessionID, serverHash))) bool notYggdrasil = type == LoginType.mojang || type == LoginType.microsoft;
if ((notYggdrasil && ProtocolHandler.SessionCheck(uuid, sessionID, serverHash)) || (type == LoginType.yggdrasil && ProtocolHandler.YggdrasilSessionCheck(uuid, sessionID, serverHash)))
{ {
session.ServerIDhash = serverIDhash; session.ServerIDhash = serverIDhash;
session.ServerPublicKey = serverPublicKey; session.ServerPublicKey = serverPublicKey;

View file

@ -2619,8 +2619,8 @@ namespace MinecraftClient.Protocol.Handlers
if (needCheckSession) if (needCheckSession)
{ {
string serverHash = CryptoHandler.GetServerHash(serverIDhash, serverPublicKey, secretKey); string serverHash = CryptoHandler.GetServerHash(serverIDhash, serverPublicKey, secretKey);
bool notYggdrasil = type == LoginType.mojang || type == LoginType.microsoft;
if ((type == LoginType.mojang && ProtocolHandler.SessionCheck(uuid, sessionID, serverHash) )|| (type == LoginType.yggdrasil && ProtocolHandler.YggdrasilSessionCheck(uuid, sessionID, serverHash))) if ((notYggdrasil && ProtocolHandler.SessionCheck(uuid, sessionID, serverHash) )|| (type == LoginType.yggdrasil && ProtocolHandler.YggdrasilSessionCheck(uuid, sessionID, serverHash)))
{ {
session.ServerIDhash = serverIDhash; session.ServerIDhash = serverIDhash;
session.ServerPublicKey = serverPublicKey; session.ServerPublicKey = serverPublicKey;

View file

@ -39,7 +39,8 @@ namespace MinecraftClient.Protocol.Session
return false; return false;
Crypto.CryptoHandler.ClientAESPrivateKey ??= Crypto.CryptoHandler.GenerateAESPrivateKey(); Crypto.CryptoHandler.ClientAESPrivateKey ??= Crypto.CryptoHandler.GenerateAESPrivateKey();
string serverHash = Crypto.CryptoHandler.GetServerHash(ServerIDhash, ServerPublicKey, Crypto.CryptoHandler.ClientAESPrivateKey); string serverHash = Crypto.CryptoHandler.GetServerHash(ServerIDhash, ServerPublicKey, Crypto.CryptoHandler.ClientAESPrivateKey);
if (type == LoginType.mojang && ProtocolHandler.SessionCheck(PlayerID, ID, serverHash)) bool notYggdrasil = type == LoginType.mojang || type == LoginType.microsoft;
if (notYggdrasil && ProtocolHandler.SessionCheck(PlayerID, ID, serverHash))
return true; return true;
if (type == LoginType.yggdrasil && ProtocolHandler.YggdrasilSessionCheck(PlayerID, ID, serverHash)) if (type == LoginType.yggdrasil && ProtocolHandler.YggdrasilSessionCheck(PlayerID, ID, serverHash))
return true; return true;