From ae122a0c8da46e52d02dcf8d5514aa9f5d07aa34 Mon Sep 17 00:00:00 2001 From: poma Date: Wed, 29 Apr 2020 18:55:54 +0300 Subject: [PATCH] improve randomness --- js/index.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/js/index.js b/js/index.js index ed05ab4..9647cda 100644 --- a/js/index.js +++ b/js/index.js @@ -3,10 +3,22 @@ import("../pkg/index.js").catch(console.error); async function main() { const pkg = await import("../pkg/index.js") console.log('Downloading previous contribution from /params.bin') - let params = await fetch('params.bin') + const params = await fetch('params.bin') params = new Uint8Array(await params.arrayBuffer()) - const entropy = new Uint8Array(32) - window.crypto.getRandomValues(entropy) + + const userInput = prompt('Please enter some random symbols') + if (!userInput.length) { + throw new Error('Zero symbols entered') + } + const msgBuffer = new TextEncoder('utf-8').encode(userInput) + const hashBuffer = await window.crypto.subtle.digest('SHA-256', msgBuffer) + const entropyFromUser = new Uint8Array(hashBuffer) + const entropyFromBrowser = window.crypto.getRandomValues(new Uint8Array(32)) + const entropy = new Uint8Array(entropyFromBrowser.length) + for (let i = 0; i < entropyFromBrowser.length; i++) { + entropy[i] = entropyFromBrowser[i] ^ entropyFromUser[i] + } + console.log('Contributing with entropy', entropy) // shouldn't be logged on prod const result = pkg.contribute(params, entropy) console.log('Your contribution', result)