UNPKG

@coolwallet/sol

Version:
59 lines (56 loc) 8.75 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.is_on_curve = is_on_curve; var _tweetnacl = _interopRequireDefault(require("tweetnacl")); /* eslint-disable */ // @ts-ignore var naclLowLevel = _tweetnacl["default"].lowlevel; function neq25519(a, b) { var c = new Uint8Array(32), d = new Uint8Array(32); naclLowLevel.pack25519(c, a); naclLowLevel.pack25519(d, b); return naclLowLevel.crypto_verify_32(c, 0, d, 0); } // Check that a pubkey is on the curve. // This function and its dependents were sourced from: // https://github.com/dchest/tweetnacl-js/blob/f1ec050ceae0861f34280e62498b1d3ed9c350c6/nacl.js#L792 function is_on_curve(p) { var r = [naclLowLevel.gf(), naclLowLevel.gf(), naclLowLevel.gf(), naclLowLevel.gf()]; var t = naclLowLevel.gf(), chk = naclLowLevel.gf(), num = naclLowLevel.gf(), den = naclLowLevel.gf(), den2 = naclLowLevel.gf(), den4 = naclLowLevel.gf(), den6 = naclLowLevel.gf(); naclLowLevel.set25519(r[2], gf1); naclLowLevel.unpack25519(r[1], p); naclLowLevel.S(num, r[1]); naclLowLevel.M(den, num, naclLowLevel.D); naclLowLevel.Z(num, num, r[2]); naclLowLevel.A(den, r[2], den); naclLowLevel.S(den2, den); naclLowLevel.S(den4, den2); naclLowLevel.M(den6, den4, den2); naclLowLevel.M(t, den6, num); naclLowLevel.M(t, t, den); naclLowLevel.pow2523(t, t); naclLowLevel.M(t, t, num); naclLowLevel.M(t, t, den); naclLowLevel.M(t, t, den); naclLowLevel.M(r[0], t, den); naclLowLevel.S(chk, r[0]); naclLowLevel.M(chk, chk, den); if (neq25519(chk, num)) naclLowLevel.M(r[0], r[0], I); naclLowLevel.S(chk, r[0]); naclLowLevel.M(chk, chk, den); if (neq25519(chk, num)) return 0; return 1; } var gf1 = naclLowLevel.gf([1]); var I = naclLowLevel.gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHdlZXRuYWNsIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJuYWNsTG93TGV2ZWwiLCJuYWNsIiwibG93bGV2ZWwiLCJuZXEyNTUxOSIsImEiLCJiIiwiYyIsIlVpbnQ4QXJyYXkiLCJkIiwicGFjazI1NTE5IiwiY3J5cHRvX3ZlcmlmeV8zMiIsImlzX29uX2N1cnZlIiwicCIsInIiLCJnZiIsInQiLCJjaGsiLCJudW0iLCJkZW4iLCJkZW4yIiwiZGVuNCIsImRlbjYiLCJzZXQyNTUxOSIsImdmMSIsInVucGFjazI1NTE5IiwiUyIsIk0iLCJEIiwiWiIsIkEiLCJwb3cyNTIzIiwiSSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lZDI1NTE5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuLy8gQHRzLWlnbm9yZVxubGV0IG5hY2xMb3dMZXZlbCA9IG5hY2wubG93bGV2ZWw7XG5cbmZ1bmN0aW9uIG5lcTI1NTE5KGE6IGFueSwgYjogYW55KSB7XG4gIHZhciBjID0gbmV3IFVpbnQ4QXJyYXkoMzIpLFxuICAgIGQgPSBuZXcgVWludDhBcnJheSgzMik7XG4gIG5hY2xMb3dMZXZlbC5wYWNrMjU1MTkoYywgYSk7XG4gIG5hY2xMb3dMZXZlbC5wYWNrMjU1MTkoZCwgYik7XG4gIHJldHVybiBuYWNsTG93TGV2ZWwuY3J5cHRvX3ZlcmlmeV8zMihjLCAwLCBkLCAwKTtcbn1cblxuLy8gQ2hlY2sgdGhhdCBhIHB1YmtleSBpcyBvbiB0aGUgY3VydmUuXG4vLyBUaGlzIGZ1bmN0aW9uIGFuZCBpdHMgZGVwZW5kZW50cyB3ZXJlIHNvdXJjZWQgZnJvbTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kY2hlc3QvdHdlZXRuYWNsLWpzL2Jsb2IvZjFlYzA1MGNlYWUwODYxZjM0MjgwZTYyNDk4YjFkM2VkOWMzNTBjNi9uYWNsLmpzI0w3OTJcbmZ1bmN0aW9uIGlzX29uX2N1cnZlKHA6IGFueSkge1xuICB2YXIgciA9IFtuYWNsTG93TGV2ZWwuZ2YoKSwgbmFjbExvd0xldmVsLmdmKCksIG5hY2xMb3dMZXZlbC5nZigpLCBuYWNsTG93TGV2ZWwuZ2YoKV07XG5cbiAgdmFyIHQgPSBuYWNsTG93TGV2ZWwuZ2YoKSxcbiAgICBjaGsgPSBuYWNsTG93TGV2ZWwuZ2YoKSxcbiAgICBudW0gPSBuYWNsTG93TGV2ZWwuZ2YoKSxcbiAgICBkZW4gPSBuYWNsTG93TGV2ZWwuZ2YoKSxcbiAgICBkZW4yID0gbmFjbExvd0xldmVsLmdmKCksXG4gICAgZGVuNCA9IG5hY2xMb3dMZXZlbC5nZigpLFxuICAgIGRlbjYgPSBuYWNsTG93TGV2ZWwuZ2YoKTtcblxuICBuYWNsTG93TGV2ZWwuc2V0MjU1MTkoclsyXSwgZ2YxKTtcbiAgbmFjbExvd0xldmVsLnVucGFjazI1NTE5KHJbMV0sIHApO1xuICBuYWNsTG93TGV2ZWwuUyhudW0sIHJbMV0pO1xuICBuYWNsTG93TGV2ZWwuTShkZW4sIG51bSwgbmFjbExvd0xldmVsLkQpO1xuICBuYWNsTG93TGV2ZWwuWihudW0sIG51bSwgclsyXSk7XG4gIG5hY2xMb3dMZXZlbC5BKGRlbiwgclsyXSwgZGVuKTtcblxuICBuYWNsTG93TGV2ZWwuUyhkZW4yLCBkZW4pO1xuICBuYWNsTG93TGV2ZWwuUyhkZW40LCBkZW4yKTtcbiAgbmFjbExvd0xldmVsLk0oZGVuNiwgZGVuNCwgZGVuMik7XG4gIG5hY2xMb3dMZXZlbC5NKHQsIGRlbjYsIG51bSk7XG4gIG5hY2xMb3dMZXZlbC5NKHQsIHQsIGRlbik7XG5cbiAgbmFjbExvd0xldmVsLnBvdzI1MjModCwgdCk7XG4gIG5hY2xMb3dMZXZlbC5NKHQsIHQsIG51bSk7XG4gIG5hY2xMb3dMZXZlbC5NKHQsIHQsIGRlbik7XG4gIG5hY2xMb3dMZXZlbC5NKHQsIHQsIGRlbik7XG4gIG5hY2xMb3dMZXZlbC5NKHJbMF0sIHQsIGRlbik7XG5cbiAgbmFjbExvd0xldmVsLlMoY2hrLCByWzBdKTtcbiAgbmFjbExvd0xldmVsLk0oY2hrLCBjaGssIGRlbik7XG4gIGlmIChuZXEyNTUxOShjaGssIG51bSkpIG5hY2xMb3dMZXZlbC5NKHJbMF0sIHJbMF0sIEkpO1xuXG4gIG5hY2xMb3dMZXZlbC5TKGNoaywgclswXSk7XG4gIG5hY2xMb3dMZXZlbC5NKGNoaywgY2hrLCBkZW4pO1xuICBpZiAobmVxMjU1MTkoY2hrLCBudW0pKSByZXR1cm4gMDtcbiAgcmV0dXJuIDE7XG59XG5sZXQgZ2YxID0gbmFjbExvd0xldmVsLmdmKFsxXSk7XG5sZXQgSSA9IG5hY2xMb3dMZXZlbC5nZihbXG4gIDB4YTBiMCwgMHg0YTBlLCAweDFiMjcsIDB4YzRlZSwgMHhlNDc4LCAweGFkMmYsIDB4MTgwNiwgMHgyZjQzLCAweGQ3YTcsIDB4M2RmYiwgMHgwMDk5LCAweDJiNGQsIDB4ZGYwYiwgMHg0ZmMxLFxuICAweDI0ODAsIDB4MmI4Myxcbl0pO1xuXG5leHBvcnQgeyBpc19vbl9jdXJ2ZSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBREE7O0FBRUE7QUFDQSxJQUFJQyxZQUFZLEdBQUdDLHFCQUFJLENBQUNDLFFBQVE7QUFFaEMsU0FBU0MsUUFBUUEsQ0FBQ0MsQ0FBTSxFQUFFQyxDQUFNLEVBQUU7RUFDaEMsSUFBSUMsQ0FBQyxHQUFHLElBQUlDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDeEJDLENBQUMsR0FBRyxJQUFJRCxVQUFVLENBQUMsRUFBRSxDQUFDO0VBQ3hCUCxZQUFZLENBQUNTLFNBQVMsQ0FBQ0gsQ0FBQyxFQUFFRixDQUFDLENBQUM7RUFDNUJKLFlBQVksQ0FBQ1MsU0FBUyxDQUFDRCxDQUFDLEVBQUVILENBQUMsQ0FBQztFQUM1QixPQUFPTCxZQUFZLENBQUNVLGdCQUFnQixDQUFDSixDQUFDLEVBQUUsQ0FBQyxFQUFFRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVNHLFdB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