From ac91f6e8534c1760dff0fa63e55da4c9bbebb1aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Papp?= Date: Wed, 18 Jun 2025 22:45:11 +0200 Subject: [PATCH] Start work on Server implementation --- src/server.js | 3 ++- src/serverPlayer.js | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/server.js b/src/server.js index 0f51bae..245f522 100644 --- a/src/server.js +++ b/src/server.js @@ -33,7 +33,8 @@ class Server extends EventEmitter { try { const mcData = require('minecraft-data')('bedrock_' + version) this.features = { - compressorInHeader: mcData.supportFeature('compressorInPacketHeader') + compressorInHeader: mcData.supportFeature('compressorInPacketHeader'), + legacyCertificateChain: mcData.supportFeature('legacyCertificateChain') } } catch (e) { throw new Error(`Unsupported version: '${version}', no data available`) diff --git a/src/serverPlayer.js b/src/serverPlayer.js index b7ef02d..8c43e5d 100644 --- a/src/serverPlayer.js +++ b/src/serverPlayer.js @@ -82,7 +82,13 @@ class Player extends Connection { const skinChain = tokens.client try { - var { key, userData, skinData } = this.decodeLoginJWT(authChain.chain, skinChain) // eslint-disable-line + if (this.features.legacyCertificateChain) { + var { key, userData, skinData } = this.decodeLoginJWT(authChain.chain, skinChain) // eslint-disable-line + } else { + // TODO: Migrate this from the legacy "Certificate" auth to the new auth system (Validate the token in the "Token" field) + const { chain } = JSON.parse(authChain.Certificate) + var { key, userData, skinData } = this.decodeLoginJWT(chain, skinChain) // eslint-disable-line + } } catch (e) { debug(this.address, e) this.disconnect('Server authentication error')