From 70487753ee25dd761ab8140e4387d2fbb7f749da Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Mon, 20 Apr 2015 12:45:39 +0200 Subject: [PATCH] JS target: window.crypto is not defined in webworkers; use self.crypto instead. --- src/libsodium/randombytes/randombytes.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/libsodium/randombytes/randombytes.c b/src/libsodium/randombytes/randombytes.c index 3fd8a11d..53a7a2fc 100644 --- a/src/libsodium/randombytes/randombytes.c +++ b/src/libsodium/randombytes/randombytes.c @@ -60,20 +60,21 @@ randombytes_stir(void) EM_ASM({ if (Module.getRandomValue === undefined) { try { - var randomValuesStandard = function() { - var buf = new Uint32Array(1); - window.crypto.getRandomValues(buf); - return buf[0] >>> 0; - }; + var crypto_ = ("object" === typeof window ? window : self).crypto, + randomValuesStandard = function() { + var buf = new Uint32Array(1); + crypto_.getRandomValues(buf); + return buf[0] >>> 0; + }; randomValuesStandard(); Module.getRandomValue = randomValuesStandard; } catch (e) { try { - var crypto = require('crypto'); - var randomValueIOJS = function() { - var buf = crypto.randomBytes(4); - return (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]) >>> 0; - }; + var crypto = require('crypto'), + randomValueIOJS = function() { + var buf = crypto.randomBytes(4); + return (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]) >>> 0; + }; randomValueIOJS(); Module.getRandomValue = randomValueIOJS; } catch (e) {