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 +}