@volare.finance/utils.js
Version:
The Blockchain Utils
44 lines • 1.68 kB
JavaScript
;
/**
* @file eip712.ts
* @author astra <astra@volare.finance>
* @date 2022
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.recoverAddress = exports.getSignature = exports.getHash = exports.SignatureType = void 0;
const tslib_1 = require("tslib");
const bytes_1 = require("@ethersproject/bytes");
const hash_1 = require("@ethersproject/hash");
const wallet_1 = require("@ethersproject/wallet");
var SignatureType;
(function (SignatureType) {
SignatureType[SignatureType["Illegal"] = 0] = "Illegal";
SignatureType[SignatureType["Invalid"] = 1] = "Invalid";
SignatureType[SignatureType["EIP712"] = 2] = "EIP712";
SignatureType[SignatureType["EthSign"] = 3] = "EthSign";
})(SignatureType = exports.SignatureType || (exports.SignatureType = {}));
function getHash(data) {
return hash_1._TypedDataEncoder.hash(data.domain, data.types, data.message);
}
exports.getHash = getHash;
function getSignature(signer, data) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const bytes = yield signer._signTypedData(data.domain, data.types, data.message);
const signature = (0, bytes_1.splitSignature)(bytes);
return [
{
v: signature.v,
r: signature.r,
s: signature.s,
signatureType: SignatureType.EIP712,
},
bytes,
];
});
}
exports.getSignature = getSignature;
function recoverAddress(data, signature) {
return (0, wallet_1.verifyTypedData)(data.domain, data.types, data.message, signature);
}
exports.recoverAddress = recoverAddress;
//# sourceMappingURL=eip712.js.map