summaryrefslogtreecommitdiffstats
path: root/comm/chat/content/otr-add-fingerprint.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/chat/content/otr-add-fingerprint.js')
-rw-r--r--comm/chat/content/otr-add-fingerprint.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/comm/chat/content/otr-add-fingerprint.js b/comm/chat/content/otr-add-fingerprint.js
new file mode 100644
index 0000000000..fb6d6c037d
--- /dev/null
+++ b/comm/chat/content/otr-add-fingerprint.js
@@ -0,0 +1,84 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var { l10nHelper } = ChromeUtils.importESModule(
+ "resource:///modules/imXPCOMUtils.sys.mjs"
+);
+var { OTR } = ChromeUtils.importESModule("resource:///modules/OTR.sys.mjs");
+
+window.addEventListener("DOMContentLoaded", () => {
+ otrAddFinger.onload();
+});
+
+var otrAddFinger = {
+ onload() {
+ let args = window.arguments[0].wrappedJSObject;
+
+ this.fingerWarning = document.getElementById("fingerWarning");
+ this.fingerError = document.getElementById("fingerError");
+ this.keyCount = document.getElementById("keyCount");
+
+ document.l10n.setAttributes(
+ document.getElementById("otrDescription"),
+ "otr-add-finger-description",
+ {
+ name: args.screenname,
+ }
+ );
+
+ document.addEventListener("dialogaccept", event => {
+ let hex = document.getElementById("fingerprint").value;
+ let context = OTR.getContextFromRecipient(
+ args.account,
+ args.protocol,
+ args.screenname
+ );
+ let finger = OTR.addFingerprint(context, hex);
+ if (finger.isNull()) {
+ event.preventDefault();
+ return;
+ }
+ try {
+ // Ignore the return, this is just a test.
+ OTR.getUIConvFromContext(context);
+ } catch (error) {
+ // We expect that a conversation may not have been started.
+ context = null;
+ }
+ OTR.setTrust(finger, true, context);
+ });
+ },
+
+ addBlankSpace(value) {
+ return value
+ .replace(/\s/g, "")
+ .trim()
+ .replace(/(.{8})/g, "$1 ")
+ .trim();
+ },
+
+ oninput(input) {
+ let hex = input.value.replace(/\s/g, "");
+
+ if (/[^0-9A-F]/gi.test(hex)) {
+ this.keyCount.hidden = true;
+ this.fingerWarning.hidden = false;
+ this.fingerError.hidden = false;
+ } else {
+ this.keyCount.hidden = false;
+ this.fingerWarning.hidden = true;
+ this.fingerError.hidden = true;
+ }
+
+ document.querySelector("dialog").getButton("accept").disabled =
+ input.value && !input.validity.valid;
+
+ this.keyCount.value = `${hex.length}/40`;
+ input.value = this.addBlankSpace(input.value);
+ },
+
+ onblur(input) {
+ input.value = this.addBlankSpace(input.value);
+ },
+};