{"id":"node_modules/browserify-sign/browser/verify.js","dependencies":[{"name":"/www/ml-classifier/example/package.json","includedInParent":true,"mtime":1551949031632},{"name":"/www/ml-classifier/example/.babelrc","includedInParent":true,"mtime":1551703756168},{"name":"/www/ml-classifier/example/node_modules/browserify-sign/package.json","includedInParent":true,"mtime":1542304151835},{"name":"bn.js","loc":{"line":2,"column":17},"parent":"/www/ml-classifier/example/node_modules/browserify-sign/browser/verify.js","resolved":"/www/ml-classifier/example/node_modules/bn.js/lib/bn.js"},{"name":"elliptic","loc":{"line":3,"column":17},"parent":"/www/ml-classifier/example/node_modules/browserify-sign/browser/verify.js","resolved":"/www/ml-classifier/example/node_modules/elliptic/lib/elliptic.js"},{"name":"parse-asn1","loc":{"line":4,"column":24},"parent":"/www/ml-classifier/example/node_modules/browserify-sign/browser/verify.js","resolved":"/www/ml-classifier/example/node_modules/parse-asn1/index.js"},{"name":"./curves.json","loc":{"line":5,"column":21},"parent":"/www/ml-classifier/example/node_modules/browserify-sign/browser/verify.js","resolved":"/www/ml-classifier/example/node_modules/browserify-sign/browser/curves.json"},{"name":"buffer","parent":"/www/ml-classifier/example/node_modules/browserify-sign/browser/verify.js","resolved":"/www/ml-classifier/example/node_modules/buffer/index.js"}],"generated":{"js":"var Buffer = require(\"buffer\").Buffer;\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\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  } else {\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++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = new Buffer(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 = new Buffer(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) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","map":{"mappings":[{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":1,"column":0},"generated":{"line":2,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":2,"column":0},"generated":{"line":3,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":3,"column":0},"generated":{"line":4,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":4,"column":0},"generated":{"line":5,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":5,"column":0},"generated":{"line":6,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":6,"column":0},"generated":{"line":7,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":7,"column":0},"generated":{"line":8,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":8,"column":0},"generated":{"line":9,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":9,"column":0},"generated":{"line":10,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":10,"column":0},"generated":{"line":11,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":11,"column":0},"generated":{"line":12,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":12,"column":0},"generated":{"line":13,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":13,"column":0},"generated":{"line":14,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":14,"column":0},"generated":{"line":15,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":15,"column":0},"generated":{"line":16,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":16,"column":0},"generated":{"line":17,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":17,"column":0},"generated":{"line":18,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":18,"column":0},"generated":{"line":19,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":19,"column":0},"generated":{"line":20,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":20,"column":0},"generated":{"line":21,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":21,"column":0},"generated":{"line":22,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":22,"column":0},"generated":{"line":23,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":23,"column":0},"generated":{"line":24,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":24,"column":0},"generated":{"line":25,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":25,"column":0},"generated":{"line":26,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":26,"column":0},"generated":{"line":27,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":27,"column":0},"generated":{"line":28,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":28,"column":0},"generated":{"line":29,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":29,"column":0},"generated":{"line":30,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":30,"column":0},"generated":{"line":31,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":31,"column":0},"generated":{"line":32,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":32,"column":0},"generated":{"line":33,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":33,"column":0},"generated":{"line":34,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":34,"column":0},"generated":{"line":35,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":35,"column":0},"generated":{"line":36,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":36,"column":0},"generated":{"line":37,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":37,"column":0},"generated":{"line":38,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":38,"column":0},"generated":{"line":39,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":39,"column":0},"generated":{"line":40,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":40,"column":0},"generated":{"line":41,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":41,"column":0},"generated":{"line":42,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":42,"column":0},"generated":{"line":43,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":43,"column":0},"generated":{"line":44,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":44,"column":0},"generated":{"line":45,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":45,"column":0},"generated":{"line":46,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":46,"column":0},"generated":{"line":47,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":47,"column":0},"generated":{"line":48,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":48,"column":0},"generated":{"line":49,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":49,"column":0},"generated":{"line":50,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":50,"column":0},"generated":{"line":51,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":51,"column":0},"generated":{"line":52,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":52,"column":0},"generated":{"line":53,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":53,"column":0},"generated":{"line":54,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":54,"column":0},"generated":{"line":55,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":55,"column":0},"generated":{"line":56,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":56,"column":0},"generated":{"line":57,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":57,"column":0},"generated":{"line":58,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":58,"column":0},"generated":{"line":59,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":59,"column":0},"generated":{"line":60,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":60,"column":0},"generated":{"line":61,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":61,"column":0},"generated":{"line":62,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":62,"column":0},"generated":{"line":63,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":63,"column":0},"generated":{"line":64,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":64,"column":0},"generated":{"line":65,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":65,"column":0},"generated":{"line":66,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":66,"column":0},"generated":{"line":67,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":67,"column":0},"generated":{"line":68,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":68,"column":0},"generated":{"line":69,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":69,"column":0},"generated":{"line":70,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":70,"column":0},"generated":{"line":71,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":71,"column":0},"generated":{"line":72,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":72,"column":0},"generated":{"line":73,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":73,"column":0},"generated":{"line":74,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":74,"column":0},"generated":{"line":75,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":75,"column":0},"generated":{"line":76,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":76,"column":0},"generated":{"line":77,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":77,"column":0},"generated":{"line":78,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":78,"column":0},"generated":{"line":79,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":79,"column":0},"generated":{"line":80,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":80,"column":0},"generated":{"line":81,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":81,"column":0},"generated":{"line":82,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":82,"column":0},"generated":{"line":83,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":83,"column":0},"generated":{"line":84,"column":0}},{"source":"node_modules/browserify-sign/browser/verify.js","original":{"line":84,"column":0},"generated":{"line":85,"column":0}}],"sources":{"node_modules/browserify-sign/browser/verify.js":"// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\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  } else {\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++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = new Buffer(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 = new Buffer(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) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n"},"lineCount":85}},"hash":"9090afb0f40f54def4ac3ef719f46e11","cacheData":{"env":{}}}