From c4fb5014d6a46fece11bca98d4458c6a018c344b Mon Sep 17 00:00:00 2001 From: Alejo Thomas Ortega Date: Fri, 4 Oct 2024 17:20:36 -0300 Subject: [PATCH] fix: initial hand-shake from archipelago --- .../packages/shared/comms/adapters/WebSocketAdapter.ts | 4 ++++ .../shared/realm/connections/ArchipelagoConnection.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/browser-interface/packages/shared/comms/adapters/WebSocketAdapter.ts b/browser-interface/packages/shared/comms/adapters/WebSocketAdapter.ts index 68c8cada01..33fe5410b3 100644 --- a/browser-interface/packages/shared/comms/adapters/WebSocketAdapter.ts +++ b/browser-interface/packages/shared/comms/adapters/WebSocketAdapter.ts @@ -87,6 +87,10 @@ export class WebSocketAdapter implements MinimumCommunicationsAdapter { return this.handleWelcomeMessage(message.welcomeMessage, ws) } case 'challengeMessage': { + if (!message.challengeMessage.challengeToSign.match(/^dcl-[^:]*$/)) { + throw new Error('Protocol error: invalid challenge') + } + const authChainJson = JSON.stringify( Authenticator.signPayload(this.identity, message.challengeMessage.challengeToSign) ) diff --git a/browser-interface/packages/shared/realm/connections/ArchipelagoConnection.ts b/browser-interface/packages/shared/realm/connections/ArchipelagoConnection.ts index ad6ca443af..1adb5b0de5 100644 --- a/browser-interface/packages/shared/realm/connections/ArchipelagoConnection.ts +++ b/browser-interface/packages/shared/realm/connections/ArchipelagoConnection.ts @@ -74,6 +74,10 @@ export async function createArchipelagoConnection( switch (message.$case) { case 'challengeResponse': { + if (!message.challengeResponse.challengeToSign.match(/^dcl-[^:]*$/)) { + throw new Error('Protocol error: invalid challenge') + } + const authChainJson = JSON.stringify( Authenticator.signPayload(identity, message.challengeResponse.challengeToSign) )