mirror of
https://github.com/ViaVersion/ViaFabric.git
synced 2024-09-29 04:17:31 +02:00
don't patch keys on server-side
This commit is contained in:
parent
13a50efff0
commit
c8e9132e68
@ -1,11 +1,12 @@
|
|||||||
# suppress inspection "UnusedProperty" for whole file
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
# rip my ram
|
# rip my ram
|
||||||
org.gradle.jvmargs=-Xms32M -Xmx4G -XX:+UseG1GC -XX:+UseStringDeduplication
|
org.gradle.jvmargs=-Xms32M -Xmx3G -XX:+UseG1GC -XX:+UseStringDeduplication
|
||||||
org.gradle.parallel=true
|
|
||||||
|
|
||||||
loader_version=0.14.9
|
loader_version=0.14.10
|
||||||
viaver_version=4.4.3-SNAPSHOT
|
viaver_version=4.4.3-SNAPSHOT
|
||||||
yaml_version=1.33
|
yaml_version=1.33
|
||||||
|
|
||||||
|
# example: 1.19.1-rc2
|
||||||
modrinth_mc_snapshot=
|
modrinth_mc_snapshot=
|
||||||
|
# example: 1.19-Snapshot
|
||||||
curseforge_mc_snapshot=
|
curseforge_mc_snapshot=
|
||||||
|
@ -12,7 +12,7 @@ import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
|||||||
import com.viaversion.fabric.mc119.commands.VRCommandHandler;
|
import com.viaversion.fabric.mc119.commands.VRCommandHandler;
|
||||||
import com.viaversion.fabric.mc119.platform.FabricPlatform;
|
import com.viaversion.fabric.mc119.platform.FabricPlatform;
|
||||||
import com.viaversion.fabric.mc119.platform.VFLoader;
|
import com.viaversion.fabric.mc119.platform.VFLoader;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.ProtocolPatcher1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.ProtocolPatcher1_19;
|
||||||
import com.viaversion.viaversion.ViaManagerImpl;
|
import com.viaversion.viaversion.ViaManagerImpl;
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.data.MappingDataLoader;
|
import com.viaversion.viaversion.api.data.MappingDataLoader;
|
||||||
@ -84,7 +84,7 @@ public class ViaFabric implements ModInitializer {
|
|||||||
config = new VFConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
config = new VFConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||||
.resolve("viafabric.yml").toFile());
|
.resolve("viafabric.yml").toFile());
|
||||||
|
|
||||||
ProtocolPatcher1_19_0.patch();
|
ProtocolPatcher1_19.patchIfClient();
|
||||||
|
|
||||||
INIT_FUTURE.complete(null);
|
INIT_FUTURE.complete(null);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.viaversion.fabric.mc119.mixin.signatures1_19_0;
|
package com.viaversion.fabric.mc119.mixin.signatures1_19.client;
|
||||||
|
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.MessageSigner1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.MessageSigner1_19;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.ProtocolPatcher1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.ProtocolPatcher1_19;
|
||||||
import net.minecraft.command.argument.DecoratableArgumentList;
|
import net.minecraft.command.argument.DecoratableArgumentList;
|
||||||
import net.minecraft.network.encryption.Signer;
|
import net.minecraft.network.encryption.Signer;
|
||||||
import net.minecraft.network.message.ArgumentSignatureDataMap;
|
import net.minecraft.network.message.ArgumentSignatureDataMap;
|
||||||
@ -20,12 +20,12 @@ import java.util.stream.Collectors;
|
|||||||
public class ArgumentSignatureDataMapMixin {
|
public class ArgumentSignatureDataMapMixin {
|
||||||
@Inject(method = "sign", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "sign", at = @At("HEAD"), cancellable = true)
|
||||||
private static void injectSign(DecoratableArgumentList<?> arguments, ArgumentSignatureDataMap.ArgumentSigner signer, CallbackInfoReturnable<ArgumentSignatureDataMap> cir) {
|
private static void injectSign(DecoratableArgumentList<?> arguments, ArgumentSignatureDataMap.ArgumentSigner signer, CallbackInfoReturnable<ArgumentSignatureDataMap> cir) {
|
||||||
if (!ProtocolPatcher1_19_0.shouldPatchKeys) return;
|
if (!ProtocolPatcher1_19.shouldPatchKeys) return;
|
||||||
|
|
||||||
final List<ArgumentSignatureDataMap.Entry> list = ArgumentSignatureDataMap.toNameValuePairs(arguments)
|
final List<ArgumentSignatureDataMap.Entry> list = ArgumentSignatureDataMap.toNameValuePairs(arguments)
|
||||||
.stream().map(entry -> {
|
.stream().map(entry -> {
|
||||||
final MessageMetadata metadata = MessageSigner1_19_0.pollLastMetadata();
|
final MessageMetadata metadata = MessageSigner1_19.pollLastMetadata();
|
||||||
final MessageSignatureData messageSignatureData = MessageSigner1_19_0.sign((Signer) signer,
|
final MessageSignatureData messageSignatureData = MessageSigner1_19.sign((Signer) signer,
|
||||||
Text.literal(entry.getFirst()), metadata.sender(), metadata.timestamp(), metadata.salt());
|
Text.literal(entry.getFirst()), metadata.sender(), metadata.timestamp(), metadata.salt());
|
||||||
|
|
||||||
return new ArgumentSignatureDataMap.Entry(entry.getFirst(), messageSignatureData);
|
return new ArgumentSignatureDataMap.Entry(entry.getFirst(), messageSignatureData);
|
@ -1,8 +1,8 @@
|
|||||||
package com.viaversion.fabric.mc119.mixin.signatures1_19_0;
|
package com.viaversion.fabric.mc119.mixin.signatures1_19.client;
|
||||||
|
|
||||||
import com.mojang.brigadier.ParseResults;
|
import com.mojang.brigadier.ParseResults;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.MessageSigner1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.MessageSigner1_19;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.ProtocolPatcher1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.ProtocolPatcher1_19;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
import net.minecraft.client.network.ClientPlayerEntity;
|
||||||
import net.minecraft.command.CommandSource;
|
import net.minecraft.command.CommandSource;
|
||||||
@ -25,13 +25,13 @@ public class ClientPlayerEntityMixin {
|
|||||||
|
|
||||||
@Inject(method = "signChatMessage", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "signChatMessage", at = @At("HEAD"), cancellable = true)
|
||||||
public void injectSignChatMessage(MessageMetadata metadata, DecoratedContents content, LastSeenMessageList lastSeenMessages, CallbackInfoReturnable<MessageSignatureData> cir) {
|
public void injectSignChatMessage(MessageMetadata metadata, DecoratedContents content, LastSeenMessageList lastSeenMessages, CallbackInfoReturnable<MessageSignatureData> cir) {
|
||||||
if (!ProtocolPatcher1_19_0.shouldPatchKeys) return;
|
if (!ProtocolPatcher1_19.shouldPatchKeys) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final Signer signer = this.client.getProfileKeys().getSigner();
|
final Signer signer = this.client.getProfileKeys().getSigner();
|
||||||
|
|
||||||
if (signer != null) {
|
if (signer != null) {
|
||||||
cir.setReturnValue(MessageSigner1_19_0.sign(signer, content.decorated(), metadata.sender(),
|
cir.setReturnValue(MessageSigner1_19.sign(signer, content.decorated(), metadata.sender(),
|
||||||
metadata.timestamp(), metadata.salt()));
|
metadata.timestamp(), metadata.salt()));
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
@ -41,6 +41,6 @@ public class ClientPlayerEntityMixin {
|
|||||||
|
|
||||||
@Inject(method = "signArguments", at = @At(value = "HEAD"))
|
@Inject(method = "signArguments", at = @At(value = "HEAD"))
|
||||||
public void injectSignArguments(MessageMetadata signer, ParseResults<CommandSource> parseResults, @Nullable Text preview, LastSeenMessageList lastSeenMessages, CallbackInfoReturnable<ArgumentSignatureDataMap> cir) {
|
public void injectSignArguments(MessageMetadata signer, ParseResults<CommandSource> parseResults, @Nullable Text preview, LastSeenMessageList lastSeenMessages, CallbackInfoReturnable<ArgumentSignatureDataMap> cir) {
|
||||||
MessageSigner1_19_0.track(signer);
|
MessageSigner1_19.track(signer);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package com.viaversion.fabric.mc119.mixin.signatures1_19_0;
|
package com.viaversion.fabric.mc119.mixin.signatures1_19.client;
|
||||||
|
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.IPublicKeyData;
|
import com.viaversion.fabric.mc119.signatures1_19.IPublicKeyData;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.ProtocolPatcher1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.ProtocolPatcher1_19;
|
||||||
import net.minecraft.network.encryption.NetworkEncryptionUtils;
|
import net.minecraft.network.encryption.NetworkEncryptionUtils;
|
||||||
import net.minecraft.network.encryption.PlayerPublicKey;
|
import net.minecraft.network.encryption.PlayerPublicKey;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
@ -35,7 +35,7 @@ public class PlayerPublicKeyChPublicKeyDataMixin implements IPublicKeyData {
|
|||||||
|
|
||||||
@Redirect(method = {"write", "verifyKey"}, at = @At(value = "FIELD", target = "Lnet/minecraft/network/encryption/PlayerPublicKey$PublicKeyData;keySignature:[B"))
|
@Redirect(method = {"write", "verifyKey"}, at = @At(value = "FIELD", target = "Lnet/minecraft/network/encryption/PlayerPublicKey$PublicKeyData;keySignature:[B"))
|
||||||
public byte[] replaceKeys(PlayerPublicKey.PublicKeyData instance) {
|
public byte[] replaceKeys(PlayerPublicKey.PublicKeyData instance) {
|
||||||
if (this.key1_19_0 != null && ProtocolPatcher1_19_0.shouldPatchKeys) {
|
if (this.key1_19_0 != null && ProtocolPatcher1_19.shouldPatchKeys) {
|
||||||
return this.key1_19_0;
|
return this.key1_19_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ public class PlayerPublicKeyChPublicKeyDataMixin implements IPublicKeyData {
|
|||||||
|
|
||||||
@Inject(method = "toSerializedString", at = @At(value = "HEAD"), cancellable = true)
|
@Inject(method = "toSerializedString", at = @At(value = "HEAD"), cancellable = true)
|
||||||
public void injectToSerializedString(UUID playerUuid, CallbackInfoReturnable<byte[]> cir) {
|
public void injectToSerializedString(UUID playerUuid, CallbackInfoReturnable<byte[]> cir) {
|
||||||
if (ProtocolPatcher1_19_0.shouldPatchKeys) {
|
if (ProtocolPatcher1_19.shouldPatchKeys) {
|
||||||
cir.setReturnValue((this.expiresAt.toEpochMilli() + NetworkEncryptionUtils.encodeRsaPublicKey(this.key)).getBytes(StandardCharsets.UTF_8));
|
cir.setReturnValue((this.expiresAt.toEpochMilli() + NetworkEncryptionUtils.encodeRsaPublicKey(this.key)).getBytes(StandardCharsets.UTF_8));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package com.viaversion.fabric.mc119.mixin.signatures1_19_0;
|
package com.viaversion.fabric.mc119.mixin.signatures1_19.client;
|
||||||
|
|
||||||
import com.mojang.authlib.yggdrasil.response.KeyPairResponse;
|
import com.mojang.authlib.yggdrasil.response.KeyPairResponse;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.IPublicKeyData;
|
import com.viaversion.fabric.mc119.signatures1_19.IPublicKeyData;
|
||||||
import net.minecraft.client.util.ProfileKeys;
|
import net.minecraft.client.util.ProfileKeys;
|
||||||
import net.minecraft.network.encryption.PlayerPublicKey;
|
import net.minecraft.network.encryption.PlayerPublicKey;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
@ -4,7 +4,7 @@ import com.viaversion.fabric.common.config.VFConfig;
|
|||||||
import com.viaversion.fabric.common.provider.AbstractFabricVersionProvider;
|
import com.viaversion.fabric.common.provider.AbstractFabricVersionProvider;
|
||||||
import com.viaversion.fabric.mc119.ViaFabric;
|
import com.viaversion.fabric.mc119.ViaFabric;
|
||||||
import com.viaversion.fabric.mc119.service.ProtocolAutoDetector;
|
import com.viaversion.fabric.mc119.service.ProtocolAutoDetector;
|
||||||
import com.viaversion.fabric.mc119.signatures1_19_0.ProtocolPatcher1_19_0;
|
import com.viaversion.fabric.mc119.signatures1_19.ProtocolPatcher1_19;
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||||
import io.netty.channel.ChannelPipeline;
|
import io.netty.channel.ChannelPipeline;
|
||||||
import net.minecraft.network.ClientConnection;
|
import net.minecraft.network.ClientConnection;
|
||||||
@ -31,7 +31,7 @@ public class FabricVersionProvider extends AbstractFabricVersionProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFinallySetVersion(int realClientsideVersion) {
|
public void onFinallySetVersion(int realClientsideVersion) {
|
||||||
ProtocolPatcher1_19_0.shouldPatchKeys = realClientsideVersion <= ProtocolVersion.v1_19.getVersion();
|
ProtocolPatcher1_19.shouldPatchKeys = realClientsideVersion <= ProtocolVersion.v1_19.getVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package com.viaversion.fabric.mc119.signatures1_19_0;
|
package com.viaversion.fabric.mc119.signatures1_19;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
public interface IPublicKeyData {
|
public interface IPublicKeyData {
|
||||||
|
|
||||||
void set1_19_0Key(final ByteBuffer byteBuffer);
|
void set1_19_0Key(final ByteBuffer byteBuffer);
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.viaversion.fabric.mc119.signatures1_19_0;
|
package com.viaversion.fabric.mc119.signatures1_19;
|
||||||
|
|
||||||
import net.minecraft.network.encryption.Signer;
|
import net.minecraft.network.encryption.Signer;
|
||||||
import net.minecraft.network.message.MessageMetadata;
|
import net.minecraft.network.message.MessageMetadata;
|
||||||
@ -11,7 +11,7 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class MessageSigner1_19_0 {
|
public class MessageSigner1_19 {
|
||||||
public static final Deque<MessageMetadata> TRACKED_METADATA_LIST = new ArrayDeque<>();
|
public static final Deque<MessageMetadata> TRACKED_METADATA_LIST = new ArrayDeque<>();
|
||||||
|
|
||||||
public static MessageMetadata pollLastMetadata() {
|
public static MessageMetadata pollLastMetadata() {
|
@ -1,4 +1,4 @@
|
|||||||
package com.viaversion.fabric.mc119.signatures1_19_0;
|
package com.viaversion.fabric.mc119.signatures1_19;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||||
@ -7,17 +7,20 @@ import com.viaversion.viaversion.api.type.Type;
|
|||||||
import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
|
import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
|
||||||
import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets;
|
import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.Protocol1_19_1To1_19;
|
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.Protocol1_19_1To1_19;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
|
||||||
// This class modifies the 1.19.1 -> 1.19.0 transformers so that they simply pass through the original Minecraft key.
|
// This class modifies the 1.19.1 -> 1.19.0 transformers so that they simply pass through the original Minecraft key.
|
||||||
public class ProtocolPatcher1_19_0 {
|
public class ProtocolPatcher1_19 {
|
||||||
|
|
||||||
public static boolean shouldPatchKeys = false;
|
public static boolean shouldPatchKeys = false;
|
||||||
|
|
||||||
public static void patch() {
|
public static void patchIfClient() {
|
||||||
final Protocol1_19_1To1_19 protocol1_19_1To1_19 = Via.getManager().getProtocolManager().getProtocol(Protocol1_19_1To1_19.class);
|
if (FabricLoader.getInstance().getEnvironmentType() != EnvType.CLIENT) return;
|
||||||
|
|
||||||
assert protocol1_19_1To1_19 != null;
|
Protocol1_19_1To1_19 protocol = Via.getManager().getProtocolManager().getProtocol(Protocol1_19_1To1_19.class);
|
||||||
protocol1_19_1To1_19.registerServerbound(State.LOGIN, ServerboundLoginPackets.HELLO.getId(), ServerboundLoginPackets.HELLO.getId(), new PacketRemapper() {
|
if (protocol == null) throw new AssertionError();
|
||||||
|
|
||||||
|
protocol.registerServerbound(State.LOGIN, ServerboundLoginPackets.HELLO.getId(), ServerboundLoginPackets.HELLO.getId(), new PacketRemapper() {
|
||||||
@Override
|
@Override
|
||||||
public void registerMap() {
|
public void registerMap() {
|
||||||
this.map(Type.STRING);
|
this.map(Type.STRING);
|
||||||
@ -26,13 +29,13 @@ public class ProtocolPatcher1_19_0 {
|
|||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
protocol1_19_1To1_19.registerClientbound(State.LOGIN, ClientboundLoginPackets.HELLO.getId(), ClientboundLoginPackets.HELLO.getId(), new PacketRemapper() {
|
protocol.registerClientbound(State.LOGIN, ClientboundLoginPackets.HELLO.getId(), ClientboundLoginPackets.HELLO.getId(), new PacketRemapper() {
|
||||||
@Override
|
@Override
|
||||||
public void registerMap() {
|
public void registerMap() {
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
protocol1_19_1To1_19.registerServerbound(State.LOGIN, ServerboundLoginPackets.ENCRYPTION_KEY.getId(), ServerboundLoginPackets.ENCRYPTION_KEY.getId(), new PacketRemapper() {
|
protocol.registerServerbound(State.LOGIN, ServerboundLoginPackets.ENCRYPTION_KEY.getId(), ServerboundLoginPackets.ENCRYPTION_KEY.getId(), new PacketRemapper() {
|
||||||
@Override
|
@Override
|
||||||
public void registerMap() {
|
public void registerMap() {
|
||||||
}
|
}
|
@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"required": true,
|
"required": true,
|
||||||
"compatibilityLevel": "JAVA_16",
|
"compatibilityLevel": "JAVA_16",
|
||||||
"package": "com.viaversion.fabric.mc119.mixin.signatures1_19_0",
|
"package": "com.viaversion.fabric.mc119.mixin.signatures1_19",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"ArgumentSignatureDataMapMixin",
|
"client.ArgumentSignatureDataMapMixin",
|
||||||
"PlayerPublicKeyChPublicKeyDataMixin",
|
"client.PlayerPublicKeyChPublicKeyDataMixin",
|
||||||
"ClientPlayerEntityMixin",
|
"client.ClientPlayerEntityMixin",
|
||||||
"ProfileKeysMixin"
|
"client.ProfileKeysMixin"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 0
|
"defaultRequire": 0
|
||||||
|
Loading…
Reference in New Issue
Block a user