diff options
Diffstat (limited to 'public/js/seeder.js')
| -rw-r--r-- | public/js/seeder.js | 37 |
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 = []; + } +}; |
