services/crypto/tests/unit/test_crypto_deriveKey.js

Wed, 31 Dec 2014 07:53:36 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:53:36 +0100
branch
TOR_BUG_3246
changeset 5
4ab42b5ab56c
permissions
-rw-r--r--

Correct small whitespace inconsistency, lost while renaming variables.

     1 var btoa;
     3 function test_derive(cryptoSvc) {
     4   // Extracted from test_utils_deriveKey.
     5   let pp = "secret phrase";
     6   let salt = "RE5YUHpQcGl3bg==";   // btoa("DNXPzPpiwn")
     8   // 16-byte, extract key data.
     9   let k = cryptoSvc.deriveKeyFromPassphrase(pp, salt, 16);
    10   do_check_eq(16, k.length);
    11   do_check_eq(btoa(k), "d2zG0d2cBfXnRwMUGyMwyg==");
    13   // Test different key lengths.
    14   k = cryptoSvc.deriveKeyFromPassphrase(pp, salt, 32);
    15   do_check_eq(32, k.length);
    16   let encKey = btoa(k);
    18   // Test via encryption.
    19   let iv = cryptoSvc.generateRandomIV();
    20   do_check_eq(cryptoSvc.decrypt(cryptoSvc.encrypt("bacon", encKey, iv), encKey, iv), "bacon");
    22   // Test default length (32).
    23   k = cryptoSvc.deriveKeyFromPassphrase(pp, salt, null);
    24   do_check_eq(32, k.length);
    25   do_check_eq(encKey, btoa(k));
    26 }
    28 function run_test() {
    29   let cryptoSvc;
    30   try {
    31     let backstagePass = Components.utils.import("resource://services-crypto/WeaveCrypto.js");
    32     btoa = backstagePass.btoa;
    33   } catch (ex) {
    34     _("Aborting test: no WeaveCrypto.js.");
    35     return;
    36   }
    37   test_derive(new WeaveCrypto());
    38 }

mercurial