aboutsummaryrefslogtreecommitdiffstats
path: root/public/js/seeder.js
blob: fa0bdfddc27b6098909e6d08f74123ae365d1fa6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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 = [];
	}
};