UNPKG

react-native-eth-typed-data

Version:

A library to simplifiy interacting with and signing EIP712 typed data

50 lines (38 loc) 1.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.verify = verify; exports.verifyRawSignatureFromAddress = verifyRawSignatureFromAddress; var _ethers = require("ethers"); var _buffer = require("buffer"); var _Domain = _interopRequireDefault(require("./Domain")); /** * Verify that a particular object was signed by a given */ function verify(request, signature, address) { var _EIP712Domain$fromSig = _Domain["default"].fromSignatureRequest(request), domain = _EIP712Domain$fromSig.domain, message = _EIP712Domain$fromSig.message; if (!message.verifySignature(signature, address)) { throw new Error('Invalid signature for address over this object'); } return { domain: domain, message: message }; } /** * Verify a signed hash made by the owner of a particular ethereum address * returning true if the signature is valid, and false otherwise * @param {Buffer} data qq * @param {Object} signature * @param {String} address * @returns {Boolean} indicator of the signature's validity */ function verifyRawSignatureFromAddress(data, signature, address) { var normalizedAddress = _ethers.ethers.utils.getAddress(address); return _ethers.ethers.utils.verifyMessage(_ethers.ethers.utils.arrayify(data), signature) === normalizedAddress; } ;