services/crypto/tests/unit/test_crypto_deriveKey.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/services/crypto/tests/unit/test_crypto_deriveKey.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,38 @@
     1.4 +var btoa;
     1.5 +
     1.6 +function test_derive(cryptoSvc) {
     1.7 +  // Extracted from test_utils_deriveKey.
     1.8 +  let pp = "secret phrase";
     1.9 +  let salt = "RE5YUHpQcGl3bg==";   // btoa("DNXPzPpiwn")
    1.10 +  
    1.11 +  // 16-byte, extract key data.
    1.12 +  let k = cryptoSvc.deriveKeyFromPassphrase(pp, salt, 16);
    1.13 +  do_check_eq(16, k.length);
    1.14 +  do_check_eq(btoa(k), "d2zG0d2cBfXnRwMUGyMwyg==");
    1.15 +  
    1.16 +  // Test different key lengths.
    1.17 +  k = cryptoSvc.deriveKeyFromPassphrase(pp, salt, 32);
    1.18 +  do_check_eq(32, k.length);
    1.19 +  let encKey = btoa(k);
    1.20 +  
    1.21 +  // Test via encryption.
    1.22 +  let iv = cryptoSvc.generateRandomIV();
    1.23 +  do_check_eq(cryptoSvc.decrypt(cryptoSvc.encrypt("bacon", encKey, iv), encKey, iv), "bacon");
    1.24 +  
    1.25 +  // Test default length (32).
    1.26 +  k = cryptoSvc.deriveKeyFromPassphrase(pp, salt, null);
    1.27 +  do_check_eq(32, k.length);
    1.28 +  do_check_eq(encKey, btoa(k));
    1.29 +}
    1.30 +
    1.31 +function run_test() {
    1.32 +  let cryptoSvc;
    1.33 +  try {
    1.34 +    let backstagePass = Components.utils.import("resource://services-crypto/WeaveCrypto.js");
    1.35 +    btoa = backstagePass.btoa;
    1.36 +  } catch (ex) {
    1.37 +    _("Aborting test: no WeaveCrypto.js.");
    1.38 +    return;
    1.39 +  }
    1.40 +  test_derive(new WeaveCrypto());
    1.41 +}

mercurial