{"version":3,"sources":["../node_modules/browserify-aes/aes.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/modes/index.js","../node_modules/browserify-rsa/index.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-des/modes.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js"],"names":["Buffer","require","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","BN","randomBytes","getr","priv","r","modulus","byteLength","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","self","_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","Error","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","res","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":"static/js/main~44fd26a2.ef389d99.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\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\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\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\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\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\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\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\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\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\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\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\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\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\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}\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\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}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\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\n","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}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\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 { blinder: blinder, 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}\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\n\nmodule.exports = crt\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\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([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\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}\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\n","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')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\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\n return out\n}\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\n var h = Buffer.alloc(4, 0)\n\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\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\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\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\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}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\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\n this._authTag = tag\n this._cipher.scrub()\n}\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\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\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}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","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')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\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\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\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\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\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({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\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({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\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\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\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}\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')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\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}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\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\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\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}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\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\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\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\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\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}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\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\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\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\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}\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\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\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}\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}\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}\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}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","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')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\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}\n\ninherits(Decipher, Transform)\n\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}\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}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\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\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\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\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\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\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\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\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","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}\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');\n\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});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { 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);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\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\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { 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);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\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');\n\nvar RSA_PKCS1_PADDING = 1;\n\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') { throw new Error('wrong private key type'); }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong private key type'); }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { 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) { pad.push(0xff); }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) { pad.push(hash[i]); }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) { 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\n return Buffer.from(out.toDER());\n}\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}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) { r = [0].concat(r); }\n if (s[0] & 0x80) { s = [0].concat(s); }\n\n var total = r.length + s.length + 4;\n var res = [\n 0x30, total, 0x02, r.length\n ];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\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 { k: k, 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) { bits.ishrn(shift); }\n return bits;\n}\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}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\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\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\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\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 BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\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') { throw new Error('wrong public key type'); }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong public key type'); }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { 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\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) { out = 1; }\n\n i = -1;\n while (++i < len) { out |= sig[i] ^ pad[i]; }\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) { 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\n return curve.verify(hash, sig, pubkey);\n}\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)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }\n if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n"],"sourceRoot":""}