{"id":"node_modules/eth-lib/lib/account.js","dependencies":[{"name":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/package.json","includedInParent":true,"mtime":1573802285913},{"name":"/Users/pa/Js_workspace/eth-merkle-bridge-js/.babelrc","includedInParent":true,"mtime":1571296685108},{"name":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/package.json","includedInParent":true,"mtime":1573797080063},{"name":"./bytes","loc":{"line":1,"column":22},"parent":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/account.js","resolved":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/bytes.js"},{"name":"./nat","loc":{"line":2,"column":20},"parent":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/account.js","resolved":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/nat.js"},{"name":"elliptic","loc":{"line":3,"column":25},"parent":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/account.js","resolved":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/elliptic/lib/elliptic.js"},{"name":"./rlp","loc":{"line":4,"column":20},"parent":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/account.js","resolved":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/rlp.js"},{"name":"./hash","loc":{"line":6,"column":42},"parent":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/account.js","resolved":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/hash.js"},{"name":"buffer","parent":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/eth-lib/lib/account.js","resolved":"/Users/pa/Js_workspace/eth-merkle-bridge-js/example/node_modules/buffer/index.js"}],"generated":{"js":"var Buffer = require(\"buffer\").Buffer;\nconst Bytes = require(\"./bytes\");\nconst Nat = require(\"./nat\");\nconst elliptic = require(\"elliptic\");\nconst rlp = require(\"./rlp\");\nconst secp256k1 = new elliptic.ec(\"secp256k1\"); // eslint-disable-line\nconst { keccak256, keccak256s } = require(\"./hash\");\n\nconst create = entropy => {\n  const innerHex = keccak256(Bytes.concat(Bytes.random(32), entropy || Bytes.random(32)));\n  const middleHex = Bytes.concat(Bytes.concat(Bytes.random(32), innerHex), Bytes.random(32));\n  const outerHex = keccak256(middleHex);\n  return fromPrivate(outerHex);\n};\n\nconst toChecksum = address => {\n  const addressHash = keccak256s(address.slice(2));\n  let checksumAddress = \"0x\";\n  for (let i = 0; i < 40; i++) checksumAddress += parseInt(addressHash[i + 2], 16) > 7 ? address[i + 2].toUpperCase() : address[i + 2];\n  return checksumAddress;\n};\n\nconst fromPrivate = privateKey => {\n  const buffer = new Buffer(privateKey.slice(2), \"hex\");\n  const ecKey = secp256k1.keyFromPrivate(buffer);\n  const publicKey = \"0x\" + ecKey.getPublic(false, 'hex').slice(2);\n  const publicHash = keccak256(publicKey);\n  const address = toChecksum(\"0x\" + publicHash.slice(-40));\n  return {\n    address: address,\n    privateKey: privateKey\n  };\n};\n\nconst encodeSignature = ([v, r, s]) => Bytes.flatten([r, s, v]);\n\nconst decodeSignature = hex => [Bytes.slice(64, Bytes.length(hex), hex), Bytes.slice(0, 32, hex), Bytes.slice(32, 64, hex)];\n\nconst makeSigner = addToV => (hash, privateKey) => {\n  const signature = secp256k1.keyFromPrivate(new Buffer(privateKey.slice(2), \"hex\")).sign(new Buffer(hash.slice(2), \"hex\"), { canonical: true });\n  return encodeSignature([Nat.fromString(Bytes.fromNumber(addToV + signature.recoveryParam)), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.r.toString(16))), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.s.toString(16)))]);\n};\n\nconst sign = makeSigner(27); // v=27|28 instead of 0|1...\n\nconst recover = (hash, signature) => {\n  const vals = decodeSignature(signature);\n  const vrs = { v: Bytes.toNumber(vals[0]), r: vals[1].slice(2), s: vals[2].slice(2) };\n  const ecPublicKey = secp256k1.recoverPubKey(new Buffer(hash.slice(2), \"hex\"), vrs, vrs.v < 2 ? vrs.v : 1 - vrs.v % 2); // because odd vals mean v=0... sadly that means v=0 means v=1... I hate that\n  const publicKey = \"0x\" + ecPublicKey.encode(\"hex\", false).slice(2);\n  const publicHash = keccak256(publicKey);\n  const address = toChecksum(\"0x\" + publicHash.slice(-40));\n  return address;\n};\n\nmodule.exports = {\n  create,\n  toChecksum,\n  fromPrivate,\n  sign,\n  makeSigner,\n  recover,\n  encodeSignature,\n  decodeSignature\n};"},"sourceMaps":{"js":{"mappings":[{"source":"node_modules/eth-lib/lib/account.js","original":{"line":1,"column":0},"generated":{"line":2,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":2,"column":0},"generated":{"line":3,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":3,"column":0},"generated":{"line":4,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":4,"column":0},"generated":{"line":5,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":5,"column":0},"generated":{"line":6,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":6,"column":0},"generated":{"line":7,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":7,"column":0},"generated":{"line":8,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":8,"column":0},"generated":{"line":9,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":9,"column":0},"generated":{"line":10,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":10,"column":0},"generated":{"line":11,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":11,"column":0},"generated":{"line":12,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":12,"column":0},"generated":{"line":13,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":13,"column":0},"generated":{"line":14,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":14,"column":0},"generated":{"line":15,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":15,"column":0},"generated":{"line":16,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":16,"column":0},"generated":{"line":17,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":17,"column":0},"generated":{"line":18,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":18,"column":0},"generated":{"line":19,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":19,"column":0},"generated":{"line":20,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":20,"column":0},"generated":{"line":21,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":21,"column":0},"generated":{"line":22,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":22,"column":0},"generated":{"line":23,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":23,"column":0},"generated":{"line":24,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":24,"column":0},"generated":{"line":25,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":25,"column":0},"generated":{"line":26,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":26,"column":0},"generated":{"line":27,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":27,"column":0},"generated":{"line":28,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":28,"column":0},"generated":{"line":29,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":29,"column":0},"generated":{"line":30,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":30,"column":0},"generated":{"line":31,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":31,"column":0},"generated":{"line":32,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":32,"column":0},"generated":{"line":33,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":33,"column":0},"generated":{"line":34,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":34,"column":0},"generated":{"line":35,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":35,"column":0},"generated":{"line":36,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":36,"column":0},"generated":{"line":37,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":37,"column":0},"generated":{"line":38,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":38,"column":0},"generated":{"line":39,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":39,"column":0},"generated":{"line":40,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":40,"column":0},"generated":{"line":41,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":41,"column":0},"generated":{"line":42,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":42,"column":0},"generated":{"line":43,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":43,"column":0},"generated":{"line":44,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":44,"column":0},"generated":{"line":45,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":45,"column":0},"generated":{"line":46,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":46,"column":0},"generated":{"line":47,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":47,"column":0},"generated":{"line":48,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":48,"column":0},"generated":{"line":49,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":49,"column":0},"generated":{"line":50,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":50,"column":0},"generated":{"line":51,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":51,"column":0},"generated":{"line":52,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":52,"column":0},"generated":{"line":53,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":53,"column":0},"generated":{"line":54,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":54,"column":0},"generated":{"line":55,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":55,"column":0},"generated":{"line":56,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":56,"column":0},"generated":{"line":57,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":57,"column":0},"generated":{"line":58,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":58,"column":0},"generated":{"line":59,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":59,"column":0},"generated":{"line":60,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":60,"column":0},"generated":{"line":61,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":61,"column":0},"generated":{"line":62,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":62,"column":0},"generated":{"line":63,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":63,"column":0},"generated":{"line":64,"column":0}},{"source":"node_modules/eth-lib/lib/account.js","original":{"line":64,"column":0},"generated":{"line":65,"column":0}}],"sources":{"node_modules/eth-lib/lib/account.js":"const Bytes = require(\"./bytes\");\nconst Nat = require(\"./nat\");\nconst elliptic = require(\"elliptic\");\nconst rlp = require(\"./rlp\");\nconst secp256k1 = new elliptic.ec(\"secp256k1\"); // eslint-disable-line\nconst { keccak256, keccak256s } = require(\"./hash\");\n\nconst create = entropy => {\n  const innerHex = keccak256(Bytes.concat(Bytes.random(32), entropy || Bytes.random(32)));\n  const middleHex = Bytes.concat(Bytes.concat(Bytes.random(32), innerHex), Bytes.random(32));\n  const outerHex = keccak256(middleHex);\n  return fromPrivate(outerHex);\n};\n\nconst toChecksum = address => {\n  const addressHash = keccak256s(address.slice(2));\n  let checksumAddress = \"0x\";\n  for (let i = 0; i < 40; i++) checksumAddress += parseInt(addressHash[i + 2], 16) > 7 ? address[i + 2].toUpperCase() : address[i + 2];\n  return checksumAddress;\n};\n\nconst fromPrivate = privateKey => {\n  const buffer = new Buffer(privateKey.slice(2), \"hex\");\n  const ecKey = secp256k1.keyFromPrivate(buffer);\n  const publicKey = \"0x\" + ecKey.getPublic(false, 'hex').slice(2);\n  const publicHash = keccak256(publicKey);\n  const address = toChecksum(\"0x\" + publicHash.slice(-40));\n  return {\n    address: address,\n    privateKey: privateKey\n  };\n};\n\nconst encodeSignature = ([v, r, s]) => Bytes.flatten([r, s, v]);\n\nconst decodeSignature = hex => [Bytes.slice(64, Bytes.length(hex), hex), Bytes.slice(0, 32, hex), Bytes.slice(32, 64, hex)];\n\nconst makeSigner = addToV => (hash, privateKey) => {\n  const signature = secp256k1.keyFromPrivate(new Buffer(privateKey.slice(2), \"hex\")).sign(new Buffer(hash.slice(2), \"hex\"), { canonical: true });\n  return encodeSignature([Nat.fromString(Bytes.fromNumber(addToV + signature.recoveryParam)), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.r.toString(16))), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.s.toString(16)))]);\n};\n\nconst sign = makeSigner(27); // v=27|28 instead of 0|1...\n\nconst recover = (hash, signature) => {\n  const vals = decodeSignature(signature);\n  const vrs = { v: Bytes.toNumber(vals[0]), r: vals[1].slice(2), s: vals[2].slice(2) };\n  const ecPublicKey = secp256k1.recoverPubKey(new Buffer(hash.slice(2), \"hex\"), vrs, vrs.v < 2 ? vrs.v : 1 - vrs.v % 2); // because odd vals mean v=0... sadly that means v=0 means v=1... I hate that\n  const publicKey = \"0x\" + ecPublicKey.encode(\"hex\", false).slice(2);\n  const publicHash = keccak256(publicKey);\n  const address = toChecksum(\"0x\" + publicHash.slice(-40));\n  return address;\n};\n\nmodule.exports = {\n  create,\n  toChecksum,\n  fromPrivate,\n  sign,\n  makeSigner,\n  recover,\n  encodeSignature,\n  decodeSignature\n};"},"lineCount":65}},"error":null,"hash":"405cc9979e73e3ac5e1a798da337eb3b","cacheData":{"env":{}}}