UNPKG

@coolwallet/sol

Version:
132 lines (131 loc) 16.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.signAllTransactions = signAllTransactions; exports.signMessage = signMessage; exports.signTransaction = signTransaction; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _core = require("@coolwallet/core"); var _message = require("./message"); var _Transaction = require("./utils/Transaction"); var _versionedTransaction = require("./utils/versionedTransaction"); var _scriptUtil = require("./utils/scriptUtil"); var _transaction = require("@coolwallet/core/lib/transaction"); function executeScriptWithPreActions(_x, _x2, _x3) { return _executeScriptWithPreActions.apply(this, arguments); } function _executeScriptWithPreActions() { _executeScriptWithPreActions = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(signData, script, argument) { var transport, appPrivateKey, appId, confirmCB, authorizedCB, preActions, action; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: transport = signData.transport, appPrivateKey = signData.appPrivateKey, appId = signData.appId, confirmCB = signData.confirmCB, authorizedCB = signData.authorizedCB; preActions = [function () { return _core.tx.command.sendScript(transport, script); }]; action = function action() { return _core.tx.command.executeScript(transport, appId, appPrivateKey, argument); }; return _context.abrupt("return", _core.tx.flow.getSingleSignatureFromCoolWalletV2(transport, preActions, action, _transaction.SignatureType.EDDSA, confirmCB, authorizedCB)); case 4: case "end": return _context.stop(); } }, _callee); })); return _executeScriptWithPreActions.apply(this, arguments); } function signAllTransactions(_x4, _x5) { return _signAllTransactions.apply(this, arguments); } function _signAllTransactions() { _signAllTransactions = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(signTxData, preActions) { var transport, confirmCB, authorizedCB, _yield$getScriptSigni, actions, signatures; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: transport = signTxData.transport, confirmCB = signTxData.confirmCB, authorizedCB = signTxData.authorizedCB; _context2.next = 3; return (0, _scriptUtil.getScriptSigningActions)(signTxData); case 3: _yield$getScriptSigni = _context2.sent; actions = _yield$getScriptSigni.actions; _context2.next = 7; return _core.tx.flow.getSignaturesFromCoolWalletV2(transport, preActions, actions, _transaction.SignatureType.EDDSA, confirmCB, authorizedCB); case 7: signatures = _context2.sent; return _context2.abrupt("return", signatures.map(function (signature) { return new Uint8Array(signature); })); case 9: case "end": return _context2.stop(); } }, _callee2); })); return _signAllTransactions.apply(this, arguments); } function signTransaction(_x6, _x7, _x8, _x9) { return _signTransaction.apply(this, arguments); } function _signTransaction() { _signTransaction = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(signTxData, rawTx, script, argument) { var signature, signatureUint8Arrays, serializedTransaction; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return executeScriptWithPreActions(signTxData, script, argument); case 2: signature = _context3.sent; if (!(rawTx instanceof _message.Message || rawTx instanceof _message.MessageV0)) { _context3.next = 10; break; } signatureUint8Arrays = signTxData.transaction.signatures; signatureUint8Arrays[0] = new Uint8Array(signature); serializedTransaction = new _versionedTransaction.VersionedTransaction(rawTx, signatureUint8Arrays).serialize(); return _context3.abrupt("return", Buffer.from(serializedTransaction).toString('hex')); case 10: if (!(rawTx instanceof _Transaction.Transaction)) { _context3.next = 14; break; } return _context3.abrupt("return", rawTx.toTxString(signature.toString('hex'))); case 14: throw new Error('Invalid transaction type'); case 15: case "end": return _context3.stop(); } }, _callee3); })); return _signTransaction.apply(this, arguments); } function signMessage(_x10, _x11, _x12) { return _signMessage.apply(this, arguments); } function _signMessage() { _signMessage = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(signMsgData, script, argument) { var signature; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return executeScriptWithPreActions(signMsgData, script, argument); case 2: signature = _context4.sent; return _context4.abrupt("return", signature.toString('hex')); case 4: case "end": return _context4.stop(); } }, _callee4); })); return _signMessage.apply(this, arguments); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbWVzc2FnZSIsIl9UcmFuc2FjdGlvbiIsIl92ZXJzaW9uZWRUcmFuc2FjdGlvbiIsIl9zY3JpcHRVdGlsIiwiX3RyYW5zYWN0aW9uIiwiZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zIiwiX3giLCJfeDIiLCJfeDMiLCJfZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInNpZ25EYXRhIiwic2NyaXB0IiwiYXJndW1lbnQiLCJ0cmFuc3BvcnQiLCJhcHBQcml2YXRlS2V5IiwiYXBwSWQiLCJjb25maXJtQ0IiLCJhdXRob3JpemVkQ0IiLCJwcmVBY3Rpb25zIiwiYWN0aW9uIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInR4IiwiY29tbWFuZCIsInNlbmRTY3JpcHQiLCJleGVjdXRlU2NyaXB0IiwiYWJydXB0IiwiZmxvdyIsImdldFNpbmdsZVNpZ25hdHVyZUZyb21Db29sV2FsbGV0VjIiLCJTaWduYXR1cmVUeXBlIiwiRUREU0EiLCJzdG9wIiwic2lnbkFsbFRyYW5zYWN0aW9ucyIsIl94NCIsIl94NSIsIl9zaWduQWxsVHJhbnNhY3Rpb25zIiwiX2NhbGxlZTIiLCJzaWduVHhEYXRhIiwiX3lpZWxkJGdldFNjcmlwdFNpZ25pIiwiYWN0aW9ucyIsInNpZ25hdHVyZXMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJnZXRTY3JpcHRTaWduaW5nQWN0aW9ucyIsInNlbnQiLCJnZXRTaWduYXR1cmVzRnJvbUNvb2xXYWxsZXRWMiIsIm1hcCIsInNpZ25hdHVyZSIsIlVpbnQ4QXJyYXkiLCJzaWduVHJhbnNhY3Rpb24iLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfc2lnblRyYW5zYWN0aW9uIiwiX2NhbGxlZTMiLCJyYXdUeCIsInNpZ25hdHVyZVVpbnQ4QXJyYXlzIiwic2VyaWFsaXplZFRyYW5zYWN0aW9uIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiTWVzc2FnZSIsIk1lc3NhZ2VWMCIsInRyYW5zYWN0aW9uIiwiVmVyc2lvbmVkVHJhbnNhY3Rpb24iLCJzZXJpYWxpemUiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJUcmFuc2FjdGlvbiIsInRvVHhTdHJpbmciLCJFcnJvciIsInNpZ25NZXNzYWdlIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3NpZ25NZXNzYWdlIiwiX2NhbGxlZTQiLCJzaWduTXNnRGF0YSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zaWduLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR4IH0gZnJvbSAnQGNvb2x3YWxsZXQvY29yZSc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2NvbmZpZy90eXBlcyc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlVjAsIFZlcnNpb25lZE1lc3NhZ2UgfSBmcm9tICcuL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdXRpbHMvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVmVyc2lvbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzL3ZlcnNpb25lZFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldFNjcmlwdFNpZ25pbmdBY3Rpb25zIH0gZnJvbSAnLi91dGlscy9zY3JpcHRVdGlsJztcbmltcG9ydCB7IFNpZ25hdHVyZVR5cGUgfSBmcm9tICdAY29vbHdhbGxldC9jb3JlL2xpYi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBzaWduVmVyc2lvbmVkVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9jb25maWcvdHlwZXMnO1xuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoXG4gIHNpZ25EYXRhOiB0eXBlcy5TaWduRGF0YVR5cGUsXG4gIHNjcmlwdDogc3RyaW5nLFxuICBhcmd1bWVudDogc3RyaW5nXG4pOiBQcm9taXNlPEJ1ZmZlciB8IHsgcjogc3RyaW5nOyBzOiBzdHJpbmcgfT4ge1xuICBjb25zdCB7IHRyYW5zcG9ydCwgYXBwUHJpdmF0ZUtleSwgYXBwSWQsIGNvbmZpcm1DQiwgYXV0aG9yaXplZENCIH0gPSBzaWduRGF0YTtcblxuICBjb25zdCBwcmVBY3Rpb25zID0gWygpID0+IHR4LmNvbW1hbmQuc2VuZFNjcmlwdCh0cmFuc3BvcnQsIHNjcmlwdCldO1xuICBjb25zdCBhY3Rpb24gPSAoKSA9PiB0eC5jb21tYW5kLmV4ZWN1dGVTY3JpcHQodHJhbnNwb3J0LCBhcHBJZCwgYXBwUHJpdmF0ZUtleSwgYXJndW1lbnQpO1xuXG4gIHJldHVybiB0eC5mbG93LmdldFNpbmdsZVNpZ25hdHVyZUZyb21Db29sV2FsbGV0VjIoXG4gICAgdHJhbnNwb3J0LFxuICAgIHByZUFjdGlvbnMsXG4gICAgYWN0aW9uLFxuICAgIFNpZ25hdHVyZVR5cGUuRUREU0EsXG4gICAgY29uZmlybUNCLFxuICAgIGF1dGhvcml6ZWRDQixcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2lnbkFsbFRyYW5zYWN0aW9ucyhcbiAgc2lnblR4RGF0YTogdHlwZXMuc2lnblZlcnNpb25lZFRyYW5zYWN0aW9ucyxcbiAgcHJlQWN0aW9uczogQXJyYXk8KCkgPT4gUHJvbWlzZTx2b2lkPj5cbik6IFByb21pc2U8QXJyYXk8VWludDhBcnJheT4+IHtcbiAgY29uc3QgeyB0cmFuc3BvcnQsIGNvbmZpcm1DQiwgYXV0aG9yaXplZENCIH0gPSBzaWduVHhEYXRhO1xuICBjb25zdCB7IGFjdGlvbnMgfSA9IGF3YWl0IGdldFNjcmlwdFNpZ25pbmdBY3Rpb25zKHNpZ25UeERhdGEpO1xuICBjb25zdCBzaWduYXR1cmVzID0gKGF3YWl0IHR4LmZsb3cuZ2V0U2lnbmF0dXJlc0Zyb21Db29sV2FsbGV0VjIoXG4gICAgdHJhbnNwb3J0LFxuICAgIHByZUFjdGlvbnMsXG4gICAgYWN0aW9ucyxcbiAgICBTaWduYXR1cmVUeXBlLkVERFNBLFxuICAgIGNvbmZpcm1DQixcbiAgICBhdXRob3JpemVkQ0IsXG4gICkpIGFzIEFycmF5PEJ1ZmZlcj47XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXMubWFwKChzaWduYXR1cmUpID0+IHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbihcbiAgc2lnblR4RGF0YTogdHlwZXMuc2lnblR4VHlwZSxcbiAgcmF3VHg6IFRyYW5zYWN0aW9uIHwgVmVyc2lvbmVkTWVzc2FnZSxcbiAgc2NyaXB0OiBzdHJpbmcsXG4gIGFyZ3VtZW50OiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IChhd2FpdCBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoc2lnblR4RGF0YSwgc2NyaXB0LCBhcmd1bWVudCkpIGFzIEJ1ZmZlcjtcbiAgaWYgKHJhd1R4IGluc3RhbmNlb2YgTWVzc2FnZSB8fCByYXdUeCBpbnN0YW5jZW9mIE1lc3NhZ2VWMCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVVpbnQ4QXJyYXlzID0gKHNpZ25UeERhdGEgYXMgc2lnblZlcnNpb25lZFRyYW5zYWN0aW9uVHlwZSkudHJhbnNhY3Rpb24uc2lnbmF0dXJlcztcbiAgICBzaWduYXR1cmVVaW50OEFycmF5c1swXSA9IG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFRyYW5zYWN0aW9uID0gbmV3IFZlcnNpb25lZFRyYW5zYWN0aW9uKHJhd1R4LCBzaWduYXR1cmVVaW50OEFycmF5cykuc2VyaWFsaXplKCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbikudG9TdHJpbmcoJ2hleCcpO1xuICB9IGVsc2UgaWYgKHJhd1R4IGluc3RhbmNlb2YgVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gcmF3VHgudG9UeFN0cmluZyhzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNpZ25NZXNzYWdlKHNpZ25Nc2dEYXRhOiB0eXBlcy5zaWduTXNnVHlwZSwgc2NyaXB0OiBzdHJpbmcsIGFyZ3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoc2lnbk1zZ0RhdGEsIHNjcmlwdCwgYXJndW1lbnQpO1xuICByZXR1cm4gc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKTtcbn1cbmV4cG9ydCB7IHNpZ25UcmFuc2FjdGlvbiwgc2lnbk1lc3NhZ2UsIHNpZ25BbGxUcmFuc2FjdGlvbnMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxxQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQWlFLFNBR2xETSwyQkFBMkJBLENBQUFDLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO0VBQUEsT0FBQUMsNEJBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0FBQUE7QUFBQSxTQUFBRiw2QkFBQTtFQUFBQSw0QkFBQSxPQUFBRyxrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQTFDLFNBQUFDLFFBQ0VDLFFBQTRCLEVBQzVCQyxNQUFjLEVBQ2RDLFFBQWdCO0lBQUEsSUFBQUMsU0FBQSxFQUFBQyxhQUFBLEVBQUFDLEtBQUEsRUFBQUMsU0FBQSxFQUFBQyxZQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQTtJQUFB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