diff --git a/bitaddress.org.html b/bitaddress.org.html
index 585c6d7..c3dde7e 100644
--- a/bitaddress.org.html
+++ b/bitaddress.org.html
@@ -1613,21 +1613,26 @@ if (typeof Crypto == "undefined" || !Crypto.util) {
if (sr.pool == null) {
sr.pool = new Array();
sr.pptr = 0;
- var t;
+
+ // Use webcrypto if available
if (window.crypto && window.crypto.getRandomValues) {
try {
- // Use webcrypto if available
- var ua = new Uint8Array(32);
+ var ua = new Uint8Array(sr.poolSize - sr.pptr);
window.crypto.getRandomValues(ua);
- for (t = 0; t < 32; ++t)
- sr.pool[sr.pptr++] = ua[t];
+ var i = 0;
+ while (sr.pptr < sr.poolSize) {
+ sr.pool[sr.pptr++] = ua[i++];
+ }
} catch (e) { alert(e); }
+ } else {
+ var t;
+ while (sr.pptr < sr.poolSize) { // extract some randomness from Math.random()
+ t = Math.floor(65536 * Math.random());
+ sr.pool[sr.pptr++] = t >>> 8;
+ sr.pool[sr.pptr++] = t & 255;
+ }
}
- while (sr.pptr < sr.poolSize) { // extract some randomness from Math.random()
- t = Math.floor(65536 * Math.random());
- sr.pool[sr.pptr++] = t >>> 8;
- sr.pool[sr.pptr++] = t & 255;
- }
+
sr.pptr = 0;
sr.seedTime();
// entropy
diff --git a/src/securerandom.js b/src/securerandom.js
index 4d1d800..2d9b3be 100644
--- a/src/securerandom.js
+++ b/src/securerandom.js
@@ -126,21 +126,26 @@
if (sr.pool == null) {
sr.pool = new Array();
sr.pptr = 0;
- var t;
+
+ // Use webcrypto if available
if (window.crypto && window.crypto.getRandomValues) {
try {
- // Use webcrypto if available
- var ua = new Uint8Array(32);
+ var ua = new Uint8Array(sr.poolSize - sr.pptr);
window.crypto.getRandomValues(ua);
- for (t = 0; t < 32; ++t)
- sr.pool[sr.pptr++] = ua[t];
+ var i = 0;
+ while (sr.pptr < sr.poolSize) {
+ sr.pool[sr.pptr++] = ua[i++];
+ }
} catch (e) { alert(e); }
+ } else {
+ var t;
+ while (sr.pptr < sr.poolSize) { // extract some randomness from Math.random()
+ t = Math.floor(65536 * Math.random());
+ sr.pool[sr.pptr++] = t >>> 8;
+ sr.pool[sr.pptr++] = t & 255;
+ }
}
- while (sr.pptr < sr.poolSize) { // extract some randomness from Math.random()
- t = Math.floor(65536 * Math.random());
- sr.pool[sr.pptr++] = t >>> 8;
- sr.pool[sr.pptr++] = t & 255;
- }
+
sr.pptr = 0;
sr.seedTime();
// entropy