diff options
| author | Pugdoot <pugmatt@gmail.com> | 2025-10-28 15:55:13 -0400 |
|---|---|---|
| committer | Pugdoot <pugmatt@gmail.com> | 2025-10-28 15:55:13 -0400 |
| commit | 942fa7ce462e6049431ff2a05d36cfc746a82c47 (patch) | |
| tree | 7b75c62c4920cb032c8c44151732956026d903cf | |
| parent | c6fb1f2add94602bee90f9f1a2706f8daf40d98e (diff) | |
| download | BedrockConnect-942fa7ce462e6049431ff2a05d36cfc746a82c47.tar.gz BedrockConnect-942fa7ce462e6049431ff2a05d36cfc746a82c47.tar.bz2 BedrockConnect-942fa7ce462e6049431ff2a05d36cfc746a82c47.zip | |
(Release) 1.21.120 Support1.61
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(); |
