diff options
| author | Zaran <zaran.krleza@gmail.com> | 2011-05-19 18:21:35 +0200 |
|---|---|---|
| committer | Zaran <zaran.krleza@gmail.com> | 2011-05-19 18:21:35 +0200 |
| commit | 90844a0704f94e1cb69d9abc7546392d7a18d3b5 (patch) | |
| tree | 08c0bc4d1b9474fea44b06ad5e61d1355e96b0d4 /webclient/lib/prng4.js | |
| parent | af055136c23652f1cf1ef0beac1b94d79cc1ddb6 (diff) | |
| download | alias-90844a0704f94e1cb69d9abc7546392d7a18d3b5.tar.gz | |
Add and load the librairies for asymmetric encryption.
Diffstat (limited to 'webclient/lib/prng4.js')
| -rw-r--r-- | webclient/lib/prng4.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/webclient/lib/prng4.js b/webclient/lib/prng4.js new file mode 100644 index 0000000..3034f3f --- /dev/null +++ b/webclient/lib/prng4.js @@ -0,0 +1,45 @@ +// prng4.js - uses Arcfour as a PRNG + +function Arcfour() { + this.i = 0; + this.j = 0; + this.S = new Array(); +} + +// Initialize arcfour context from key, an array of ints, each from [0..255] +function ARC4init(key) { + var i, j, t; + for(i = 0; i < 256; ++i) + this.S[i] = i; + j = 0; + for(i = 0; i < 256; ++i) { + j = (j + this.S[i] + key[i % key.length]) & 255; + t = this.S[i]; + this.S[i] = this.S[j]; + this.S[j] = t; + } + this.i = 0; + this.j = 0; +} + +function ARC4next() { + var t; + this.i = (this.i + 1) & 255; + this.j = (this.j + this.S[this.i]) & 255; + t = this.S[this.i]; + this.S[this.i] = this.S[this.j]; + this.S[this.j] = t; + return this.S[(t + this.S[this.i]) & 255]; +} + +Arcfour.prototype.init = ARC4init; +Arcfour.prototype.next = ARC4next; + +// Plug in your RNG constructor here +function prng_newstate() { + return new Arcfour(); +} + +// Pool size must be a multiple of 4 and greater than 32. +// An array of bytes the size of the pool will be passed to init() +var rng_psize = 256; |
