@cardano-sdk/hardware-ledger 0.8.19 → 0.9.0
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/cjs/LedgerKeyAgent.d.ts +25 -11
- package/dist/cjs/LedgerKeyAgent.d.ts.map +1 -1
- package/dist/cjs/LedgerKeyAgent.js +123 -31
- package/dist/cjs/LedgerKeyAgent.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +5 -2
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/LedgerKeyAgent.d.ts +25 -11
- package/dist/esm/LedgerKeyAgent.d.ts.map +1 -1
- package/dist/esm/LedgerKeyAgent.js +123 -31
- package/dist/esm/LedgerKeyAgent.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +5 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/package.json +4 -3
@@ -1,6 +1,8 @@
|
|
1
|
+
/// <reference types="w3c-web-usb" />
|
1
2
|
import * as Crypto from '@cardano-sdk/crypto';
|
2
3
|
import { Cardano } from '@cardano-sdk/core';
|
3
4
|
import { CommunicationType, KeyAgentBase, KeyAgentDependencies, SerializableLedgerKeyAgentData, SignBlobResult, SignTransactionContext } from '@cardano-sdk/key-management';
|
5
|
+
import { HID } from 'node-hid';
|
4
6
|
import { LedgerTransportType } from './types';
|
5
7
|
import _LedgerConnection, { GetVersionResponse, Transaction, TransactionSigningMode } from '@cardano-foundation/ledgerjs-hw-app-cardano';
|
6
8
|
import type LedgerTransport from '@ledgerhq/hw-transport';
|
@@ -22,24 +24,36 @@ export interface GetLedgerXpubProps {
|
|
22
24
|
}
|
23
25
|
export interface CreateLedgerTransportProps {
|
24
26
|
communicationType: CommunicationType;
|
25
|
-
|
26
|
-
devicePath?: string;
|
27
|
+
nodeHidDevicePath?: string;
|
27
28
|
}
|
28
|
-
declare
|
29
|
+
declare const establishDeviceConnectionMethodName = "establishDeviceConnection";
|
30
|
+
declare type DeviceConnectionsWithTheirInitialParams = {
|
29
31
|
deviceConnection: LedgerConnection;
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
} & ({
|
33
|
+
communicationType: CommunicationType.Node;
|
34
|
+
device?: HID;
|
35
|
+
nodeHidDevicePath?: string;
|
36
|
+
} | {
|
37
|
+
communicationType: CommunicationType.Web;
|
38
|
+
device?: USBDevice;
|
39
|
+
});
|
33
40
|
export declare class LedgerKeyAgent extends KeyAgentBase {
|
34
41
|
#private;
|
35
42
|
readonly deviceConnection?: LedgerConnection;
|
36
|
-
static deviceConnections:
|
43
|
+
static deviceConnections: DeviceConnectionsWithTheirInitialParams[];
|
37
44
|
constructor({ deviceConnection, ...serializableData }: LedgerKeyAgentProps, dependencies: KeyAgentDependencies);
|
38
|
-
static
|
39
|
-
static getHidDeviceList
|
40
|
-
static
|
45
|
+
private static findConnectionByCommunicationTypeAndDevicePath;
|
46
|
+
private static getHidDeviceList;
|
47
|
+
private static attachDisconnectionCleanupHandler;
|
48
|
+
private static openTransportForDevice;
|
49
|
+
static createTransport({ communicationType, nodeHidDevicePath }: CreateLedgerTransportProps): Promise<LedgerTransportType>;
|
50
|
+
private static testConnection;
|
41
51
|
static createDeviceConnection(activeTransport: LedgerTransport): Promise<LedgerConnection>;
|
42
|
-
static
|
52
|
+
private static rememberConnection;
|
53
|
+
static [establishDeviceConnectionMethodName](communicationType: CommunicationType): Promise<LedgerConnection>;
|
54
|
+
static [establishDeviceConnectionMethodName](communicationType: CommunicationType, nodeHidDevicePath: string): Promise<LedgerConnection>;
|
55
|
+
static [establishDeviceConnectionMethodName](communicationType: CommunicationType.Node, device: HID): Promise<LedgerConnection>;
|
56
|
+
static [establishDeviceConnectionMethodName](communicationType: CommunicationType.Web, device: USBDevice): Promise<LedgerConnection>;
|
43
57
|
static checkDeviceConnection(communicationType: CommunicationType, deviceConnection?: LedgerConnection): Promise<LedgerConnection>;
|
44
58
|
static getXpub({ deviceConnection, communicationType, accountIndex }: GetLedgerXpubProps): Promise<Crypto.Bip32PublicKeyHex>;
|
45
59
|
static getAppVersion(communicationType: CommunicationType, deviceConnection?: LedgerConnection): Promise<GetVersionResponse>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LedgerKeyAgent.d.ts","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAGL,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EAEpB,8BAA8B,EAC9B,cAAc,EACd,sBAAsB,EAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
1
|
+
{"version":3,"file":"LedgerKeyAgent.d.ts","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}
|
@@ -42,17 +42,19 @@ exports.LedgerKeyAgent = void 0;
|
|
42
42
|
const Crypto = __importStar(require("@cardano-sdk/crypto"));
|
43
43
|
const core_1 = require("@cardano-sdk/core");
|
44
44
|
const key_management_1 = require("@cardano-sdk/key-management");
|
45
|
+
const node_hid_1 = require("node-hid");
|
45
46
|
const address_1 = require("@cardano-foundation/ledgerjs-hw-app-cardano/dist/utils/address");
|
46
47
|
const transformers_1 = require("./transformers");
|
47
48
|
const hw_transport_node_hid_noevents_1 = __importDefault(require("@ledgerhq/hw-transport-node-hid-noevents"));
|
48
49
|
const ledgerjs_hw_app_cardano_1 = __importStar(require("@cardano-foundation/ledgerjs-hw-app-cardano"));
|
49
|
-
const
|
50
|
-
const
|
51
|
-
?
|
52
|
-
:
|
50
|
+
const hw_transport_webusb_1 = __importDefault(require("@ledgerhq/hw-transport-webusb"));
|
51
|
+
const TransportWebUSB = hw_transport_webusb_1.default.default
|
52
|
+
? hw_transport_webusb_1.default.default
|
53
|
+
: hw_transport_webusb_1.default;
|
53
54
|
const LedgerConnection = ledgerjs_hw_app_cardano_1.default.default
|
54
55
|
? ledgerjs_hw_app_cardano_1.default.default
|
55
56
|
: ledgerjs_hw_app_cardano_1.default;
|
57
|
+
const isUsbDevice = (device) => typeof USBDevice !== 'undefined' && device instanceof USBDevice;
|
56
58
|
const isDeviceAlreadyOpenError = (error) => {
|
57
59
|
if (typeof error !== 'object')
|
58
60
|
return false;
|
@@ -62,6 +64,7 @@ const isDeviceAlreadyOpenError = (error) => {
|
|
62
64
|
return (innerError.code === 11 ||
|
63
65
|
(typeof innerError.message === 'string' && innerError.message.includes('cannot open device with path')));
|
64
66
|
};
|
67
|
+
const CARDANO_APP_CONNECTION_ERROR_MESSAGE = 'Cannot communicate with Ledger Cardano App';
|
65
68
|
const transportTypedError = (error) => new key_management_1.errors.TransportError('Ledger transport failed', error);
|
66
69
|
const hasRegistrationOrRetirementCerts = (certificates) => {
|
67
70
|
if (!certificates)
|
@@ -72,6 +75,28 @@ const hasRegistrationOrRetirementCerts = (certificates) => {
|
|
72
75
|
const stakeCredentialCert = (cert) => cert.type === ledgerjs_hw_app_cardano_1.CertificateType.STAKE_REGISTRATION ||
|
73
76
|
cert.type === ledgerjs_hw_app_cardano_1.CertificateType.STAKE_DEREGISTRATION ||
|
74
77
|
cert.type === ledgerjs_hw_app_cardano_1.CertificateType.STAKE_DELEGATION;
|
78
|
+
const isLedgerModelSupported = (deviceModelId) => ['nanoS', 'nanoX', 'nanoSP'].includes(deviceModelId);
|
79
|
+
const establishDeviceConnectionMethodName = 'establishDeviceConnection';
|
80
|
+
const parseEstablishDeviceConnectionSecondParam = (communicationType, nodeHidDevicePathOrDevice) => {
|
81
|
+
let device;
|
82
|
+
let nodeHidDevicePath;
|
83
|
+
const deviceObjectRecognized = (communicationType === key_management_1.CommunicationType.Node && nodeHidDevicePathOrDevice instanceof node_hid_1.HID) ||
|
84
|
+
(communicationType === key_management_1.CommunicationType.Web && isUsbDevice(nodeHidDevicePathOrDevice));
|
85
|
+
const devicePathRecognized = communicationType === key_management_1.CommunicationType.Node && typeof nodeHidDevicePathOrDevice === 'string';
|
86
|
+
if (deviceObjectRecognized) {
|
87
|
+
device = nodeHidDevicePathOrDevice;
|
88
|
+
}
|
89
|
+
else if (devicePathRecognized) {
|
90
|
+
nodeHidDevicePath = nodeHidDevicePathOrDevice;
|
91
|
+
}
|
92
|
+
else if (nodeHidDevicePathOrDevice !== undefined) {
|
93
|
+
throw new Error(`Invalid arguments of the '${establishDeviceConnectionMethodName}' method`);
|
94
|
+
}
|
95
|
+
return {
|
96
|
+
device,
|
97
|
+
nodeHidDevicePath
|
98
|
+
};
|
99
|
+
};
|
75
100
|
const containsOnlyScriptHashCreds = (tx) => {
|
76
101
|
const withdrawalsAllScriptHash = !tx.withdrawals?.some((withdrawal) => withdrawal.stakeCredential.type !== ledgerjs_hw_app_cardano_1.StakeCredentialParamsType.SCRIPT_HASH);
|
77
102
|
if (tx.certificates) {
|
@@ -106,61 +131,129 @@ class LedgerKeyAgent extends key_management_1.KeyAgentBase {
|
|
106
131
|
this.deviceConnection = deviceConnection;
|
107
132
|
__classPrivateFieldSet(this, _LedgerKeyAgent_communicationType, serializableData.communicationType, "f");
|
108
133
|
}
|
109
|
-
static
|
110
|
-
|
134
|
+
static async findConnectionByCommunicationTypeAndDevicePath(communicationType, nodeHidDevicePath, device) {
|
135
|
+
const matchingConnectionData = this.deviceConnections?.find((connection) => {
|
136
|
+
const sameCommunication = communicationType === connection.communicationType;
|
137
|
+
if (connection.communicationType === key_management_1.CommunicationType.Web) {
|
138
|
+
return sameCommunication && device === connection.device;
|
139
|
+
}
|
140
|
+
if (connection.communicationType === key_management_1.CommunicationType.Node) {
|
141
|
+
return sameCommunication && device === connection.device && nodeHidDevicePath === connection.nodeHidDevicePath;
|
142
|
+
}
|
143
|
+
});
|
144
|
+
if (!matchingConnectionData)
|
145
|
+
return null;
|
146
|
+
try {
|
147
|
+
await this.testConnection(matchingConnectionData.deviceConnection);
|
148
|
+
}
|
149
|
+
catch (error) {
|
150
|
+
if (error instanceof key_management_1.errors.TransportError && error.message.includes(CARDANO_APP_CONNECTION_ERROR_MESSAGE)) {
|
151
|
+
this.deviceConnections = this.deviceConnections.filter((connectionData) => connectionData !== matchingConnectionData);
|
152
|
+
return null;
|
153
|
+
}
|
154
|
+
throw error;
|
155
|
+
}
|
156
|
+
return matchingConnectionData.deviceConnection;
|
111
157
|
}
|
112
158
|
static async getHidDeviceList(communicationType) {
|
113
159
|
try {
|
114
|
-
return communicationType === key_management_1.CommunicationType.Node ? hw_transport_node_hid_noevents_1.default.list() :
|
160
|
+
return communicationType === key_management_1.CommunicationType.Node ? hw_transport_node_hid_noevents_1.default.list() : TransportWebUSB.list();
|
115
161
|
}
|
116
162
|
catch (error) {
|
117
163
|
throw new key_management_1.errors.TransportError('Cannot fetch device list', error);
|
118
164
|
}
|
119
165
|
}
|
120
|
-
static
|
166
|
+
static attachDisconnectionCleanupHandler(transport) {
|
167
|
+
const onDisconnect = () => {
|
168
|
+
transport.off('disconnect', onDisconnect);
|
169
|
+
this.deviceConnections = this.deviceConnections.filter(({ deviceConnection }) => deviceConnection.transport !== transport);
|
170
|
+
void transport.close();
|
171
|
+
};
|
172
|
+
transport.on('disconnect', onDisconnect);
|
173
|
+
}
|
174
|
+
static async openTransportForDevice({ communicationType, device }) {
|
175
|
+
let transport;
|
121
176
|
try {
|
122
|
-
if (communicationType === key_management_1.CommunicationType.Node) {
|
123
|
-
|
177
|
+
if (communicationType === key_management_1.CommunicationType.Node && device instanceof node_hid_1.HID) {
|
178
|
+
transport = new hw_transport_node_hid_noevents_1.default(device);
|
179
|
+
}
|
180
|
+
else if (communicationType === key_management_1.CommunicationType.Web && isUsbDevice(device)) {
|
181
|
+
transport = await TransportWebUSB.open(device);
|
124
182
|
}
|
125
|
-
|
126
|
-
|
127
|
-
|
183
|
+
else {
|
184
|
+
throw new key_management_1.errors.TransportError(`Invalid device object provided for communication type ${communicationType}`);
|
185
|
+
}
|
186
|
+
}
|
187
|
+
catch (error) {
|
188
|
+
throw new key_management_1.errors.TransportError('Failed to open a transport for a given device', error);
|
189
|
+
}
|
190
|
+
this.attachDisconnectionCleanupHandler(transport);
|
191
|
+
return transport;
|
192
|
+
}
|
193
|
+
static async createTransport({ communicationType, nodeHidDevicePath = '' }) {
|
194
|
+
let transport;
|
195
|
+
try {
|
196
|
+
transport =
|
197
|
+
communicationType === key_management_1.CommunicationType.Node
|
198
|
+
? await hw_transport_node_hid_noevents_1.default.open(nodeHidDevicePath)
|
199
|
+
: await TransportWebUSB.request();
|
128
200
|
}
|
129
201
|
catch (error) {
|
130
202
|
throw new key_management_1.errors.TransportError('Creating transport failed', error);
|
131
203
|
}
|
204
|
+
this.attachDisconnectionCleanupHandler(transport);
|
205
|
+
return transport;
|
132
206
|
}
|
133
|
-
static async
|
207
|
+
static async testConnection(activeConnection) {
|
134
208
|
try {
|
135
|
-
|
136
|
-
await deviceConnection.getVersion();
|
137
|
-
return deviceConnection;
|
209
|
+
await activeConnection.getVersion();
|
138
210
|
}
|
139
211
|
catch (error) {
|
140
|
-
throw new key_management_1.errors.TransportError(
|
212
|
+
throw new key_management_1.errors.TransportError(CARDANO_APP_CONNECTION_ERROR_MESSAGE, error);
|
141
213
|
}
|
142
214
|
}
|
143
|
-
static async
|
144
|
-
const
|
145
|
-
|
146
|
-
|
215
|
+
static async createDeviceConnection(activeTransport) {
|
216
|
+
const deviceConnection = new LedgerConnection(activeTransport);
|
217
|
+
await this.testConnection(deviceConnection);
|
218
|
+
return deviceConnection;
|
219
|
+
}
|
220
|
+
static rememberConnection({ communicationType, device, deviceConnection, nodeHidDevicePath }) {
|
221
|
+
this.deviceConnections.push({
|
222
|
+
deviceConnection,
|
223
|
+
...(communicationType === key_management_1.CommunicationType.Node
|
224
|
+
? {
|
225
|
+
communicationType,
|
226
|
+
...(device instanceof node_hid_1.HID && { device }),
|
227
|
+
...(nodeHidDevicePath !== undefined && { nodeHidDevicePath })
|
228
|
+
}
|
229
|
+
: {
|
230
|
+
communicationType,
|
231
|
+
...(isUsbDevice(device) && { device })
|
232
|
+
})
|
233
|
+
});
|
234
|
+
}
|
235
|
+
static async [(_LedgerKeyAgent_communicationType = new WeakMap(), establishDeviceConnectionMethodName)](communicationType, nodeHidDevicePathOrDevice) {
|
236
|
+
const { device, nodeHidDevicePath } = parseEstablishDeviceConnectionSecondParam(communicationType, nodeHidDevicePathOrDevice);
|
237
|
+
const matchingOpenConnection = await this.findConnectionByCommunicationTypeAndDevicePath(communicationType, nodeHidDevicePath, device);
|
238
|
+
if (matchingOpenConnection)
|
239
|
+
return matchingOpenConnection;
|
147
240
|
let transport;
|
148
241
|
try {
|
149
|
-
transport =
|
242
|
+
transport = device
|
243
|
+
? await LedgerKeyAgent.openTransportForDevice({ communicationType, device })
|
244
|
+
: await LedgerKeyAgent.createTransport({ communicationType, nodeHidDevicePath });
|
150
245
|
if (!transport || !transport.deviceModel) {
|
151
246
|
throw new key_management_1.errors.TransportError('Missing transport');
|
152
247
|
}
|
153
|
-
|
154
|
-
transport.deviceModel.id === 'nanoX' ||
|
155
|
-
transport.deviceModel.id === 'nanoSP';
|
156
|
-
if (!isSupportedLedgerModel) {
|
248
|
+
if (!isLedgerModelSupported(transport.deviceModel.id)) {
|
157
249
|
throw new key_management_1.errors.TransportError(`Ledger device model: "${transport.deviceModel.id}" is not supported`);
|
158
250
|
}
|
159
251
|
const newConnection = await LedgerKeyAgent.createDeviceConnection(transport);
|
160
|
-
this.
|
252
|
+
this.rememberConnection({
|
161
253
|
communicationType,
|
254
|
+
device,
|
162
255
|
deviceConnection: newConnection,
|
163
|
-
|
256
|
+
nodeHidDevicePath
|
164
257
|
});
|
165
258
|
return newConnection;
|
166
259
|
}
|
@@ -169,7 +262,7 @@ class LedgerKeyAgent extends key_management_1.KeyAgentBase {
|
|
169
262
|
throw new key_management_1.errors.TransportError('Connection already established', error);
|
170
263
|
}
|
171
264
|
if (transport) {
|
172
|
-
transport.close();
|
265
|
+
void transport.close();
|
173
266
|
}
|
174
267
|
throw new key_management_1.errors.TransportError('Establishing device connection failed', error);
|
175
268
|
}
|
@@ -287,6 +380,5 @@ class LedgerKeyAgent extends key_management_1.KeyAgentBase {
|
|
287
380
|
}
|
288
381
|
}
|
289
382
|
exports.LedgerKeyAgent = LedgerKeyAgent;
|
290
|
-
_LedgerKeyAgent_communicationType = new WeakMap();
|
291
383
|
LedgerKeyAgent.deviceConnections = [];
|
292
384
|
//# sourceMappingURL=LedgerKeyAgent.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LedgerKeyAgent.js","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"LedgerKeyAgent.js","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}
|