From c89569fabd05e4586cb31b562a230a6ec8ce48c2 Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Tue, 14 May 2013 14:05:14 +0200 Subject: [PATCH] refactored crypto api to use forge cbc mode instead of sjcl --- src/js/crypto/aes-batch-worker.js | 11 +++-------- src/js/crypto/aes-worker.js | 11 +++-------- src/js/crypto/crypto.js | 2 +- test/unit/crypto-test.js | 8 ++++---- test/unit/email-dao-test.js | 2 +- 5 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/js/crypto/aes-batch-worker.js b/src/js/crypto/aes-batch-worker.js index c9132f4..d16bea0 100644 --- a/src/js/crypto/aes-batch-worker.js +++ b/src/js/crypto/aes-batch-worker.js @@ -2,14 +2,9 @@ 'use strict'; // import web worker dependencies - importScripts('../../lib/sjcl/sjcl.js'); - importScripts('../../lib/sjcl/bitArray.js'); - importScripts('../../lib/sjcl/codecBase64.js'); - importScripts('../../lib/sjcl/codecString.js'); - importScripts('../../lib/sjcl/aes.js'); - importScripts('../../lib/sjcl/ccm.js'); + importScripts('../../lib/forge/forge.rsa.bundle.js'); importScripts('../app-config.js'); - importScripts('./aes-ccm.js'); + importScripts('./aes-cbc.js'); importScripts('./util.js'); /** @@ -20,7 +15,7 @@ var args = e.data, output = null, - aes = new app.crypto.AesCCM(sjcl), + aes = new app.crypto.AesCBC(forge), util = new app.crypto.Util(null, null); if (args.type === 'encrypt' && args.list) { diff --git a/src/js/crypto/aes-worker.js b/src/js/crypto/aes-worker.js index de4a92e..a3b0f77 100644 --- a/src/js/crypto/aes-worker.js +++ b/src/js/crypto/aes-worker.js @@ -2,14 +2,9 @@ 'use strict'; // import web worker dependencies - importScripts('../../lib/sjcl/sjcl.js'); - importScripts('../../lib/sjcl/bitArray.js'); - importScripts('../../lib/sjcl/codecBase64.js'); - importScripts('../../lib/sjcl/codecString.js'); - importScripts('../../lib/sjcl/aes.js'); - importScripts('../../lib/sjcl/ccm.js'); + importScripts('../../lib/forge/forge.rsa.bundle.js'); importScripts('../app-config.js'); - importScripts('./aes-ccm.js'); + importScripts('./aes-cbc.js'); /** * In the web worker thread context, 'this' and 'self' can be used as a global @@ -19,7 +14,7 @@ var args = e.data, output = null, - aes = new app.crypto.AesCCM(sjcl); + aes = new app.crypto.AesCBC(forge); if (args.type === 'encrypt' && args.plaintext && args.key && args.iv) { // start encryption diff --git a/src/js/crypto/crypto.js b/src/js/crypto/crypto.js index c7f102f..1fd2111 100644 --- a/src/js/crypto/crypto.js +++ b/src/js/crypto/crypto.js @@ -7,7 +7,7 @@ app.crypto.Crypto = function(window, util) { var symmetricUserKey = null, // the user's secret key used to encrypt item-keys keyId = null, // the key ID linking the user's key set - aes = new app.crypto.AesCCM(sjcl); // use authenticated AES-CCM mode by default + aes = new app.crypto.AesCBC(forge); // use AES-CBC mode by default /** * Initializes the crypto modules by fetching the user's diff --git a/test/unit/crypto-test.js b/test/unit/crypto-test.js index edb2875..e970ad4 100644 --- a/test/unit/crypto-test.js +++ b/test/unit/crypto-test.js @@ -4,7 +4,7 @@ var crypto_test = { user: 'crypto_test@example.com', password: 'Password', keySize: 128, - ivSize: 104 + ivSize: 128 }; asyncTest("Init", 2, function() { @@ -54,7 +54,7 @@ asyncTest("En/Decrypt for User", 4, function() { }); }); -asyncTest("CCM mode (Async/Worker)", 2, function() { +asyncTest("AES (Async/Worker)", 2, function() { var secret = 'Big secret'; var key = crypto_test.util.random(crypto_test.keySize); @@ -71,7 +71,7 @@ asyncTest("CCM mode (Async/Worker)", 2, function() { }); }); -asyncTest("CCM batch mode (Async/Worker)", 5, function() { +asyncTest("AES batch (Async/Worker)", 5, function() { // generate test data var collection, list, td = new TestData(); @@ -92,7 +92,7 @@ asyncTest("CCM batch mode (Async/Worker)", 5, function() { }); }); -asyncTest("CCM batch mode for User (Async/Worker)", 5, function() { +asyncTest("AES batch for User (Async/Worker)", 5, function() { // generate test data var collection, list, td = new TestData(); diff --git a/test/unit/email-dao-test.js b/test/unit/email-dao-test.js index 112f7a2..15a4ea5 100644 --- a/test/unit/email-dao-test.js +++ b/test/unit/email-dao-test.js @@ -4,7 +4,7 @@ var emaildao_test = { user: 'test@atlasdev.onmicrosoft.com', password: 'Xoza76645', keySize: 128, - ivSize: 104 + ivSize: 128 }; asyncTest("Init", 2, function() {