From 75786ff9ffc5d059444645dfb6987a2b5e92c03a Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 29 Dec 2016 17:04:48 +0100 Subject: [PATCH] simplify key generation and remember user's additional keys --- www/user/main.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/www/user/main.js b/www/user/main.js index 9c04f8864..febf1ed07 100644 --- a/www/user/main.js +++ b/www/user/main.js @@ -254,32 +254,25 @@ define([ // 16 bytes for a deterministic channel key var channelSeed = dispense(16); // 32 bytes for a curve key - var curveSeed = dispense(32); + var curveSeed = opt.curveSeed = dispense(32); // 32 more for a signing key - var edSeed = dispense(32); - - var keys = opt.keys = Crypto.createEditCryptor(null, encryptionSeed); - - // 24 bytes of base64 - keys.editKeyStr = keys.editKeyStr.replace(/\//g, '-'); + var edSeed = opt.edSeed = dispense(32); // 32 bytes of hex - opt.channel = Cryptpad.uint8ArrayToHex(channelSeed); + var channelKey = opt.channel = Cryptpad.uint8ArrayToHex(channelSeed); - var channelHex = opt.channel; + // a bit of a dirty hack to get the same output as we are used to + var keys = opt.keys = Crypto.createEditCryptor(null, encryptionSeed); - if (channelHex.length !== 32) { throw new Error('invalid channel id'); } - - var channel64 = opt.channel64 = Cryptpad.hexToBase64(channelHex); - - opt.editHash = Cryptpad.getEditHashFromKeys(channelHex, keys.editKeyStr); + var editHash = opt.editHash = Cryptpad.getEditHashFromKeys(channelKey, keys); + var secret = Cryptpad.getSecrets(editHash); var config = { websocketURL: Cryptpad.getWebsocketURL(), - channel: channelHex, + channel: channelKey, data: {}, - validateKey: keys.validateKey, // derived validation key - crypto: Crypto.createEncryptor(opt.keys), + validateKey: secret.keys.validateKeys, // derived validation key + crypto: Crypto.createEncryptor(secret.keys), }; var rt = APP.rt = Listmap.create(config);