fix: harden device pairing token generation and verification (#16535)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: bcbb50e368
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
Gustavo Madeira Santana
2026-02-14 16:23:33 -05:00
committed by GitHub
parent b97191b81a
commit 48b3d7096c
6 changed files with 134 additions and 29 deletions

View File

@@ -6,6 +6,7 @@ import {
resolvePairingPaths,
writeJsonAtomic,
} from "./pairing-files.js";
import { generatePairingToken, verifyPairingToken } from "./pairing-token.js";
export type NodePairingPendingRequest = {
requestId: string;
@@ -87,7 +88,7 @@ function normalizeNodeId(nodeId: string) {
}
function newToken() {
return randomUUID().replaceAll("-", "");
return generatePairingToken();
}
export async function listNodePairing(baseDir?: string): Promise<NodePairingList> {
@@ -217,7 +218,7 @@ export async function verifyNodeToken(
if (!node) {
return { ok: false };
}
return node.token === token ? { ok: true, node } : { ok: false };
return verifyPairingToken(token, node.token) ? { ok: true, node } : { ok: false };
}
export async function updatePairedNodeMetadata(