Start work on Server implementation

This commit is contained in:
Tamás Papp 2025-06-18 22:45:11 +02:00
commit ac91f6e853
2 changed files with 9 additions and 2 deletions

View file

@ -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`)

View file

@ -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')