UNPKG

@coolwallet/sol

Version:
140 lines (139 loc) 17.1 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.apdu.tx.sendScript(transport, script); }]; action = function action() { return _core.apdu.tx.executeScript(transport, appId, appPrivateKey, argument); }; return _context.abrupt("return", _core.tx.flow.getSingleSignatureFromCoolWalletV2(transport, preActions, action, confirmCB, authorizedCB, _transaction.SignatureType.EDDSA)); 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, confirmCB, authorizedCB, _transaction.SignatureType.EDDSA); 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbWVzc2FnZSIsIl9UcmFuc2FjdGlvbiIsIl92ZXJzaW9uZWRUcmFuc2FjdGlvbiIsIl9zY3JpcHRVdGlsIiwiX3RyYW5zYWN0aW9uIiwiZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zIiwiX3giLCJfeDIiLCJfeDMiLCJfZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInNpZ25EYXRhIiwic2NyaXB0IiwiYXJndW1lbnQiLCJ0cmFuc3BvcnQiLCJhcHBQcml2YXRlS2V5IiwiYXBwSWQiLCJjb25maXJtQ0IiLCJhdXRob3JpemVkQ0IiLCJwcmVBY3Rpb25zIiwiYWN0aW9uIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImFwZHUiLCJ0eCIsInNlbmRTY3JpcHQiLCJleGVjdXRlU2NyaXB0IiwiYWJydXB0IiwiZmxvdyIsImdldFNpbmdsZVNpZ25hdHVyZUZyb21Db29sV2FsbGV0VjIiLCJTaWduYXR1cmVUeXBlIiwiRUREU0EiLCJzdG9wIiwic2lnbkFsbFRyYW5zYWN0aW9ucyIsIl94NCIsIl94NSIsIl9zaWduQWxsVHJhbnNhY3Rpb25zIiwiX2NhbGxlZTIiLCJzaWduVHhEYXRhIiwiX3lpZWxkJGdldFNjcmlwdFNpZ25pIiwiYWN0aW9ucyIsInNpZ25hdHVyZXMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJnZXRTY3JpcHRTaWduaW5nQWN0aW9ucyIsInNlbnQiLCJnZXRTaWduYXR1cmVzRnJvbUNvb2xXYWxsZXRWMiIsIm1hcCIsInNpZ25hdHVyZSIsIlVpbnQ4QXJyYXkiLCJzaWduVHJhbnNhY3Rpb24iLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfc2lnblRyYW5zYWN0aW9uIiwiX2NhbGxlZTMiLCJyYXdUeCIsInNpZ25hdHVyZVVpbnQ4QXJyYXlzIiwic2VyaWFsaXplZFRyYW5zYWN0aW9uIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiTWVzc2FnZSIsIk1lc3NhZ2VWMCIsInRyYW5zYWN0aW9uIiwiVmVyc2lvbmVkVHJhbnNhY3Rpb24iLCJzZXJpYWxpemUiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJUcmFuc2FjdGlvbiIsInRvVHhTdHJpbmciLCJFcnJvciIsInNpZ25NZXNzYWdlIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3NpZ25NZXNzYWdlIiwiX2NhbGxlZTQiLCJzaWduTXNnRGF0YSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zaWduLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR4LCBhcGR1IH0gZnJvbSAnQGNvb2x3YWxsZXQvY29yZSc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2NvbmZpZy90eXBlcyc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlVjAsIFZlcnNpb25lZE1lc3NhZ2UgfSBmcm9tICcuL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdXRpbHMvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVmVyc2lvbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzL3ZlcnNpb25lZFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldFNjcmlwdFNpZ25pbmdBY3Rpb25zIH0gZnJvbSAnLi91dGlscy9zY3JpcHRVdGlsJztcbmltcG9ydCB7IFNpZ25hdHVyZVR5cGUgfSBmcm9tICdAY29vbHdhbGxldC9jb3JlL2xpYi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBzaWduVmVyc2lvbmVkVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9jb25maWcvdHlwZXMnO1xuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoXG4gIHNpZ25EYXRhOiB0eXBlcy5TaWduRGF0YVR5cGUsXG4gIHNjcmlwdDogc3RyaW5nLFxuICBhcmd1bWVudDogc3RyaW5nXG4pOiBQcm9taXNlPEJ1ZmZlciB8IHsgcjogc3RyaW5nOyBzOiBzdHJpbmcgfT4ge1xuICBjb25zdCB7IHRyYW5zcG9ydCwgYXBwUHJpdmF0ZUtleSwgYXBwSWQsIGNvbmZpcm1DQiwgYXV0aG9yaXplZENCIH0gPSBzaWduRGF0YTtcblxuICBjb25zdCBwcmVBY3Rpb25zID0gWygpID0+IGFwZHUudHguc2VuZFNjcmlwdCh0cmFuc3BvcnQsIHNjcmlwdCldO1xuICBjb25zdCBhY3Rpb24gPSAoKSA9PiBhcGR1LnR4LmV4ZWN1dGVTY3JpcHQodHJhbnNwb3J0LCBhcHBJZCwgYXBwUHJpdmF0ZUtleSwgYXJndW1lbnQpO1xuXG4gIHJldHVybiB0eC5mbG93LmdldFNpbmdsZVNpZ25hdHVyZUZyb21Db29sV2FsbGV0VjIoXG4gICAgdHJhbnNwb3J0LFxuICAgIHByZUFjdGlvbnMsXG4gICAgYWN0aW9uLFxuICAgIGNvbmZpcm1DQixcbiAgICBhdXRob3JpemVkQ0IsXG4gICAgU2lnbmF0dXJlVHlwZS5FRERTQVxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaWduQWxsVHJhbnNhY3Rpb25zKFxuICBzaWduVHhEYXRhOiB0eXBlcy5zaWduVmVyc2lvbmVkVHJhbnNhY3Rpb25zLFxuICBwcmVBY3Rpb25zOiBBcnJheTwoKSA9PiBQcm9taXNlPHZvaWQ+PlxuKTogUHJvbWlzZTxBcnJheTxVaW50OEFycmF5Pj4ge1xuICBjb25zdCB7IHRyYW5zcG9ydCwgY29uZmlybUNCLCBhdXRob3JpemVkQ0IgfSA9IHNpZ25UeERhdGE7XG4gIGNvbnN0IHsgYWN0aW9ucyB9ID0gYXdhaXQgZ2V0U2NyaXB0U2lnbmluZ0FjdGlvbnMoc2lnblR4RGF0YSk7XG4gIGNvbnN0IHNpZ25hdHVyZXMgPSAoYXdhaXQgdHguZmxvdy5nZXRTaWduYXR1cmVzRnJvbUNvb2xXYWxsZXRWMihcbiAgICB0cmFuc3BvcnQsXG4gICAgcHJlQWN0aW9ucyxcbiAgICBhY3Rpb25zLFxuICAgIGNvbmZpcm1DQixcbiAgICBhdXRob3JpemVkQ0IsXG4gICAgU2lnbmF0dXJlVHlwZS5FRERTQVxuICApKSBhcyBBcnJheTxCdWZmZXI+O1xuXG4gIHJldHVybiBzaWduYXR1cmVzLm1hcCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaWduVHJhbnNhY3Rpb24oXG4gIHNpZ25UeERhdGE6IHR5cGVzLnNpZ25UeFR5cGUsXG4gIHJhd1R4OiBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZE1lc3NhZ2UsXG4gIHNjcmlwdDogc3RyaW5nLFxuICBhcmd1bWVudDogc3RyaW5nXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzaWduYXR1cmUgPSAoYXdhaXQgZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zKHNpZ25UeERhdGEsIHNjcmlwdCwgYXJndW1lbnQpKSBhcyBCdWZmZXI7XG4gIGlmIChyYXdUeCBpbnN0YW5jZW9mIE1lc3NhZ2UgfHwgcmF3VHggaW5zdGFuY2VvZiBNZXNzYWdlVjApIHtcbiAgICBjb25zdCBzaWduYXR1cmVVaW50OEFycmF5cyA9IChzaWduVHhEYXRhIGFzIHNpZ25WZXJzaW9uZWRUcmFuc2FjdGlvblR5cGUpLnRyYW5zYWN0aW9uLnNpZ25hdHVyZXM7XG4gICAgc2lnbmF0dXJlVWludDhBcnJheXNbMF0gPSBuZXcgVWludDhBcnJheShzaWduYXR1cmUpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUcmFuc2FjdGlvbiA9IG5ldyBWZXJzaW9uZWRUcmFuc2FjdGlvbihyYXdUeCwgc2lnbmF0dXJlVWludDhBcnJheXMpLnNlcmlhbGl6ZSgpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzZXJpYWxpemVkVHJhbnNhY3Rpb24pLnRvU3RyaW5nKCdoZXgnKTtcbiAgfSBlbHNlIGlmIChyYXdUeCBpbnN0YW5jZW9mIFRyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJuIHJhd1R4LnRvVHhTdHJpbmcoc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaWduTWVzc2FnZShzaWduTXNnRGF0YTogdHlwZXMuc2lnbk1zZ1R5cGUsIHNjcmlwdDogc3RyaW5nLCBhcmd1bWVudDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zKHNpZ25Nc2dEYXRhLCBzY3JpcHQsIGFyZ3VtZW50KTtcbiAgcmV0dXJuIHNpZ25hdHVyZS50b1N0cmluZygnaGV4Jyk7XG59XG5leHBvcnQgeyBzaWduVHJhbnNhY3Rpb24sIHNpZ25NZXNzYWdlLCBzaWduQWxsVHJhbnNhY3Rpb25zIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcscUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUFpRSxTQUdsRE0sMkJBQTJCQSxDQUFBQyxFQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQTtFQUFBLE9BQUFDLDRCQUFBLENBQUFDLEtBQUEsT0FBQUMsU0FBQTtBQUFBO0FBQUEsU0FBQUYsNkJBQUE7RUFBQUEsNEJBQUEsT0FBQUcsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUExQyxTQUFBQyxRQUNFQyxRQUE0QixFQUM1QkMsTUFBYyxFQUNkQyxRQUFnQjtJQUFBLElBQUFDLFNBQUEsRUFBQUMsYUFBQSxFQUFBQyxLQUFBLEVBQUFDLFNBQUEsRUFBQUMsWUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUE7SUFBQSxPQUFB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