1 line
10 KiB
JSON
1 line
10 KiB
JSON
{"ast":null,"code":"'use strict';\n\nvar hash = require('hash.js');\n\nvar utils = require('minimalistic-crypto-utils');\n\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._init(entropy, nonce, pers);\n}\n\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac().update(this.V).update([0x00]);\n\n if (seed) kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed) return;\n this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding\n\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n } // Optional additional data\n\n\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n\n this._update(add);\n }\n\n var temp = [];\n\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n\n this._update(add);\n\n this._reseed++;\n return utils.encode(res, enc);\n};","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/hmac-drbg/lib/hmac-drbg.js"],"names":["hash","require","utils","assert","HmacDRBG","options","predResist","outLen","outSize","minEntropy","hmacStrength","_reseed","reseedInterval","K","V","entropy","toArray","entropyEnc","nonce","nonceEnc","pers","persEnc","length","_init","module","exports","prototype","init","seed","concat","Array","i","_update","_hmac","hmac","update","kmac","digest","reseed","add","addEnc","generate","len","enc","Error","temp","res","slice","encode"],"mappings":"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","sourcesContent":["'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n"]},"metadata":{},"sourceType":"script"} |