{"version":3,"sources":["webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/brorand/index.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/browserify-sign/browser/verify.js"],"names":["Buffer","asUInt32Array","buf","isBuffer","from","len","length","out","Array","i","readUInt32BE","scrubVec","v","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","round","RCON","G","d","j","INV_SBOX","INV_SUB_MIX","x","xi","sx","x2","x4","x8","t","AES","key","this","_key","_reset","blockSize","keySize","prototype","keyWords","ksRows","k","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","allocUnsafe","writeUInt32BE","decryptBlock","m1","scrub","module","exports","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","Object","keys","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","mode","r","Rand","rand","generate","_rand","n","getBytes","res","Uint8Array","getByte","self","crypto","getRandomValues","arr","msCrypto","window","Error","randomBytes","e","getr","priv","modulus","byteLength","BN","cmp","umod","prime1","prime2","crt","msg","blinds","blinder","toRed","mont","redPow","publicExponent","fromRed","unblinder","invm","blind","blinded","mul","c1","c2","qinv","coefficient","p","q","exponent1","m2","exponent2","h","isub","imul","iadd","toArrayLike","xor","incr32","getBlock","_cipher","_prev","encrypt","chunk","chunkNum","Math","ceil","start","_cache","concat","offset","pad","slice","iv","item","readUInt8","writeUInt8","aes","Transform","inherits","GHASH","StreamCipher","decrypt","call","alloc","ck","_ghash","_finID","ghash","toPad","update","ivBits","tail","writeUIntBE","state","calcIv","_secCache","_decrypt","_alen","_len","_mode","_authTag","_called","_update","rump","_final","tag","final","a","b","min","xorTest","getAuthTag","setAuthTag","setAAD","DES","aesModes","desModes","ebtk","suite","toLowerCase","TypeError","password","keyLen","ivLen","CipherBase","des","instantiate","EDE","opts","type","modeName","_des","create","des3","data","MODES","AuthCipher","Splitter","_autopadding","thing","add","get","push","PADDING","cache","config","flush","equals","setAutoPadding","setTo","padBuff","block","encryptStart","encryptByte","byteParam","bit","value","shiftIn","buffer","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","bl","_last","last","padded","unpad","autoPadding","createHash","stream","sign","verify","algorithms","Sign","algorithm","Writable","_hashType","hash","_hash","_tag","id","_signType","Verify","createSign","createVerify","forEach","_write","_","done","enc","end","digest","sig","toString","sigBuffer","createHmac","EC","ec","parseKeys","curves","getKey","algo","toArray","zeros","hlen","hbits","bits","bits2int","mod","bits2octets","fill","obits","shift","bitLength","ishrn","makeKey","kv","makeR","g","hashType","signType","curve","curveId","join","keyFromPrivate","privateKey","toDER","ecSign","params","priv_key","H","s","cmpn","total","dsaSign","undefined","padding","checkValue","pub","pubkey","subjectPrivateKey","ecVerify","y","pub_key","unpacked","signature","decode","montp","w","dsaVerify","padNum","red"],"mappings":"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","file":"js/index~5bb1f863-bbf4b3c2a84cd556ca2e.chunk.js","sourcesContent":["// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer;\nfunction asUInt32Array(buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n var len = buf.length / 4 | 0;\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4);\n }\n return out;\n}\nfunction scrubVec(v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0;\n }\n}\nfunction cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0];\n var SUB_MIX1 = SUB_MIX[1];\n var SUB_MIX2 = SUB_MIX[2];\n var SUB_MIX3 = SUB_MIX[3];\n var s0 = M[0] ^ keySchedule[0];\n var s1 = M[1] ^ keySchedule[1];\n var s2 = M[2] ^ keySchedule[2];\n var s3 = M[3] ^ keySchedule[3];\n var t0, t1, t2, t3;\n var ksRow = 4;\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++];\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++];\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++];\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++];\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n t0 = t0 >>> 0;\n t1 = t1 >>> 0;\n t2 = t2 >>> 0;\n t3 = t3 >>> 0;\n return [t0, t1, t2, t3];\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1;\n } else {\n d[j] = j << 1 ^ 0x11b;\n }\n }\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX = [[], [], [], []];\n var INV_SUB_MIX = [[], [], [], []];\n\n // Walk GF(2^8)\n var x = 0;\n var xi = 0;\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub bytes, mix columns tables\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX[0][x] = t << 24 | t >>> 8;\n SUB_MIX[1][x] = t << 16 | t >>> 16;\n SUB_MIX[2][x] = t << 8 | t >>> 24;\n SUB_MIX[3][x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX[0][sx] = t << 24 | t >>> 8;\n INV_SUB_MIX[1][sx] = t << 16 | t >>> 16;\n INV_SUB_MIX[2][sx] = t << 8 | t >>> 24;\n INV_SUB_MIX[3][sx] = t;\n if (x === 0) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n };\n}();\nfunction AES(key) {\n this._key = asUInt32Array(key);\n this._reset();\n}\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\nAES.prototype._reset = function () {\n var keyWords = this._key;\n var keySize = keyWords.length;\n var nRounds = keySize + 6;\n var ksRows = (nRounds + 1) * 4;\n var keySchedule = [];\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k];\n }\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1];\n if (k % keySize === 0) {\n t = t << 8 | t >>> 24;\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n t ^= RCON[k / keySize | 0] << 24;\n } else if (keySize > 6 && k % keySize === 4) {\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n }\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n var invKeySchedule = [];\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik;\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt;\n } else {\n invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]];\n }\n }\n this._nRounds = nRounds;\n this._keySchedule = keySchedule;\n this._invKeySchedule = invKeySchedule;\n};\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M);\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);\n};\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[1], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[3], 12);\n return buf;\n};\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M);\n\n // swap\n var m1 = M[1];\n M[1] = M[3];\n M[3] = m1;\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[3], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[1], 12);\n return buf;\n};\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule);\n scrubVec(this._invKeySchedule);\n scrubVec(this._key);\n};\nmodule.exports.AES = AES;","var ciphers = require('./encrypter');\nvar deciphers = require('./decrypter');\nvar modes = require('./modes/list.json');\nfunction getCiphers() {\n return Object.keys(modes);\n}\nexports.createCipher = exports.Cipher = ciphers.createCipher;\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv;\nexports.createDecipher = exports.Decipher = deciphers.createDecipher;\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n};\nvar modes = require('./list.json');\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode];\n}\nmodule.exports = modes;","var r;\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++) res[i] = this.rand.getByte();\n return res;\n};\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function () {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\n}","var BN = require('bn.js');\nvar randomBytes = require('randombytes');\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder: r.invm(priv.modulus)\n };\n}\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r;\n do {\n r = new BN(randomBytes(len));\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n return r;\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(BN.mont(priv.prime1));\n var c2 = blinded.toRed(BN.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1).fromRed();\n var m2 = c2.redPow(priv.exponent2).fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\ncrt.getr = getr;\nmodule.exports = crt;","var xor = require('buffer-xor');\nvar Buffer = require('safe-buffer').Buffer;\nvar incr32 = require('../incr32');\nfunction getBlock(self) {\n var out = self._cipher.encryptBlockRaw(self._prev);\n incr32(self._prev);\n return out;\n}\nvar blockSize = 16;\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize);\n var start = self._cache.length;\n self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self);\n var offset = start + i * blockSize;\n self._cache.writeUInt32BE(out[0], offset + 0);\n self._cache.writeUInt32BE(out[1], offset + 4);\n self._cache.writeUInt32BE(out[2], offset + 8);\n self._cache.writeUInt32BE(out[3], offset + 12);\n }\n var pad = self._cache.slice(0, chunk.length);\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","function incr32(iv) {\n var len = iv.length;\n var item;\n while (len--) {\n item = iv.readUInt8(len);\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\nmodule.exports = incr32;","var aes = require('./aes');\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('cipher-base');\nvar inherits = require('inherits');\nvar GHASH = require('./ghash');\nvar xor = require('buffer-xor');\nvar incr32 = require('./incr32');\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) out++;\n var len = Math.min(a.length, b.length);\n for (var i = 0; i < len; ++i) {\n out += a[i] ^ b[i];\n }\n return out;\n}\nfunction calcIv(self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n }\n var ghash = new GHASH(ck);\n var len = iv.length;\n var toPad = len % 16;\n ghash.update(iv);\n if (toPad) {\n toPad = 16 - toPad;\n ghash.update(Buffer.alloc(toPad, 0));\n }\n ghash.update(Buffer.alloc(8, 0));\n var ivBits = len * 8;\n var tail = Buffer.alloc(8);\n tail.writeUIntBE(ivBits, 0, 8);\n ghash.update(tail);\n self._finID = ghash.state;\n var out = Buffer.from(self._finID);\n incr32(out);\n return out;\n}\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n var h = Buffer.alloc(4, 0);\n this._cipher = new aes.AES(key);\n var ck = this._cipher.encryptBlock(h);\n this._ghash = new GHASH(ck);\n iv = calcIv(this, iv, ck);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._alen = 0;\n this._len = 0;\n this._mode = mode;\n this._authTag = null;\n this._called = false;\n}\ninherits(StreamCipher, Transform);\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - this._alen % 16;\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0);\n this._ghash.update(rump);\n }\n }\n this._called = true;\n var out = this._mode.encrypt(this, chunk);\n if (this._decrypt) {\n this._ghash.update(chunk);\n } else {\n this._ghash.update(out);\n }\n this._len += chunk.length;\n return out;\n};\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data');\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID));\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data');\n this._authTag = tag;\n this._cipher.scrub();\n};\nStreamCipher.prototype.getAuthTag = function getAuthTag() {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state');\n return this._authTag;\n};\nStreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state');\n this._authTag = tag;\n};\nStreamCipher.prototype.setAAD = function setAAD(buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state');\n this._ghash.update(buf);\n this._alen += buf.length;\n};\nmodule.exports = StreamCipher;","var aes = require('./aes');\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('cipher-base');\nvar inherits = require('inherits');\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._mode = mode;\n}\ninherits(StreamCipher, Transform);\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt);\n};\nStreamCipher.prototype._final = function () {\n this._cipher.scrub();\n};\nmodule.exports = StreamCipher;","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');","var DES = require('browserify-des');\nvar aes = require('browserify-aes/browser');\nvar aesModes = require('browserify-aes/modes');\nvar desModes = require('browserify-des/modes');\nvar ebtk = require('evp_bytestokey');\nfunction createCipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n var keys = ebtk(password, false, keyLen, ivLen);\n return createCipheriv(suite, keys.key, keys.iv);\n}\nfunction createDecipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n var keys = ebtk(password, false, keyLen, ivLen);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\nfunction createCipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite\n });\n throw new TypeError('invalid suite type');\n}\nfunction createDecipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite,\n decrypt: true\n });\n throw new TypeError('invalid suite type');\n}\nfunction getCiphers() {\n return Object.keys(desModes).concat(aes.getCiphers());\n}\nexports.createCipher = exports.Cipher = createCipher;\nexports.createCipheriv = exports.Cipheriv = createCipheriv;\nexports.createDecipher = exports.Decipher = createDecipher;\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;","var CipherBase = require('cipher-base');\nvar des = require('des.js');\nvar inherits = require('inherits');\nvar Buffer = require('safe-buffer').Buffer;\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n};\nmodes.des = modes['des-cbc'];\nmodes.des3 = modes['des-ede3-cbc'];\nmodule.exports = DES;\ninherits(DES, CipherBase);\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n var key = opts.key;\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n var iv = opts.iv;\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\n};","var MODES = require('./modes');\nvar AuthCipher = require('./authCipher');\nvar Buffer = require('safe-buffer').Buffer;\nvar StreamCipher = require('./streamCipher');\nvar Transform = require('cipher-base');\nvar aes = require('./aes');\nvar ebtk = require('evp_bytestokey');\nvar inherits = require('inherits');\nfunction Cipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\ninherits(Cipher, Transform);\nCipher.prototype._update = function (data) {\n this._cache.add(data);\n var chunk;\n var thing;\n var out = [];\n while (chunk = this._cache.get()) {\n thing = this._mode.encrypt(this, chunk);\n out.push(thing);\n }\n return Buffer.concat(out);\n};\nvar PADDING = Buffer.alloc(16, 0x10);\nCipher.prototype._final = function () {\n var chunk = this._cache.flush();\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk);\n this._cipher.scrub();\n return chunk;\n }\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub();\n throw new Error('data not multiple of block length');\n }\n};\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n return null;\n};\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length;\n var padBuff = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n padBuff.writeUInt8(len, i);\n }\n return Buffer.concat([this.cache, padBuff]);\n};\nfunction createCipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv);\n }\n return new Cipher(config.module, password, iv);\n}\nfunction createCipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createCipheriv(suite, keys.key, keys.iv);\n}\nexports.createCipheriv = createCipheriv;\nexports.createCipher = createCipher;","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block);\n};\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block);\n};","var xor = require('buffer-xor');\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n var out = self._cipher.decryptBlock(block);\n return xor(out, pad);\n};","var Buffer = require('safe-buffer').Buffer;\nvar xor = require('buffer-xor');\nfunction encryptStart(self, data, decrypt) {\n var len = data.length;\n var out = xor(data, self._cache);\n self._cache = self._cache.slice(len);\n self._prev = Buffer.concat([self._prev, decrypt ? data : out]);\n return out;\n}\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0);\n var len;\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev);\n self._prev = Buffer.allocUnsafe(0);\n }\n if (self._cache.length <= data.length) {\n len = self._cache.length;\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]);\n data = data.slice(len);\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)]);\n break;\n }\n }\n return out;\n};","var Buffer = require('safe-buffer').Buffer;\nfunction encryptByte(self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev);\n var out = pad[0] ^ byteParam;\n self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n return out;\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n return out;\n};","var Buffer = require('safe-buffer').Buffer;\nfunction encryptByte(self, byteParam, decrypt) {\n var pad;\n var i = -1;\n var len = 8;\n var out = 0;\n var bit, value;\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev);\n bit = byteParam & 1 << 7 - i ? 0x80 : 0;\n value = pad[0] ^ bit;\n out += (value & 0x80) >> i % 8;\n self._prev = shiftIn(self._prev, decrypt ? bit : value);\n }\n return out;\n}\nfunction shiftIn(buffer, value) {\n var len = buffer.length;\n var i = -1;\n var out = Buffer.allocUnsafe(buffer.length);\n buffer = Buffer.concat([buffer, Buffer.from([value])]);\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;\n }\n return out;\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n return out;\n};","var xor = require('buffer-xor');\nfunction getBlock(self) {\n self._prev = self._cipher.encryptBlock(self._prev);\n return self._prev;\n}\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)]);\n }\n var pad = self._cache.slice(0, chunk.length);\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","var Buffer = require('safe-buffer').Buffer;\nvar ZEROES = Buffer.alloc(16, 0);\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n}\nfunction fromArray(out) {\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0] >>> 0, 0);\n buf.writeUInt32BE(out[1] >>> 0, 4);\n buf.writeUInt32BE(out[2] >>> 0, 8);\n buf.writeUInt32BE(out[3] >>> 0, 12);\n return buf;\n}\nfunction GHASH(key) {\n this.h = key;\n this.state = Buffer.alloc(16, 0);\n this.cache = Buffer.allocUnsafe(0);\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\n this._multiply();\n};\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h);\n var Zi = [0, 0, 0, 0];\n var j, xi, lsbVi;\n var i = -1;\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0];\n Zi[1] ^= Vi[1];\n Zi[2] ^= Vi[2];\n Zi[3] ^= Vi[3];\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0;\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n Vi[0] = Vi[0] >>> 1;\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\n }\n this.state = fromArray(Zi);\n};\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf]);\n var chunk;\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n this.ghash(chunk);\n }\n};\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16));\n }\n this.ghash(fromArray([0, abl, 0, bl]));\n return this.state;\n};\nmodule.exports = GHASH;","var AuthCipher = require('./authCipher');\nvar Buffer = require('safe-buffer').Buffer;\nvar MODES = require('./modes');\nvar StreamCipher = require('./streamCipher');\nvar Transform = require('cipher-base');\nvar aes = require('./aes');\nvar ebtk = require('evp_bytestokey');\nvar inherits = require('inherits');\nfunction Decipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._last = void 0;\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\ninherits(Decipher, Transform);\nDecipher.prototype._update = function (data) {\n this._cache.add(data);\n var chunk;\n var thing;\n var out = [];\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n return Buffer.concat(out);\n};\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk));\n } else if (chunk) {\n throw new Error('data not multiple of block length');\n }\n};\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\nSplitter.prototype.get = function (autoPadding) {\n var out;\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n }\n return null;\n};\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache;\n};\nfunction unpad(last) {\n var padded = last[15];\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n var i = -1;\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n if (padded === 16) return;\n return last.slice(0, 16 - padded);\n}\nfunction createDecipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true);\n }\n return new Decipher(config.module, password, iv);\n}\nfunction createDecipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\nexports.createDecipher = createDecipher;\nexports.createDecipheriv = createDecipheriv;","exports['des-ecb'] = {\n key: 8,\n iv: 0\n};\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n};\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n};\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n};\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n};\nexports['des-ede'] = {\n key: 16,\n iv: 0\n};","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) {\n throw new Error('Unknown message digest');\n }\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n return this;\n};\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n return enc ? sig.toString(enc) : sig;\n};\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) {\n throw new Error('Unknown message digest');\n }\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n return this;\n};\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\nvar RSA_PKCS1_PADDING = 1;\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong private key type');\n }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') {\n throw new Error('wrong private key type');\n }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong private key type');\n }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) {\n throw new Error('illegal or unsupported padding mode');\n }\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) {\n pad.push(0xff);\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n var out = crt(pad, priv);\n return out;\n}\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) {\n throw new Error('unknown curve ' + priv.curve.join('.'));\n }\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n return Buffer.from(out.toDER());\n}\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) {\n r = [0].concat(r);\n }\n if (s[0] & 0x80) {\n s = [0].concat(s);\n }\n var total = r.length + s.length + 4;\n var res = [0x30, total, 0x02, r.length];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return {\n k: k,\n v: v\n };\n}\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) {\n bits.ishrn(shift);\n }\n return bits;\n}\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n do {\n t = Buffer.alloc(0);\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n return k;\n}\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong public key type');\n }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') {\n throw new Error('wrong public key type');\n }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong public key type');\n }\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) {\n out = 1;\n }\n i = -1;\n while (++i < len) {\n out |= sig[i] ^ pad[i];\n }\n return out === 0;\n}\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) {\n throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'));\n }\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n return curve.verify(hash, sig, pubkey);\n}\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);\n return v.cmp(r) === 0;\n}\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) {\n throw new Error('invalid sig');\n }\n if (b.cmp(q) >= 0) {\n throw new Error('invalid sig');\n }\n}\nmodule.exports = verify;"],"sourceRoot":""}