mirror of
https://github.com/moparisthebest/mail
synced 2025-02-07 02:20:14 -05:00
started nacl unit tests
This commit is contained in:
parent
ae3dbaeb94
commit
ba055022c9
29
src/js/crypto/nacl-crypto.js
Normal file
29
src/js/crypto/nacl-crypto.js
Normal 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) {
|
||||
|
||||
};
|
||||
|
||||
};
|
@ -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>
|
||||
|
42
src/test/unit/nacl-crypto-test.js
Normal file
42
src/test/unit/nacl-crypto-test.js
Normal 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);
|
||||
|
||||
});
|
Loading…
Reference in New Issue
Block a user