aboutsummaryrefslogtreecommitdiffstats
path: root/public/js/seeder.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2014-09-01 15:12:27 -0700
committerAdam Soltys <[email protected]>2014-09-01 15:12:27 -0700
commit40083923ed74eb026135d78600ebf55ff0a9e32c (patch)
treeaf2e75cebeac31ff507615d6608b0c7a84022849 /public/js/seeder.js
parent8fe5b97004189845ee98a02ab197ca080ff0a002 (diff)
downloadcoinos-server-40083923ed74eb026135d78600ebf55ff0a9e32c.tar.gz
coinos-server-40083923ed74eb026135d78600ebf55ff0a9e32c.zip
Support BIP32 HD Wallets
Diffstat (limited to 'public/js/seeder.js')
-rw-r--r--public/js/seeder.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/public/js/seeder.js b/public/js/seeder.js
new file mode 100644
index 00000000..fa0bdfdd
--- /dev/null
+++ b/public/js/seeder.js
@@ -0,0 +1,37 @@
+seeder = {
+ // number of mouse movements to wait for
+ seedLimit: (function () {
+ var num = Crypto.util.randomBytes(12)[11];
+ return 200 + Math.floor(num);
+ })(),
+
+ seedCount: 0, // counter
+ lastInputTime: new Date().getTime(),
+ seedPoints: [],
+
+ // seed function exists to wait for mouse movement to add more entropy before generating an address
+ seed: function (evt) {
+ if (!evt) var evt = window.event;
+ var timeStamp = new Date().getTime();
+ // seeding is over now we generate and display the address
+ if (seeder.seedCount == seeder.seedLimit) {
+ seeder.seedCount++;
+ seeder.removePoints();
+ $('body').trigger('seeded')
+ }
+ // seed mouse position X and Y when mouse movements are greater than 40ms apart.
+ else if ((seeder.seedCount < seeder.seedLimit) && evt && (timeStamp - seeder.lastInputTime) > 10) {
+ SecureRandom.seedTime();
+ SecureRandom.seedInt16((evt.clientX * evt.clientY));
+ seeder.seedCount++;
+ seeder.lastInputTime = new Date().getTime();
+ }
+ },
+
+ removePoints: function () {
+ for (var i = 0; i < seeder.seedPoints.length; i++) {
+ document.body.removeChild(seeder.seedPoints[i]);
+ }
+ seeder.seedPoints = [];
+ }
+};