From f3265a73ed8802da0bf7e46ba5a5d6e3f57d4235 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Mon, 20 Dec 2010 14:46:16 -0800 Subject: [PATCH] Bug 619567: allow leading and trailing whitespace in pre-normalized passphrases. r=philiKON --- services/sync/modules/util.js | 3 ++- services/sync/tests/unit/test_utils_passphrase.js | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/services/sync/modules/util.js b/services/sync/modules/util.js index 20e8a0443744..daf16927e168 100644 --- a/services/sync/modules/util.js +++ b/services/sync/modules/util.js @@ -1309,7 +1309,8 @@ let Utils = { normalizePassphrase: function normalizePassphrase(pp) { // Short var name... have you seen the lines below?! - pp = pp.toLowerCase(); + // Allow leading and trailing whitespace. + pp = pp.toLowerCase().replace(/^\s+/, "").replace(/\s+$/, ""); // 20-char sync key. if (pp.length == 23 && diff --git a/services/sync/tests/unit/test_utils_passphrase.js b/services/sync/tests/unit/test_utils_passphrase.js index 36999a00a987..a914b90bfa42 100644 --- a/services/sync/tests/unit/test_utils_passphrase.js +++ b/services/sync/tests/unit/test_utils_passphrase.js @@ -47,12 +47,25 @@ function run_test() { _("Normalize passphrase recognizes hyphens."); do_check_eq(Utils.normalizePassphrase(hyphenated), pp); - + + _("Skip whitespace."); + do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa ")); + do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa")); + do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa ")); + do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); + do_check_true(Utils.isPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa ")); + do_check_true(Utils.isPassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa")); + do_check_true(Utils.isPassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa ")); + do_check_true(Utils.isPassphrase(" a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); + do_check_false(Utils.isPassphrase(" -aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); + _("Normalizing 20-char passphrases."); do_check_eq(Utils.normalizePassphrase("abcde-abcde-abcde-abcde"), "abcdeabcdeabcdeabcde"); do_check_eq(Utils.normalizePassphrase("a-bcde-abcde-abcde-abcde"), "a-bcde-abcde-abcde-abcde"); + do_check_eq(Utils.normalizePassphrase(" abcde-abcde-abcde-abcde "), + "abcdeabcdeabcdeabcde"); _("Passphrase strength calculated according to the NIST algorithm."); do_check_eq(Utils.passphraseStrength(""), 0);