@shapeshiftoss/hdwallet-portis 1.55.4-alpha.1 → 1.55.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter.js +104 -64
- package/dist/adapter.js.map +1 -1
- package/dist/bitcoin.js +132 -72
- package/dist/bitcoin.js.map +1 -1
- package/dist/ethereum.js +75 -30
- package/dist/ethereum.js.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/portis.js +264 -141
- package/dist/portis.js.map +1 -1
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -1
package/dist/adapter.js
CHANGED
|
@@ -1,14 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.PortisAdapter = void 0;
|
|
39
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
40
|
+
const p_lazy_1 = __importDefault(require("p-lazy"));
|
|
41
|
+
const portis_1 = require("./portis");
|
|
42
|
+
const Portis = p_lazy_1.default.from(() => __awaiter(void 0, void 0, void 0, function* () { return (yield Promise.resolve().then(() => __importStar(require("@portis/web3")))).default; }));
|
|
5
43
|
const INACTIVITY_LOGOUT_TIME = 10 * 60 * 1000;
|
|
6
|
-
|
|
7
|
-
keyring;
|
|
8
|
-
portis;
|
|
9
|
-
portisAppId;
|
|
10
|
-
/// wallet id to remove from the keyring when the active wallet changes
|
|
11
|
-
currentDeviceId;
|
|
44
|
+
class PortisAdapter {
|
|
12
45
|
constructor(keyring, args) {
|
|
13
46
|
this.portis = args.portis;
|
|
14
47
|
this.portisAppId = args.portisAppId;
|
|
@@ -17,67 +50,74 @@ export class PortisAdapter {
|
|
|
17
50
|
static useKeyring(keyring, args) {
|
|
18
51
|
return new PortisAdapter(keyring, args);
|
|
19
52
|
}
|
|
20
|
-
|
|
21
|
-
return
|
|
53
|
+
initialize() {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
return Object.keys(this.keyring.wallets).length;
|
|
56
|
+
});
|
|
22
57
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
58
|
+
pairDevice() {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
try {
|
|
61
|
+
const wallet = yield this.pairPortisDevice();
|
|
62
|
+
this.portis.onActiveWalletChanged((wallAddr) => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
// check if currentDeviceId has changed
|
|
64
|
+
const walletAddress = "portis:" + wallAddr;
|
|
65
|
+
if (!this.currentDeviceId || walletAddress.toLowerCase() !== this.currentDeviceId.toLowerCase()) {
|
|
66
|
+
const currentDeviceId = this.currentDeviceId;
|
|
67
|
+
if (currentDeviceId) {
|
|
68
|
+
this.keyring.emit(["Portis", currentDeviceId, core.Events.DISCONNECT], currentDeviceId);
|
|
69
|
+
this.keyring.remove(currentDeviceId);
|
|
70
|
+
}
|
|
71
|
+
this.pairPortisDevice();
|
|
34
72
|
}
|
|
35
|
-
|
|
73
|
+
}));
|
|
74
|
+
this.portis.onLogout(() => {
|
|
75
|
+
const currentDeviceId = this.currentDeviceId;
|
|
76
|
+
if (!currentDeviceId)
|
|
77
|
+
return;
|
|
78
|
+
this.keyring.emit(["Portis", currentDeviceId, core.Events.DISCONNECT], currentDeviceId);
|
|
79
|
+
this.keyring.remove(currentDeviceId);
|
|
80
|
+
});
|
|
81
|
+
return wallet;
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
if (core.isIndexable(e) && String(e.message).includes("User denied login.")) {
|
|
85
|
+
throw new core.ActionCancelled();
|
|
36
86
|
}
|
|
37
|
-
|
|
38
|
-
this.portis.onLogout(() => {
|
|
39
|
-
const currentDeviceId = this.currentDeviceId;
|
|
40
|
-
if (!currentDeviceId)
|
|
41
|
-
return;
|
|
42
|
-
this.keyring.emit(["Portis", currentDeviceId, core.Events.DISCONNECT], currentDeviceId);
|
|
43
|
-
this.keyring.remove(currentDeviceId);
|
|
44
|
-
});
|
|
45
|
-
return wallet;
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
if (core.isIndexable(e) && String(e.message).includes("User denied login.")) {
|
|
49
|
-
throw new core.ActionCancelled();
|
|
87
|
+
throw e;
|
|
50
88
|
}
|
|
51
|
-
|
|
52
|
-
}
|
|
89
|
+
});
|
|
53
90
|
}
|
|
54
|
-
|
|
55
|
-
this
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
time = setTimeout(() => {
|
|
67
|
-
window.onload = null;
|
|
68
|
-
document.onmousemove = null;
|
|
69
|
-
document.onkeypress = null;
|
|
91
|
+
pairPortisDevice() {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
this.portis = new (yield Portis)(this.portisAppId, "mainnet");
|
|
94
|
+
const wallet = new portis_1.PortisHDWallet(this.portis);
|
|
95
|
+
yield wallet.initialize();
|
|
96
|
+
const deviceId = yield wallet.getDeviceID();
|
|
97
|
+
this.keyring.add(wallet, deviceId);
|
|
98
|
+
this.currentDeviceId = deviceId;
|
|
99
|
+
this.keyring.emit(["Portis", deviceId, core.Events.CONNECT], deviceId);
|
|
100
|
+
const watchForInactivity = () => {
|
|
101
|
+
let time;
|
|
102
|
+
const resetTimer = () => {
|
|
70
103
|
clearTimeout(time);
|
|
71
|
-
|
|
72
|
-
|
|
104
|
+
time = setTimeout(() => {
|
|
105
|
+
window.onload = null;
|
|
106
|
+
document.onmousemove = null;
|
|
107
|
+
document.onkeypress = null;
|
|
108
|
+
clearTimeout(time);
|
|
109
|
+
this.portis.logout();
|
|
110
|
+
}, INACTIVITY_LOGOUT_TIME);
|
|
111
|
+
};
|
|
112
|
+
window.onload = resetTimer;
|
|
113
|
+
document.onmousemove = resetTimer;
|
|
114
|
+
document.onkeypress = resetTimer;
|
|
115
|
+
resetTimer();
|
|
73
116
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
resetTimer();
|
|
78
|
-
};
|
|
79
|
-
watchForInactivity();
|
|
80
|
-
return wallet;
|
|
117
|
+
watchForInactivity();
|
|
118
|
+
return wallet;
|
|
119
|
+
});
|
|
81
120
|
}
|
|
82
121
|
}
|
|
122
|
+
exports.PortisAdapter = PortisAdapter;
|
|
83
123
|
//# sourceMappingURL=adapter.js.map
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/bitcoin.js
CHANGED
|
@@ -1,9 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.describeUTXOPath = describeUTXOPath;
|
|
39
|
+
exports.verifyScriptTypePurpose = verifyScriptTypePurpose;
|
|
40
|
+
exports.btcGetAddress = btcGetAddress;
|
|
41
|
+
exports.legacyAccount = legacyAccount;
|
|
42
|
+
exports.segwitAccount = segwitAccount;
|
|
43
|
+
exports.segwitNativeAccount = segwitNativeAccount;
|
|
44
|
+
exports.btcNextAccountPath = btcNextAccountPath;
|
|
45
|
+
exports.btcGetAccountPaths = btcGetAccountPaths;
|
|
46
|
+
exports.btcSupportsScriptType = btcSupportsScriptType;
|
|
47
|
+
exports.btcSupportsCoin = btcSupportsCoin;
|
|
48
|
+
exports.btcSignTx = btcSignTx;
|
|
49
|
+
exports.btcVerifyMessage = btcVerifyMessage;
|
|
50
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
51
|
+
const base64_js_1 = __importDefault(require("base64-js"));
|
|
52
|
+
const bip32 = __importStar(require("bip32"));
|
|
53
|
+
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
54
|
+
const bitcoinMsg = __importStar(require("bitcoinjs-message"));
|
|
55
|
+
function describeUTXOPath(path, coin, scriptType) {
|
|
56
|
+
var _a;
|
|
7
57
|
const pathStr = core.addressNListToBIP32(path);
|
|
8
58
|
const unknown = {
|
|
9
59
|
verbose: pathStr,
|
|
@@ -26,11 +76,11 @@ export function describeUTXOPath(path, coin, scriptType) {
|
|
|
26
76
|
return unknown;
|
|
27
77
|
const wholeAccount = path.length === 3;
|
|
28
78
|
const script = scriptType
|
|
29
|
-
? {
|
|
79
|
+
? (_a = {
|
|
30
80
|
[core.BTCInputScriptType.SpendAddress]: ["Legacy"],
|
|
31
81
|
[core.BTCInputScriptType.SpendP2SHWitness]: [],
|
|
32
82
|
[core.BTCInputScriptType.SpendWitness]: ["Segwit Native"],
|
|
33
|
-
}[scriptType]
|
|
83
|
+
}[scriptType]) !== null && _a !== void 0 ? _a : []
|
|
34
84
|
: [];
|
|
35
85
|
let isPrefork = false;
|
|
36
86
|
const slip44 = core.slip44ByCoin(coin);
|
|
@@ -99,61 +149,63 @@ export function describeUTXOPath(path, coin, scriptType) {
|
|
|
99
149
|
};
|
|
100
150
|
}
|
|
101
151
|
}
|
|
102
|
-
|
|
152
|
+
function verifyScriptTypePurpose(scriptType, purpose) {
|
|
103
153
|
return ((purpose === 0x80000000 + 44 && scriptType === core.BTCInputScriptType.SpendAddress) ||
|
|
104
154
|
(purpose === 0x80000000 + 49 && scriptType === core.BTCInputScriptType.SpendP2SHWitness) ||
|
|
105
155
|
(purpose === 0x80000000 + 84 && scriptType === core.BTCInputScriptType.SpendWitness));
|
|
106
156
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (msg.showDisplay === true) {
|
|
135
|
-
if (!verifyScriptTypePurpose(scriptType, purpose)) {
|
|
136
|
-
throw new Error(`Invalid scriptType ${scriptType} for purpose ${purpose}`);
|
|
157
|
+
function btcGetAddress(msg, portis) {
|
|
158
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
+
if (!msg.addressNList.length)
|
|
160
|
+
throw new Error("Empty addressNList");
|
|
161
|
+
const scriptType = msg.scriptType;
|
|
162
|
+
const purpose = msg.addressNList[0];
|
|
163
|
+
const hardPath = core.hardenedPath(msg.addressNList);
|
|
164
|
+
const hardPathString = core.addressNListToBIP32(hardPath);
|
|
165
|
+
const { result: xpub } = yield portis.getExtendedPublicKey(hardPathString, "Bitcoin");
|
|
166
|
+
const relPath = core.relativePath(msg.addressNList);
|
|
167
|
+
const relPathString = core.addressNListToBIP32(relPath).substr(2);
|
|
168
|
+
const args = { pubkey: bip32.fromBase58(xpub).derivePath(relPathString).publicKey };
|
|
169
|
+
let result;
|
|
170
|
+
switch (scriptType) {
|
|
171
|
+
case core.BTCInputScriptType.SpendAddress:
|
|
172
|
+
result = bitcoin.payments.p2pkh(args);
|
|
173
|
+
break;
|
|
174
|
+
case core.BTCInputScriptType.SpendWitness:
|
|
175
|
+
result = bitcoin.payments.p2wpkh(args);
|
|
176
|
+
break;
|
|
177
|
+
case core.BTCInputScriptType.SpendP2SHWitness:
|
|
178
|
+
result = bitcoin.payments.p2sh({
|
|
179
|
+
redeem: bitcoin.payments.p2wpkh(args),
|
|
180
|
+
});
|
|
181
|
+
break;
|
|
182
|
+
default:
|
|
183
|
+
throw new Error(`Unsupported scriptType ${scriptType}`);
|
|
137
184
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
185
|
+
if (msg.showDisplay === true) {
|
|
186
|
+
if (!verifyScriptTypePurpose(scriptType, purpose)) {
|
|
187
|
+
throw new Error(`Invalid scriptType ${scriptType} for purpose ${purpose}`);
|
|
188
|
+
}
|
|
189
|
+
portis.showBitcoinWallet(core.addressNListToBIP32(msg.addressNList));
|
|
190
|
+
}
|
|
191
|
+
return core.mustBeDefined(result.address);
|
|
192
|
+
});
|
|
141
193
|
}
|
|
142
|
-
|
|
194
|
+
function legacyAccount(coin, slip44, accountIdx) {
|
|
143
195
|
return {
|
|
144
196
|
coin,
|
|
145
197
|
scriptType: core.BTCInputScriptType.SpendAddress,
|
|
146
198
|
addressNList: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + accountIdx],
|
|
147
199
|
};
|
|
148
200
|
}
|
|
149
|
-
|
|
201
|
+
function segwitAccount(coin, slip44, accountIdx) {
|
|
150
202
|
return {
|
|
151
203
|
coin,
|
|
152
204
|
scriptType: core.BTCInputScriptType.SpendP2SHWitness,
|
|
153
205
|
addressNList: [0x80000000 + 49, 0x80000000 + slip44, 0x80000000 + accountIdx],
|
|
154
206
|
};
|
|
155
207
|
}
|
|
156
|
-
|
|
208
|
+
function segwitNativeAccount(coin, slip44, accountIdx) {
|
|
157
209
|
return {
|
|
158
210
|
coin,
|
|
159
211
|
scriptType: core.BTCInputScriptType.SpendWitness,
|
|
@@ -161,10 +213,10 @@ export function segwitNativeAccount(coin, slip44, accountIdx) {
|
|
|
161
213
|
};
|
|
162
214
|
}
|
|
163
215
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
164
|
-
|
|
216
|
+
function btcNextAccountPath(msg) {
|
|
165
217
|
return undefined;
|
|
166
218
|
}
|
|
167
|
-
|
|
219
|
+
function btcGetAccountPaths(msg) {
|
|
168
220
|
const slip44 = core.slip44ByCoin(msg.coin);
|
|
169
221
|
if (slip44 == undefined)
|
|
170
222
|
return [];
|
|
@@ -180,34 +232,42 @@ export function btcGetAccountPaths(msg) {
|
|
|
180
232
|
});
|
|
181
233
|
return paths;
|
|
182
234
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
235
|
+
function btcSupportsScriptType(coin, scriptType) {
|
|
236
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
237
|
+
if (coin !== "Bitcoin")
|
|
238
|
+
return Promise.resolve(false);
|
|
239
|
+
switch (scriptType) {
|
|
240
|
+
case core.BTCInputScriptType.SpendAddress:
|
|
241
|
+
case core.BTCInputScriptType.SpendWitness:
|
|
242
|
+
case core.BTCInputScriptType.SpendP2SHWitness:
|
|
243
|
+
return true;
|
|
244
|
+
default:
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
function btcSupportsCoin(coin) {
|
|
250
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
251
|
+
if (coin === "Bitcoin")
|
|
190
252
|
return true;
|
|
191
|
-
|
|
253
|
+
else
|
|
192
254
|
return false;
|
|
193
|
-
}
|
|
255
|
+
});
|
|
194
256
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
// TODO: parse signatures out of serializedTx
|
|
205
|
-
signatures: core.untouchable("not implemented"),
|
|
206
|
-
serializedTx: result.serializedTx,
|
|
207
|
-
};
|
|
257
|
+
function btcSignTx(msg, portis) {
|
|
258
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
259
|
+
const { result } = yield portis.signBitcoinTransaction(msg);
|
|
260
|
+
return {
|
|
261
|
+
// TODO: parse signatures out of serializedTx
|
|
262
|
+
signatures: core.untouchable("not implemented"),
|
|
263
|
+
serializedTx: result.serializedTx,
|
|
264
|
+
};
|
|
265
|
+
});
|
|
208
266
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
267
|
+
function btcVerifyMessage(msg) {
|
|
268
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
269
|
+
const signature = base64_js_1.default.fromByteArray(core.fromHexString(msg.signature));
|
|
270
|
+
return bitcoinMsg.verify(msg.message, msg.address, signature);
|
|
271
|
+
});
|
|
212
272
|
}
|
|
213
273
|
//# sourceMappingURL=bitcoin.js.map
|
package/dist/bitcoin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"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"}
|
package/dist/ethereum.js
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.describeETHPath = describeETHPath;
|
|
36
|
+
exports.ethVerifyMessage = ethVerifyMessage;
|
|
37
|
+
exports.ethGetAccountPaths = ethGetAccountPaths;
|
|
38
|
+
exports.ethSignTx = ethSignTx;
|
|
39
|
+
exports.ethSignMessage = ethSignMessage;
|
|
40
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
41
|
+
const utils_1 = require("ethers/lib/utils");
|
|
42
|
+
function describeETHPath(path) {
|
|
4
43
|
const pathStr = core.addressNListToBIP32(path);
|
|
5
44
|
const unknown = {
|
|
6
45
|
verbose: pathStr,
|
|
@@ -28,11 +67,13 @@ export function describeETHPath(path) {
|
|
|
28
67
|
isKnown: true,
|
|
29
68
|
};
|
|
30
69
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
70
|
+
function ethVerifyMessage(msg, web3) {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
const signingAddress = yield web3.eth.accounts.recover(msg.message, "0x" + msg.signature, false);
|
|
73
|
+
return signingAddress === msg.address;
|
|
74
|
+
});
|
|
34
75
|
}
|
|
35
|
-
|
|
76
|
+
function ethGetAccountPaths(msg) {
|
|
36
77
|
const slip44 = core.slip44ByCoin(msg.coin);
|
|
37
78
|
if (slip44 === undefined)
|
|
38
79
|
return [];
|
|
@@ -45,30 +86,34 @@ export function ethGetAccountPaths(msg) {
|
|
|
45
86
|
},
|
|
46
87
|
];
|
|
47
88
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
89
|
+
function ethSignTx(msg, web3, from) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const result = yield web3.eth.signTransaction({
|
|
92
|
+
from,
|
|
93
|
+
to: msg.to,
|
|
94
|
+
value: msg.value,
|
|
95
|
+
gas: msg.gasLimit,
|
|
96
|
+
gasPrice: msg.gasPrice,
|
|
97
|
+
data: msg.data,
|
|
98
|
+
nonce: msg.nonce,
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
v: result.tx.v,
|
|
102
|
+
r: result.tx.r,
|
|
103
|
+
s: result.tx.s,
|
|
104
|
+
serialized: result.raw,
|
|
105
|
+
};
|
|
57
106
|
});
|
|
58
|
-
return {
|
|
59
|
-
v: result.tx.v,
|
|
60
|
-
r: result.tx.r,
|
|
61
|
-
s: result.tx.s,
|
|
62
|
-
serialized: result.raw,
|
|
63
|
-
};
|
|
64
107
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
108
|
+
function ethSignMessage(msg, web3, address) {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
if (!(0, utils_1.isHexString)(msg.message))
|
|
111
|
+
throw new Error("data is not an hex string");
|
|
112
|
+
const result = yield web3.eth.sign(msg.message, address);
|
|
113
|
+
return {
|
|
114
|
+
address,
|
|
115
|
+
signature: result,
|
|
116
|
+
};
|
|
117
|
+
});
|
|
73
118
|
}
|
|
74
119
|
//# sourceMappingURL=ethereum.js.map
|