[tbb-commits] [tor-browser] branch tor-browser-102.3.0esr-12.0-2 updated: fixup! Bug 30237: Add v3 onion services client authentication prompt
gitolite role
git at cupani.torproject.org
Wed Oct 12 21:23:36 UTC 2022
This is an automated email from the git hooks/post-receive script.
richard pushed a commit to branch tor-browser-102.3.0esr-12.0-2
in repository tor-browser.
The following commit(s) were added to refs/heads/tor-browser-102.3.0esr-12.0-2 by this push:
new caa5988884a3 fixup! Bug 30237: Add v3 onion services client authentication prompt
caa5988884a3 is described below
commit caa5988884a3dc6e60047ad246abd56d84fa11ad
Author: hackademix <giorgio at maone.net>
AuthorDate: Wed Oct 12 19:17:53 2022 +0200
fixup! Bug 30237: Add v3 onion services client authentication prompt
---
.../components/onionservices/content/authPrompt.js | 18 +++++++++++-------
browser/components/onionservices/content/authUtil.jsm | 19 -------------------
browser/components/sessionstore/SessionStore.jsm | 5 -----
browser/themes/shared/aboutNetError.css | 7 +++++++
docshell/base/nsDocShell.cpp | 6 ++++--
5 files changed, 22 insertions(+), 33 deletions(-)
diff --git a/browser/components/onionservices/content/authPrompt.js b/browser/components/onionservices/content/authPrompt.js
index 14fb334a6206..ba40e9fd464c 100644
--- a/browser/components/onionservices/content/authPrompt.js
+++ b/browser/components/onionservices/content/authPrompt.js
@@ -225,13 +225,17 @@ const OnionAuthPrompt = (function() {
_onCancel() {
// Arrange for an error page to be displayed.
- this._browser.messageManager.sendAsyncMessage(
- OnionAuthUtil.message.authPromptCanceled,
- {
- failedURI: this._failedURI.spec,
- reasonForPrompt: this._reasonForPrompt,
- }
- );
+ const failedURI = this._failedURI.spec;
+ const errorCode =
+ this._reasonForPrompt === OnionAuthUtil.topic.clientAuthMissing
+ ? Cr.NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH
+ : Cr.NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH;
+
+ const io = `ChromeUtils.import("resource://gre/modules/Services.jsm").Services.io`;
+ this._browser.messageManager.loadFrameScript(`data:,${encodeURIComponent(
+ `docShell.displayLoadError(${errorCode}, ${io}.newURI(${JSON.stringify(failedURI)}), undefined, undefined);`
+ )}`,
+ false);
},
_getKeyElement() {
diff --git a/browser/components/onionservices/content/authUtil.jsm b/browser/components/onionservices/content/authUtil.jsm
index 82a835359b3e..7157acf2e11d 100644
--- a/browser/components/onionservices/content/authUtil.jsm
+++ b/browser/components/onionservices/content/authUtil.jsm
@@ -24,23 +24,4 @@ const OnionAuthUtil = {
warningElement: "tor-clientauth-warning",
checkboxElement: "tor-clientauth-persistkey-checkbox",
},
-
- addCancelMessageListener(aMessageManager, aDocShell) {
- aMessageManager.addMessageListener(this.message.authPromptCanceled, {
- receiveMessage(aMessage) {
- // Upon cancellation of the client authentication prompt, display
- // the appropriate error page. When calling the docShell
- // displayLoadError() function, we pass undefined for the failed
- // channel so that displayLoadError() can determine that it should
- // not display the client authentication prompt a second time.
- const failedURI = Services.io.newURI(aMessage.data.failedURI);
- const reasonForPrompt = aMessage.data.reasonForPrompt;
- const errorCode =
- reasonForPrompt === this.topic.clientAuthMissing
- ? Cr.NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH
- : Cr.NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH;
- aDocShell.displayLoadError(errorCode, failedURI, undefined, undefined);
- },
- });
- },
};
diff --git a/browser/components/sessionstore/SessionStore.jsm b/browser/components/sessionstore/SessionStore.jsm
index 58c5a4fed6ca..4611737ca918 100644
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -234,10 +234,6 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/sessionstore/SessionHistory.jsm"
);
-const { OnionAuthUtil } = ChromeUtils.import(
- "chrome://browser/content/onionservices/authUtil.jsm"
-);
-
XPCOMUtils.defineLazyServiceGetters(this, {
gScreenManager: ["@mozilla.org/gfx/screenmanager;1", "nsIScreenManager"],
});
@@ -1514,7 +1510,6 @@ var SessionStoreInternal = {
let listenWhenClosed = CLOSED_MESSAGES.has(msg);
mm.addMessageListener(msg, this, listenWhenClosed);
});
- OnionAuthUtil.addCancelMessageListener(mm, aWindow.docShell);
// Load the frame script after registering listeners.
if (!Services.appinfo.sessionHistoryInParent) {
diff --git a/browser/themes/shared/aboutNetError.css b/browser/themes/shared/aboutNetError.css
index 73f9d2760a15..438cc5782291 100644
--- a/browser/themes/shared/aboutNetError.css
+++ b/browser/themes/shared/aboutNetError.css
@@ -8,6 +8,13 @@ body {
--warning-color: #ffa436;
}
+body.onionAuthPrompt {
+ background: white;
+}
+.onionAuthPrompt > * {
+ display: none;
+}
+
@media (prefers-color-scheme: dark) {
body {
--warning-color: #ffbd4f;
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 95c68c34fd7f..22577e45643a 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -3902,8 +3902,10 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
// if the user cancels the Tor client auth prompt, but in that case we
// will not have a failed channel and therefore we will not prompt again.
if (isOnionAuthError && aFailedChannel) {
- // Display about:blank while the Tor client auth prompt is open.
- errorPage.AssignLiteral("blank");
+ // Display about:neterror with a style emulating about:blank while the
+ // Tor client auth prompt is open. Do not use about:blank directly: it
+ // will mess with the failed channel information persistence!
+ cssClass.AssignLiteral("onionAuthPrompt");
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tbb-commits
mailing list