From 30a007f78c39ed02570c323d098e8a0d31ddab5d Mon Sep 17 00:00:00 2001 From: Ben Delevingne Date: Wed, 28 Oct 2020 15:41:22 +0000 Subject: [PATCH] Bug 1673873 - [devtools] Remove defer usage in devtools/shared/security/auth.js. r=Honza Differential Revision: https://phabricator.services.mozilla.com/D94995 --- devtools/shared/security/auth.js | 123 +++++++++++++++---------------- 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/devtools/shared/security/auth.js b/devtools/shared/security/auth.js index d81be838c204..375cf6101f92 100644 --- a/devtools/shared/security/auth.js +++ b/devtools/shared/security/auth.js @@ -6,7 +6,6 @@ var { Ci, Cc } = require("chrome"); var Services = require("Services"); -var defer = require("devtools/shared/defer"); var DevToolsUtils = require("devtools/shared/DevToolsUtils"); var { dumpn, dumpv } = DevToolsUtils; loader.lazyRequireGetter(this, "prompt", "devtools/shared/security/prompt"); @@ -319,69 +318,69 @@ OOBCert.Client.prototype = { */ // eslint-disable-next-line no-shadow authenticate({ host, port, cert, transport }) { - const deferred = defer(); - let oobData; + return new Promise((resolve, reject) => { + let oobData; - let activeSendDialog; - const closeDialog = () => { - // Close any prompts the client may have been showing from previous - // authentication steps - if (activeSendDialog?.close) { - activeSendDialog.close(); - activeSendDialog = null; - } - }; - - transport.hooks = { - onPacket: async packet => { - closeDialog(); - const { authResult } = packet; - switch (authResult) { - case AuthenticationResult.PENDING: - // Step B.8 - // Client creates hash(ClientCert) + K(random 128-bit number) - oobData = await this._createOOB(); - activeSendDialog = this.sendOOB({ - host, - port, - cert, - authResult, - oob: oobData, - }); - break; - case AuthenticationResult.ALLOW: - // Step B.12 - // Client verifies received value matches K - if (packet.k != oobData.k) { - transport.close(new Error("Auth secret mismatch")); - return; - } - // Step B.13 - // Debugging begins - transport.hooks = null; - deferred.resolve(transport); - break; - case AuthenticationResult.ALLOW_PERSIST: - // Server previously persisted Client as allowed - // Step C.5 - // Debugging begins - transport.hooks = null; - deferred.resolve(transport); - break; - default: - transport.close(new Error("Invalid auth result: " + authResult)); - break; + let activeSendDialog; + const closeDialog = () => { + // Close any prompts the client may have been showing from previous + // authentication steps + if (activeSendDialog?.close) { + activeSendDialog.close(); + activeSendDialog = null; } - }, - onClosed(reason) { - closeDialog(); - // Transport died before auth completed - transport.hooks = null; - deferred.reject(reason); - }, - }; - transport.ready(); - return deferred.promise; + }; + + transport.hooks = { + onPacket: async packet => { + closeDialog(); + const { authResult } = packet; + switch (authResult) { + case AuthenticationResult.PENDING: + // Step B.8 + // Client creates hash(ClientCert) + K(random 128-bit number) + oobData = await this._createOOB(); + activeSendDialog = this.sendOOB({ + host, + port, + cert, + authResult, + oob: oobData, + }); + break; + case AuthenticationResult.ALLOW: + // Step B.12 + // Client verifies received value matches K + if (packet.k != oobData.k) { + transport.close(new Error("Auth secret mismatch")); + return; + } + // Step B.13 + // Debugging begins + transport.hooks = null; + resolve(transport); + break; + case AuthenticationResult.ALLOW_PERSIST: + // Server previously persisted Client as allowed + // Step C.5 + // Debugging begins + transport.hooks = null; + resolve(transport); + break; + default: + transport.close(new Error("Invalid auth result: " + authResult)); + break; + } + }, + onClosed(reason) { + closeDialog(); + // Transport died before auth completed + transport.hooks = null; + reject(reason); + }, + }; + transport.ready(); + }); }, /**