UNPKG

@ixily/activ

Version:

Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.

68 lines 3.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateHashedSignedMessage = exports.getHashedSignedMessage = exports.getSignedMessage = exports.splitSignature = exports.getHashedMessage = exports.uInt8ArrayFromString = exports.uInt8ArrayFromHexString = exports.id = exports.randomKeyWithLength = exports.CryptoJs = void 0; const crypto_js_1 = __importDefault(require("crypto-js")); Object.defineProperty(exports, "CryptoJs", { enumerable: true, get: function () { return crypto_js_1.default; } }); const ethers_1 = require("ethers"); const randomKeyWithLength = (length) => crypto_js_1.default.lib.WordArray.random(length).toString(); exports.randomKeyWithLength = randomKeyWithLength; const id = () => { return (0, exports.randomKeyWithLength)(24); }; exports.id = id; const uInt8ArrayFromHexString = (hexString) => Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16))); exports.uInt8ArrayFromHexString = uInt8ArrayFromHexString; const uInt8ArrayFromString = (str) => { let utf8Encode = new TextEncoder(); return utf8Encode.encode(str); }; exports.uInt8ArrayFromString = uInt8ArrayFromString; const hashString = (valueStr) => { return ethers_1.ethers.utils.keccak256(ethers_1.ethers.utils.toUtf8Bytes(valueStr)); }; const getHashedMessage = (originalMessage) => { const hashedMessage = hashString(originalMessage); return { originalMessage, hashedMessage, }; }; exports.getHashedMessage = getHashedMessage; const splitSignature = (signature) => { const r = signature.slice(0, 66); const s = '0x' + signature.slice(66, 130); const v = parseInt(signature.slice(130, 132), 16); return { r, s, v }; }; exports.splitSignature = splitSignature; const getSignedMessage = async (hashedMessage, signer) => { const signature = await signer.signMessage(hashedMessage.hashedMessage); return { ...hashedMessage, signature, ...(0, exports.splitSignature)(signature), }; }; exports.getSignedMessage = getSignedMessage; const getHashedSignedMessage = (originalMessage, signer) => { return (0, exports.getSignedMessage)((0, exports.getHashedMessage)(originalMessage), signer); }; exports.getHashedSignedMessage = getHashedSignedMessage; const validateHashedSignedMessage = async (hashedSignedMessage, expectedAddress) => { const probeHashed = (0, exports.getHashedMessage)(hashedSignedMessage.originalMessage); if (probeHashed.originalMessage !== hashedSignedMessage.originalMessage) { throw new Error('The hashed message does not match original message'); } const signerAddr = await ethers_1.ethers.utils.verifyMessage(hashedSignedMessage.hashedMessage, hashedSignedMessage.signature); if (expectedAddress !== undefined) { if (signerAddr !== expectedAddress) { throw new Error(`Signature address mismatch. Expected ${expectedAddress}, got ${signerAddr}`); } } return signerAddr; }; exports.validateHashedSignedMessage = validateHashedSignedMessage; //# sourceMappingURL=crypto.tool.js.map