From b00087b6dc14dbf09e3dfc2586ff53fd0d3e50e2 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Tue, 14 Mar 2023 20:25:58 +0100 Subject: [PATCH] network: reset signature when reinitializing --- .../minosoft/data/chat/signature/signer/MessageSigner.kt | 3 +++ .../minosoft/data/chat/signature/signer/MessageSigner3.kt | 4 ++++ .../minosoft/protocol/packets/s2c/play/InitializeS2CP.kt | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner.kt b/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner.kt index 5fb336499..adf94ef84 100644 --- a/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner.kt +++ b/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner.kt @@ -13,6 +13,7 @@ package de.bixilon.minosoft.data.chat.signature.signer +import de.bixilon.kutil.exception.Broken import de.bixilon.minosoft.data.chat.signature.LastSeenMessageList import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -24,6 +25,8 @@ import java.util.* interface MessageSigner { + fun reset(): Unit = Broken("Not yet implemented") + fun signMessage(privateKey: PrivateKey, message: String, preview: ChatComponent?, salt: Long, sender: UUID, time: Instant, lastSeen: LastSeenMessageList): ByteArray diff --git a/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner3.kt b/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner3.kt index 60cb0ea47..0da6b8e19 100644 --- a/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner3.kt +++ b/src/main/java/de/bixilon/minosoft/data/chat/signature/signer/MessageSigner3.kt @@ -32,6 +32,10 @@ class MessageSigner3( ) : MessageSigner { private var index = AtomicInteger() + override fun reset() { + index.set(0) + } + override fun signMessage(privateKey: PrivateKey, message: String, preview: ChatComponent?, salt: Long, sender: UUID, time: Instant, lastSeen: LastSeenMessageList): ByteArray { return signMessage(privateKey, message, salt, sender, time, lastSeen) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt index e6f776eb9..3a786b215 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt @@ -168,7 +168,10 @@ class InitializeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.settingsManager.sendClientSettings() connection.sendBrand() - connection.player.keyManagement.sendSession() + if (connection.version >= ProtocolVersions.V_1_19_4) { // TODO: find out version + connection.util.signer.reset() + } + connection.player.keyManagement.sendSession() connection.state = PlayConnectionStates.SPAWNING }