From 2d37e8f3f7035e2094d71e1731a726cbc2579711 Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Fri, 5 Apr 2013 17:56:47 +0200 Subject: [PATCH] finished nacl impl and tests --- src/js/crypto/nacl-crypto.js | 17 +++++++++++------ src/test/unit/nacl-crypto-test.js | 19 ++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/js/crypto/nacl-crypto.js b/src/js/crypto/nacl-crypto.js index cbf4e4a..2cc49aa 100644 --- a/src/js/crypto/nacl-crypto.js +++ b/src/js/crypto/nacl-crypto.js @@ -6,17 +6,22 @@ var NaclCrypto = function(util) { /** * Generates a baes64 encoded keypair for use with NaCl + * @param seed [String] A base64 encoded (pseudo) random seed e.g. PBKDF2 */ this.generateKeypair = function(seed) { + var keys; + if (seed) { - return null; // TODO: generate from PBKDF2 + var seedBuf = nacl.encode_latin1(util.base642Str(seed)); + keys = nacl.crypto_box_keypair_from_seed(seedBuf); } else { - var keys = nacl.crypto_box_keypair(); - return { - boxPk: util.str2Base64(nacl.decode_latin1(keys.boxPk)), - boxSk: util.str2Base64(nacl.decode_latin1(keys.boxSk)) - }; + keys = nacl.crypto_box_keypair(); } + + return { + boxPk: util.str2Base64(nacl.decode_latin1(keys.boxPk)), + boxSk: util.str2Base64(nacl.decode_latin1(keys.boxSk)) + }; }; /** diff --git a/src/test/unit/nacl-crypto-test.js b/src/test/unit/nacl-crypto-test.js index c952b4d..d76cfd6 100644 --- a/src/test/unit/nacl-crypto-test.js +++ b/src/test/unit/nacl-crypto-test.js @@ -6,21 +6,22 @@ var nacl_test = { test("Init", 1, function() { // init dependencies - var util = new app.crypto.Util(window, uuid); - ok(util, 'Util'); + 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); - nacl_test.crypto = new app.crypto.NaclCrypto(util); + nacl_test.crypto = new app.crypto.NaclCrypto(nacl_test.util); }); -// test("Generate Keypair from seed", 2, function() { -// // generate keypair from seed -// var keys = nacl_test.crypto.generateKeypair(); -// ok(keys.boxSk && keys.boxPk, "Keypair: " + JSON.stringify(keys)); -// }); +test("Generate Keypair from seed", 1, function() { + // generate keypair from seed + var seed = nacl_test.util.random(128); + var keys = nacl_test.crypto.generateKeypair(seed); + ok(keys.boxSk && keys.boxPk, "Keypair: " + JSON.stringify(keys)); +}); test("Generate Keypair", 2, function() { - // generate keypair from seed + // generate keypair var senderKeypair = nacl_test.crypto.generateKeypair(); ok(senderKeypair.boxSk && senderKeypair.boxPk, "Sender keypair: " + JSON.stringify(senderKeypair)); var recipientKeypair = nacl_test.crypto.generateKeypair();