UNPKG

key-forge

Version:

A simple random key generator for use with Node.

78 lines (72 loc) 1.96 kB
// Generated by CoffeeScript 1.8.0 (function() { var Buffer, Crypto, Keys, __slice = [].slice; Crypto = require("crypto"); Buffer = (require("buffer")).Buffer; Keys = { randomKey: function(size, format) { if (format == null) { format = "hex"; } return Keys.bufferToKey(Keys.randomBytes(size), format); }, randomBytes: function(size) { return Crypto.randomBytes(size); }, numberToKey: function(number) { return Keys.bufferToKey(Keys.numberToBytes(number)); }, numberToBytes: function(number, size) { var bytes, x; if (size == null) { size = 8; } bytes = []; x = number; while (x >= 256) { bytes.push(x % 256); x = Math.floor(x / 256); } bytes.push(x); while (bytes.length < size) { bytes.push(0); } return new Buffer(bytes.reverse()); }, bytesToNumber: function(bytes) { var byte, x, _i, _len; x = 0; for (_i = 0, _len = bytes.length; _i < _len; _i++) { byte = bytes[_i]; x *= 256; x += byte; } return x; }, bufferToKey: function(buffer, format) { if (format == null) { format = "hex"; } switch (format) { case "hex": return buffer.toString("hex"); case "base64": return buffer.toString("base64").replace(/\=+$/, ''); case "base64url": return Keys.sanitize(buffer.toString("base64")); default: throw new Error("Unknown format: '" + format + "'"); } }, sanitize: function(string) { return string.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, ''); }, buffersToKey: function() { var buffers; buffers = 1 <= arguments.length ? __slice.call(arguments, 0) : []; return Keys.bufferToKey(Buffer.concat(buffers)); } }; module.exports = Keys; }).call(this);