From d0debf1d9486e0b6c1ac1c839d8d40d78b3b8309 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Fri, 5 May 2023 20:24:20 +0200 Subject: [PATCH] Implemented legacy public key signature --- .../injection/access/IKeyPairResponse.java | 8 ++++++++ .../fixes/authlib/MixinKeyPairResponse.java | 20 +++++++++++++++++++ .../fixes/minecraft/MixinProfileKeysImpl.java | 4 ++-- src/main/resources/viafabricplus.mixins.json | 3 ++- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java create mode 100644 src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java b/src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java new file mode 100644 index 00000000..81f23b8f --- /dev/null +++ b/src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java @@ -0,0 +1,8 @@ +package de.florianmichael.viafabricplus.injection.access; + +import java.nio.ByteBuffer; + +public interface IKeyPairResponse { + + ByteBuffer viafabricplus_getLegacyPublicKeySignature(); +} diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java new file mode 100644 index 00000000..7cdac0a5 --- /dev/null +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java @@ -0,0 +1,20 @@ +package de.florianmichael.viafabricplus.injection.mixin.fixes.authlib; + +import com.google.gson.annotations.SerializedName; +import com.mojang.authlib.yggdrasil.response.KeyPairResponse; +import de.florianmichael.viafabricplus.injection.access.IKeyPairResponse; +import org.spongepowered.asm.mixin.Mixin; + +import java.nio.ByteBuffer; + +@Mixin(KeyPairResponse.class) +public class MixinKeyPairResponse implements IKeyPairResponse { + + @SerializedName("publicKeySignature") + private ByteBuffer viafabricplus_legacyKeySignature; + + @Override + public ByteBuffer viafabricplus_getLegacyPublicKeySignature() { + return this.viafabricplus_legacyKeySignature; + } +} diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java index ecc1a742..fd4aad46 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java @@ -18,6 +18,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; import com.mojang.authlib.yggdrasil.response.KeyPairResponse; +import de.florianmichael.viafabricplus.injection.access.IKeyPairResponse; import de.florianmichael.viafabricplus.injection.access.IPublicKeyData; import net.minecraft.client.util.ProfileKeysImpl; import net.minecraft.network.encryption.PlayerPublicKey; @@ -31,7 +32,6 @@ public class MixinProfileKeysImpl { @Inject(method = "decodeKeyPairResponse", at = @At("RETURN")) private static void trackLegacyKey(KeyPairResponse keyPairResponse, CallbackInfoReturnable cir) { -// ((IPublicKeyData) (Object) cir.getReturnValue()).viafabricplus_setV1Key(keyPairResponse.getLegacyPublicKeySignature()); - // TODO | Track Key + ((IPublicKeyData) (Object) cir.getReturnValue()).viafabricplus_setV1Key(((IKeyPairResponse) keyPairResponse).viafabricplus_getLegacyPublicKeySignature()); } } diff --git a/src/main/resources/viafabricplus.mixins.json b/src/main/resources/viafabricplus.mixins.json index 0e0abadd..df425c77 100644 --- a/src/main/resources/viafabricplus.mixins.json +++ b/src/main/resources/viafabricplus.mixins.json @@ -158,7 +158,8 @@ "fixes.viaversion.protocol1_9to1_8.MixinViaIdleThread", "jsonwebtoken.MixinClasses", "jsonwebtoken.MixinDefaultCompressionCodecResolver", - "jsonwebtoken.MixinDefaultJwtParserBuilder" + "jsonwebtoken.MixinDefaultJwtParserBuilder", + "fixes.authlib.MixinKeyPairResponse" ], "injectors": { "defaultRequire": 1