diff --git a/src/libsodium/randombytes/randombytes.c b/src/libsodium/randombytes/randombytes.c index b92943bf..baee86ff 100644 --- a/src/libsodium/randombytes/randombytes.c +++ b/src/libsodium/randombytes/randombytes.c @@ -57,7 +57,7 @@ randombytes_stir(void) if (Module.getRandomValue === undefined) { try { var randomValuesStandard = function() { - var buf = new Uint16Array(1); + var buf = new Uint32Array(1); window.crypto.getRandomValues(buf); return buf[0] >>> 0; }; @@ -67,8 +67,8 @@ randombytes_stir(void) try { var crypto = require('crypto'); var randomValueIOJS = function() { - var buf = crypto.randomBytes(2); - return (buf[0] << 8 | buf[1]) >>> 0; + var buf = crypto.randomBytes(4); + return (buf[0] << 24 | buf[1] << 16 || buf[2] << 8 || buf[3]) >>> 0; }; randomValueIOJS(); Module.getRandomValue = randomValueIOJS; diff --git a/test/default/randombytes.c b/test/default/randombytes.c index ece21d61..db406202 100644 --- a/test/default/randombytes.c +++ b/test/default/randombytes.c @@ -35,6 +35,7 @@ static int randombytes_tests(void) assert(strcmp(randombytes_implementation_name(), "js")); #endif randombytes(x, 1U); + while (randombytes_random() <= (uint32_t) 0x7fffffff); randombytes_close(); for (i = 0; i < 256; ++i) {