2013-03-13 11:58:46 -04:00
|
|
|
module("AES Crypto");
|
|
|
|
|
|
|
|
var aes_test = {
|
|
|
|
keySize: 128
|
|
|
|
};
|
|
|
|
|
|
|
|
test("Init", 1, function() {
|
|
|
|
// init dependencies
|
|
|
|
aes_test.util = new app.crypto.Util(window, uuid);
|
|
|
|
ok(aes_test.util, 'Util');
|
|
|
|
// generate test data
|
|
|
|
aes_test.test_message = new TestData().generateBigString(1000);
|
|
|
|
});
|
|
|
|
|
|
|
|
test("CBC mode", 4, function() {
|
|
|
|
var aes = new app.crypto.AesCBC();
|
|
|
|
|
|
|
|
var plaintext = aes_test.test_message;
|
|
|
|
var key = aes_test.util.random(aes_test.keySize);
|
|
|
|
var iv = aes_test.util.random(aes_test.keySize);
|
|
|
|
ok(key, 'Key: ' + key);
|
|
|
|
equal(CryptoJS.enc.Base64.parse(key).sigBytes * 8, aes_test.keySize, 'Keysize ' + aes_test.keySize);
|
|
|
|
|
|
|
|
var ciphertext = aes.encrypt(plaintext, key, iv);
|
|
|
|
ok(ciphertext, 'Ciphertext lenght: ' + ciphertext.length);
|
|
|
|
|
|
|
|
var decrypted = aes.decrypt(ciphertext, key, iv);
|
|
|
|
equal(decrypted, plaintext, 'Decryption correct' + decrypted);
|
|
|
|
});
|
|
|
|
|
|
|
|
test("CCM mode", 2, function() {
|
2013-04-05 11:43:41 -04:00
|
|
|
var aes = new app.crypto.AesCCM(sjcl);
|
|
|
|
|
2013-03-13 11:58:46 -04:00
|
|
|
var plaintext = aes_test.test_message;
|
|
|
|
var key = aes_test.util.random(aes_test.keySize);
|
|
|
|
var iv = aes_test.util.random(104);
|
2013-04-05 11:43:41 -04:00
|
|
|
|
2013-03-13 11:58:46 -04:00
|
|
|
var ciphertext = aes.encrypt(plaintext, key, iv);
|
|
|
|
ok(ciphertext, 'Ciphertext length: ' + ciphertext.length);
|
2013-04-05 11:43:41 -04:00
|
|
|
|
2013-03-13 11:58:46 -04:00
|
|
|
var decrypted = aes.decrypt(ciphertext, key, iv);
|
|
|
|
equal(decrypted, plaintext, 'Decryption correct: ' + decrypted);
|
|
|
|
});
|
|
|
|
|
|
|
|
// test("GCM mode", 2, function() {
|
|
|
|
// var aes = new app.crypto.AesGCM();
|
|
|
|
//
|
|
|
|
// var plaintext = aes_test.test_message;
|
|
|
|
// var key = aes_test.util.random(aes_test.keySize);
|
|
|
|
// var iv = aes_test.util.random(104);
|
|
|
|
//
|
|
|
|
// var ciphertext = aes.encrypt(plaintext, key, iv);
|
|
|
|
// ok(ciphertext, 'Ciphertext length: ' + ciphertext.length);
|
|
|
|
//
|
|
|
|
// var decrypted = aes.decrypt(ciphertext, key, iv);
|
|
|
|
// equal(decrypted, plaintext, 'Decryption correct: ' + decrypted);
|
|
|
|
// });
|