summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPugdoot <pugmatt@gmail.com>2025-10-28 15:55:13 -0400
committerPugdoot <pugmatt@gmail.com>2025-10-28 15:55:13 -0400
commit942fa7ce462e6049431ff2a05d36cfc746a82c47 (patch)
tree7b75c62c4920cb032c8c44151732956026d903cf
parentc6fb1f2add94602bee90f9f1a2706f8daf40d98e (diff)
downloadBedrockConnect-942fa7ce462e6049431ff2a05d36cfc746a82c47.tar.gz
BedrockConnect-942fa7ce462e6049431ff2a05d36cfc746a82c47.tar.bz2
BedrockConnect-942fa7ce462e6049431ff2a05d36cfc746a82c47.zip
(Release) 1.21.120 Support1.61
-rw-r--r--.github/assets/supportedVersion2
-rw-r--r--serverlist-server/pom.xml2
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java2
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/BedrockProtocol.java5
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/PacketHandler.java42
5 files changed, 24 insertions, 29 deletions
diff --git a/.github/assets/supportedVersion b/.github/assets/supportedVersion
index 4abda8b..bb7d1aa 100644
--- a/.github/assets/supportedVersion
+++ b/.github/assets/supportedVersion
@@ -1 +1 @@
-1.21.114.1
+1.21.120.4
diff --git a/serverlist-server/pom.xml b/serverlist-server/pom.xml
index 925d4e4..a8cdbd6 100644
--- a/serverlist-server/pom.xml
+++ b/serverlist-server/pom.xml
@@ -86,7 +86,7 @@
<dependency>
<groupId>org.cloudburstmc.protocol</groupId>
<artifactId>bedrock-connection</artifactId>
- <version>3.0.0.Beta8-20250929.213851-8</version>
+ <version>3.0.0.Beta10-20251014.180344-2</version>
<scope>compile</scope>
</dependency>
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
index 1920948..b568b4e 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
@@ -19,7 +19,7 @@ import java.sql.SQLException;
import java.util.*;
public class BedrockConnect {
- private static String release = "1.60";
+ private static String release = "1.61";
private static Config config;
private static Database database;
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/BedrockProtocol.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/BedrockProtocol.java
index df0f4e1..ea59752 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/BedrockProtocol.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/BedrockProtocol.java
@@ -17,7 +17,7 @@ import org.cloudburstmc.protocol.bedrock.codec.v818.Bedrock_v818;
import org.cloudburstmc.protocol.bedrock.codec.v819.Bedrock_v819;
import org.cloudburstmc.protocol.bedrock.codec.v827.Bedrock_v827;
import org.cloudburstmc.protocol.bedrock.codec.v844.Bedrock_v844;
-
+import org.cloudburstmc.protocol.bedrock.codec.v859.Bedrock_v859;
import java.util.ArrayList;
import java.util.List;
@@ -29,7 +29,7 @@ public class BedrockProtocol {
/**
* Latest available version
*/
- public static final BedrockCodec DEFAULT_BEDROCK_CODEC = Bedrock_v844.CODEC;
+ public static final BedrockCodec DEFAULT_BEDROCK_CODEC = Bedrock_v859.CODEC;
/**
@@ -63,6 +63,7 @@ public class BedrockProtocol {
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v818.CODEC);
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v819.CODEC);
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v827.CODEC);
+ SUPPORTED_BEDROCK_CODECS.add(Bedrock_v844.CODEC);
SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
}
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/PacketHandler.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/PacketHandler.java
index 23f4cf3..939cea5 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/PacketHandler.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/server/PacketHandler.java
@@ -20,6 +20,8 @@ import org.cloudburstmc.protocol.bedrock.data.AttributeData;
import org.cloudburstmc.protocol.bedrock.data.PacketCompressionAlgorithm;
import org.cloudburstmc.protocol.bedrock.packet.*;
import org.cloudburstmc.protocol.bedrock.util.ChainValidationResult;
+import org.cloudburstmc.protocol.bedrock.util.ChainValidationResult.IdentityClaims;
+import org.cloudburstmc.protocol.bedrock.util.ChainValidationResult.IdentityData;
import org.cloudburstmc.protocol.bedrock.util.EncryptionUtils;
import org.cloudburstmc.protocol.bedrock.util.JsonUtils;
import org.cloudburstmc.protocol.common.PacketSignal;
@@ -40,7 +42,7 @@ public class PacketHandler implements BedrockPacketHandler {
private String name;
private String uuid;
- private JSONObject extraData;
+ private IdentityData extraData;
private BCPlayer player;
@@ -483,15 +485,7 @@ public class PacketHandler implements BedrockPacketHandler {
BedrockConnect.getServer().removePlayer(player);
BedrockConnect.logger.info("[ " + LogColors.cyan(BedrockConnect.getServer().getPlayers().size() + " online") + " ] Player disconnected: " + name + " (xuid: " + uuid + ")");
}
-
- private boolean verifyJwt(String jwt, PublicKey key) throws JoseException {
- JsonWebSignature jws = new JsonWebSignature();
- jws.setKey(key);
- jws.setCompactSerialization(jwt);
-
- return jws.verifySignature();
- }
-
+
@Override
public PacketSignal handle(ResourcePackClientResponsePacket packet) {
switch (packet.getStatus()) {
@@ -517,27 +511,27 @@ public class PacketHandler implements BedrockPacketHandler {
@Override
public PacketSignal handle(LoginPacket packet) {
try {
- ChainValidationResult chain = EncryptionUtils.validatePayload(packet.getAuthPayload());
- JsonNode payload = Server.JSON_MAPPER.valueToTree(chain.rawIdentityClaims());
-
- if (payload.get("extraData").getNodeType() != JsonNodeType.OBJECT) {
- throw new RuntimeException("AuthData was not found!");
+ ChainValidationResult result = EncryptionUtils.validatePayload(packet.getAuthPayload());
+ if (!result.signed()) {
+ throw new RuntimeException("Chain not signed");
}
+ PublicKey identityPublicKey = result.identityClaims().parsedIdentityPublicKey();
- extraData = new JSONObject(JsonUtils.childAsType(chain.rawIdentityClaims(), "extraData", Map.class));
+ byte[] clientDataPayload = EncryptionUtils.verifyClientData(packet.getClientJwt(), identityPublicKey);
+ if (clientDataPayload == null) {
+ throw new IllegalStateException("Client data isn't signed by the given chain data");
+ }
- if (payload.get("identityPublicKey").getNodeType() != JsonNodeType.STRING) {
- throw new RuntimeException("Identity Public Key was not found!");
+ if (result.identityClaims().extraData == null) {
+ throw new RuntimeException("AuthData was not found!");
}
- ECPublicKey identityPublicKey = EncryptionUtils.parseKey(payload.get("identityPublicKey").textValue());
- String clientJwt = packet.getClientJwt();
- verifyJwt(clientJwt, identityPublicKey);
+ extraData = result.identityClaims().extraData;
- BedrockConnect.logger.debug("Player made it through login: " + extraData.get("displayName") + " (xuid: " + extraData.get("identity") + ")");
+ BedrockConnect.logger.debug("Player made it through login: " + extraData.displayName + " (xuid: " + extraData.identity + ")");
- name = (String) extraData.get("displayName");
- uuid = (String) extraData.get("identity");
+ name = extraData.displayName;
+ uuid = extraData.identity.toString();
// Whitelist check
Whitelist whitelist = BedrockConnect.getConfig().getWhitelist();