react-native-eth-typed-data
Version:
A library to simplifiy interacting with and signing EIP712 typed data
50 lines (38 loc) • 1.43 kB
JavaScript
;
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;
}
;