started nacl unit tests

This commit is contained in:
Tankred Hase 2013-04-04 14:28:07 +02:00
parent ae3dbaeb94
commit ba055022c9
3 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,29 @@
/**
* A Wrapper for NaCl's asymmetric/symmetric crypto
*/
app.crypto.NaclCrypto = function() {
'use strict';
/**
* Encrypt a String with the provided keysize (e.g. 128, 256)
* @param plaintext [String] The input string in UTF8
* @param key [String] The base64 encoded key
* @param iv [String] The base64 encoded IV
* @return [String] The base64 encoded ciphertext
*/
this.encrypt = function(plaintext, key, iv) {
};
/**
* Decrypt a String with the provided keysize (e.g. 128, 256)
* @param ciphertext [String] The base64 encoded ciphertext
* @param key [String] The base64 encoded key
* @param iv [String] The base64 encoded IV
* @return [String] The decrypted plaintext in UTF8
*/
this.decrypt = function(ciphertext, key, iv) {
};
};

View File

@ -40,6 +40,8 @@
<script src="../../lib/sjcl/codecString.js"></script>
<script src="../../lib/sjcl/aes.js"></script>
<script src="../../lib/sjcl/ccm.js"></script>
<script src="../../lib/nacl.js"></script>
<script src="../../lib/uuid.js"></script>
<script src="../../lib/openpgp.min.js"></script>
@ -59,6 +61,7 @@
<script src="../../js/crypto/aes-cbc.js"></script>
<script src="../../js/crypto/aes-ccm.js"></script>
<script src="../../js/crypto/aes-gcm.js"></script>
<script src="../../js/crypto/nacl-crypto.js"></script>
<script src="../../js/crypto/crypto.js"></script>
<script src="../../js/dao/localstorage-dao.js"></script>
@ -71,6 +74,7 @@
<script src="../test-data.js"></script>
<script src="util-test.js"></script>
<script src="aes-test.js"></script>
<script src="nacl-crypto-test.js"></script>
<script src="crypto-test.js"></script>
<script src="localstorage-dao-test.js"></script>
<script src="lawnchair-dao-test.js"></script>

View File

@ -0,0 +1,42 @@
module("NaCl Crypto");
var nacl_test = {
keySize: 128
};
test("Init", 1, function() {
// init dependencies
nacl_test.util = new app.crypto.Util(window, uuid);
ok(nacl_test.util, 'Util');
// generate test data
nacl_test.test_message = new TestData().generateBigString(1000);
});
test("Generate Keypiar", 1, function() {
// generate keypair from seed
var keys = nacl.crypto_box_keypair();
ok(keys.boxSk && keys.boxPk, "Keysize: " + keys.boxPk.length);
nacl_test.keys = keys;
});
test("En/Decrypt", 2, function() {
var naclCrypto = new app.crypto.NaclCrypto();
var plaintext = nacl_test.test_message;
// var key = nacl_test.util.random(nacl_test.keySize);
// var iv = nacl_test.util.random(104);
// convert utf8 string to Uint8Array
var pt = nacl.encode_utf8(plaintext);
// generate nonce
var nonce = nacl.crypto_secretbox_random_nonce();
// encrypt
var ct = nacl.crypto_secretbox(pt, nonce, nacl_test.keys.boxSk);
ok(ct, 'Ciphertext length: ' + ct.length);
// decrypt
var decryptedBuf = nacl.crypto_secretbox_open(ct, nonce, nacl_test.keys.boxSk);
var decrypted = nacl.decode_utf8(decryptedBuf);
equal(decrypted, plaintext, 'Decryption correct: ' + decrypted);
});