Skip to content

Commit 64914fa

Browse files
committed
work in node, and have more helpful error message
1 parent 080b930 commit 64914fa

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

rng.js

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,27 @@
11
(function() {
2+
var g = ('undefined' === typeof window ? global : window) || {}
3+
var foolBrowserify = require
4+
_crypto = (
5+
g.crypto || g.msCrypto || foolBrowserify('crypto')
6+
)
27
module.exports = function(size) {
3-
var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
4-
/* This will not work in older browsers.
5-
* See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
6-
*/
7-
crypto.getRandomValues(bytes);
8-
return bytes;
8+
// Modern Browsers
9+
if(_crypto.getRandomValues) {
10+
var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
11+
/* This will not work in older browsers.
12+
* See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
13+
*/
14+
15+
_crypto.getRandomValues
16+
return bytes;
17+
}
18+
else if (_crypto.randomBytes) {
19+
return _crypto.randomBytes(size)
20+
}
21+
else
22+
throw new Error(
23+
'secure random number generation not supported by this browser\n'+
24+
'use chrome, FireFox or Internet Explorer 11'
25+
)
926
}
1027
}())

0 commit comments

Comments
 (0)