summaryrefslogtreecommitdiffstats
path: root/comm/mail/extensions/openpgp/test/unit/rnp/test_badKeys.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/extensions/openpgp/test/unit/rnp/test_badKeys.js')
-rw-r--r--comm/mail/extensions/openpgp/test/unit/rnp/test_badKeys.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/comm/mail/extensions/openpgp/test/unit/rnp/test_badKeys.js b/comm/mail/extensions/openpgp/test/unit/rnp/test_badKeys.js
new file mode 100644
index 0000000000..3ca7709dc6
--- /dev/null
+++ b/comm/mail/extensions/openpgp/test/unit/rnp/test_badKeys.js
@@ -0,0 +1,69 @@
+/* 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/. */
+
+/**
+ * Tests for bad OpenPGP keys.
+ */
+
+"use strict";
+
+const { RNP } = ChromeUtils.import("chrome://openpgp/content/modules/RNP.jsm");
+const { EnigmailConstants } = ChromeUtils.import(
+ "chrome://openpgp/content/modules/constants.jsm"
+);
+const { EnigmailKeyRing } = ChromeUtils.import(
+ "chrome://openpgp/content/modules/keyRing.jsm"
+);
+const { EnigmailEncryption } = ChromeUtils.import(
+ "chrome://openpgp/content/modules/encryption.jsm"
+);
+const { OpenPGPAlias } = ChromeUtils.import(
+ "chrome://openpgp/content/modules/OpenPGPAlias.jsm"
+);
+const { OpenPGPTestUtils } = ChromeUtils.import(
+ "resource://testing-common/mozmill/OpenPGPTestUtils.jsm"
+);
+
+const KEY_DIR = "../../../../../test/browser/openpgp/data/keys";
+
+add_setup(async function () {
+ do_get_profile();
+
+ await OpenPGPTestUtils.initOpenPGP();
+});
+
+// Attempt to import a key with a single user ID, which is invalid,
+// because it doesn't have a valid signature.
+// Our code should reject the attempt to import the key.
+add_task(async function testFailToImport() {
+ let ids = await OpenPGPTestUtils.importKey(
+ null,
+ do_get_file(`${KEY_DIR}/invalid-pubkey-nosigs.pgp`),
+ true
+ );
+ Assert.ok(!ids.length, "importKey should return empty list of imported keys");
+});
+
+// Import a key with two encryption subkeys. One is good, the other one
+// has an invalid signature. When attempting to encrypt, our code should
+// skip the bad subkey, and should use the expected good subkey.
+add_task(async function testAvoidBadSubkey() {
+ let ids = await OpenPGPTestUtils.importKey(
+ null,
+ do_get_file(`${KEY_DIR}/encryption-subkey-bad.pgp`),
+ true
+ );
+ await OpenPGPTestUtils.updateKeyIdAcceptance(
+ ids,
+ OpenPGPTestUtils.ACCEPTANCE_VERIFIED
+ );
+
+ let primaryKey = await RNP.findKeyByEmail(
+ "<encryption-subkey@example.org>",
+ true
+ );
+ let encSubKey = RNP.getSuitableSubkey(primaryKey, "encrypt");
+ let keyId = RNP.getKeyIDFromHandle(encSubKey);
+ Assert.ok(keyId == "BC63472A109D5859", "should obtain key ID of good subkey");
+});