UNPKG

node-jsbnrsa

Version:

node rsa module url: http://www-cs-students.stanford.edu/~tjw/jsbn/

71 lines (64 loc) 1.89 kB
var crypt = require('crypto'); /* var prng_newstate = require('./prng4.js'); var rng_state; var rng_pool; var rng_pptr; function rng_seed_int(x) { rng_pool[rng_pptr++] ^= x & 255; rng_pool[rng_pptr++] ^= (x >> 8) & 255; rng_pool[rng_pptr++] ^= (x >> 16) & 255; rng_pool[rng_pptr++] ^= (x >> 24) & 255; if (rng_pptr >= rng_psize) rng_pptr -= rng_psize; } function rng_seed_time() { rng_seed_int(new Date().getTime()); } if (rng_pool == null) { rng_pool = new Array(); rng_pptr = 0; var t; if (window.crypto && window.crypto.getRandomValues) { var ua = new Uint8Array(32); window.crypto.getRandomValues(ua); for (t = 0; t < 32; ++t) rng_pool[rng_pptr++] = ua[t]; } if (navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) { var z = window.crypto.random(32); for (t = 0; t < z.length; ++t) rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; } while (rng_pptr < rng_psize) { t = Math.floor(65536 * Math.random()); rng_pool[rng_pptr++] = t >>> 8; rng_pool[rng_pptr++] = t & 255; } rng_pptr = 0; rng_seed_time(); } function rng_get_byte() { if (rng_state == null) { rng_seed_time(); rng_state = prng_newstate(); rng_state.init(rng_pool); for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) rng_pool[rng_pptr] = 0; rng_pptr = 0; } return rng_state.next(); } */ function rng_get_bytes(ba) { var i; var buff = crypto.randomBytes(ba.length); for (i = 0; i < ba.length; ++i) { ba[i] = buff[i]; //ba[i] = rng_get_byte(); } } function SecureRandom() { } SecureRandom.prototype.nextBytes = rng_get_bytes; //module.exports = SecureRandom;