32 lines
876 B
JavaScript
32 lines
876 B
JavaScript
|
var crypto = require('crypto')
|
|||
|
|
|||
|
if (crypto.randomFill) {
|
|||
|
// `crypto.randomFill()` is a little fatser than `crypto.randomBytes()`,
|
|||
|
// because we can use faster `Buffer.allocUnsafe()`.
|
|||
|
module.exports = function (bytes) {
|
|||
|
return new Promise(function (resolve, reject) {
|
|||
|
// `Buffer.allocUnsafe()` faster because it don’t clean memory.
|
|||
|
// We do not need it, since we will fill memory with new bytes anyway.
|
|||
|
crypto.randomFill(Buffer.allocUnsafe(bytes), function (err, buf) {
|
|||
|
if (err) {
|
|||
|
reject(err)
|
|||
|
} else {
|
|||
|
resolve(buf)
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
}
|
|||
|
} else {
|
|||
|
module.exports = function (bytes) {
|
|||
|
return new Promise(function (resolve, reject) {
|
|||
|
crypto.randomBytes(bytes, function (err, buf) {
|
|||
|
if (err) {
|
|||
|
reject(err)
|
|||
|
} else {
|
|||
|
resolve(buf)
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
}
|
|||
|
}
|