@cardano-sdk/hardware-ledger 0.8.18 → 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.
@@ -1,11 +1,14 @@
1
+ /// <reference types="w3c-web-usb" />
1
2
  import { Cardano } from '@cardano-sdk/core';
3
+ import { HID } from 'node-hid';
2
4
  import { SignTransactionContext } from '@cardano-sdk/key-management';
3
5
  import TransportNodeHid from '@ledgerhq/hw-transport-node-hid-noevents';
4
- import TransportWebHID from '@ledgerhq/hw-transport-webhid';
6
+ import TransportWebUSB from '@ledgerhq/hw-transport-webusb';
5
7
  export declare enum DeviceType {
6
8
  Ledger = "Ledger"
7
9
  }
8
- export declare type LedgerTransportType = TransportWebHID | TransportNodeHid;
10
+ export declare type LedgerTransportType = TransportWebUSB | TransportNodeHid;
11
+ export declare type LedgerDevice = USBDevice | HID;
9
12
  export declare type LedgerTxTransformerContext = {
10
13
  chainId: Cardano.ChainId;
11
14
  accountIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,gBAAgB,MAAM,0CAA0C,CAAC;AACxE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,oBAAY,UAAU;IACpB,MAAM,WAAW;CAClB;AAED,oBAAY,mBAAmB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAMrE,oBAAY,0BAA0B,GAAG;IAEvC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAEzB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,sBAAsB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,gBAAgB,MAAM,0CAA0C,CAAC;AACxE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,oBAAY,UAAU;IACpB,MAAM,WAAW;CAClB;AAED,oBAAY,mBAAmB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAErE,oBAAY,YAAY,GAAG,SAAS,GAAG,GAAG,CAAC;AAM3C,oBAAY,0BAA0B,GAAG;IAEvC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAEzB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAKA,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,+BAAiB,CAAA;AACnB,CAAC,EAFW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAErB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAMA,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,+BAAiB,CAAA;AACnB,CAAC,EAFW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAErB"}
@@ -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
- activeTransport?: LedgerTransportType;
26
- devicePath?: string;
27
+ nodeHidDevicePath?: string;
27
28
  }
28
- declare type LedgerConnectionWithCommunicationTypeAndDevicePath = {
29
+ declare const establishDeviceConnectionMethodName = "establishDeviceConnection";
30
+ declare type DeviceConnectionsWithTheirInitialParams = {
29
31
  deviceConnection: LedgerConnection;
30
- communicationType: CommunicationType;
31
- devicePath?: string;
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: LedgerConnectionWithCommunicationTypeAndDevicePath[];
43
+ static deviceConnections: DeviceConnectionsWithTheirInitialParams[];
37
44
  constructor({ deviceConnection, ...serializableData }: LedgerKeyAgentProps, dependencies: KeyAgentDependencies);
38
- static findKeyAgentByCommunicationTypeAndDevicePath(communicationType: CommunicationType, devicePath?: string): LedgerConnectionWithCommunicationTypeAndDevicePath | undefined;
39
- static getHidDeviceList(communicationType: CommunicationType): Promise<string[]>;
40
- static createTransport({ communicationType, activeTransport, devicePath }: CreateLedgerTransportProps): Promise<LedgerTransportType>;
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 establishDeviceConnection(communicationType: CommunicationType, devicePath?: string): Promise<LedgerConnection>;
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":"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"}
1
+ {"version":3,"file":"LedgerKeyAgent.d.ts","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}
@@ -13,17 +13,19 @@ var _LedgerKeyAgent_communicationType;
13
13
  import * as Crypto from '@cardano-sdk/crypto';
14
14
  import { NotImplementedError } from '@cardano-sdk/core';
15
15
  import { CardanoKeyConst, Cip1852PathLevelIndexes, CommunicationType, KeyAgentBase, KeyAgentType, errors } from '@cardano-sdk/key-management';
16
+ import { HID } from 'node-hid';
16
17
  import { str_to_path } from '@cardano-foundation/ledgerjs-hw-app-cardano/dist/utils/address';
17
18
  import { toLedgerTx } from './transformers';
18
19
  import TransportNodeHid from '@ledgerhq/hw-transport-node-hid-noevents';
19
20
  import _LedgerConnection, { CertificateType, PoolKeyType, PoolOwnerType, StakeCredentialParamsType, TransactionSigningMode, TxOutputDestinationType } from '@cardano-foundation/ledgerjs-hw-app-cardano';
20
- import _TransportWebHID from '@ledgerhq/hw-transport-webhid';
21
- const TransportWebHID = _TransportWebHID.default
22
- ? _TransportWebHID.default
23
- : _TransportWebHID;
21
+ import _TransportWebUSB from '@ledgerhq/hw-transport-webusb';
22
+ const TransportWebUSB = _TransportWebUSB.default
23
+ ? _TransportWebUSB.default
24
+ : _TransportWebUSB;
24
25
  const LedgerConnection = _LedgerConnection.default
25
26
  ? _LedgerConnection.default
26
27
  : _LedgerConnection;
28
+ const isUsbDevice = (device) => typeof USBDevice !== 'undefined' && device instanceof USBDevice;
27
29
  const isDeviceAlreadyOpenError = (error) => {
28
30
  if (typeof error !== 'object')
29
31
  return false;
@@ -33,6 +35,7 @@ const isDeviceAlreadyOpenError = (error) => {
33
35
  return (innerError.code === 11 ||
34
36
  (typeof innerError.message === 'string' && innerError.message.includes('cannot open device with path')));
35
37
  };
38
+ const CARDANO_APP_CONNECTION_ERROR_MESSAGE = 'Cannot communicate with Ledger Cardano App';
36
39
  const transportTypedError = (error) => new errors.TransportError('Ledger transport failed', error);
37
40
  const hasRegistrationOrRetirementCerts = (certificates) => {
38
41
  if (!certificates)
@@ -43,6 +46,28 @@ const hasRegistrationOrRetirementCerts = (certificates) => {
43
46
  const stakeCredentialCert = (cert) => cert.type === CertificateType.STAKE_REGISTRATION ||
44
47
  cert.type === CertificateType.STAKE_DEREGISTRATION ||
45
48
  cert.type === CertificateType.STAKE_DELEGATION;
49
+ const isLedgerModelSupported = (deviceModelId) => ['nanoS', 'nanoX', 'nanoSP'].includes(deviceModelId);
50
+ const establishDeviceConnectionMethodName = 'establishDeviceConnection';
51
+ const parseEstablishDeviceConnectionSecondParam = (communicationType, nodeHidDevicePathOrDevice) => {
52
+ let device;
53
+ let nodeHidDevicePath;
54
+ const deviceObjectRecognized = (communicationType === CommunicationType.Node && nodeHidDevicePathOrDevice instanceof HID) ||
55
+ (communicationType === CommunicationType.Web && isUsbDevice(nodeHidDevicePathOrDevice));
56
+ const devicePathRecognized = communicationType === CommunicationType.Node && typeof nodeHidDevicePathOrDevice === 'string';
57
+ if (deviceObjectRecognized) {
58
+ device = nodeHidDevicePathOrDevice;
59
+ }
60
+ else if (devicePathRecognized) {
61
+ nodeHidDevicePath = nodeHidDevicePathOrDevice;
62
+ }
63
+ else if (nodeHidDevicePathOrDevice !== undefined) {
64
+ throw new Error(`Invalid arguments of the '${establishDeviceConnectionMethodName}' method`);
65
+ }
66
+ return {
67
+ device,
68
+ nodeHidDevicePath
69
+ };
70
+ };
46
71
  const containsOnlyScriptHashCreds = (tx) => {
47
72
  const withdrawalsAllScriptHash = !tx.withdrawals?.some((withdrawal) => withdrawal.stakeCredential.type !== StakeCredentialParamsType.SCRIPT_HASH);
48
73
  if (tx.certificates) {
@@ -77,61 +102,129 @@ export class LedgerKeyAgent extends KeyAgentBase {
77
102
  this.deviceConnection = deviceConnection;
78
103
  __classPrivateFieldSet(this, _LedgerKeyAgent_communicationType, serializableData.communicationType, "f");
79
104
  }
80
- static findKeyAgentByCommunicationTypeAndDevicePath(communicationType, devicePath) {
81
- return this.deviceConnections?.find((connection) => connection.communicationType === communicationType && connection.devicePath === devicePath);
105
+ static async findConnectionByCommunicationTypeAndDevicePath(communicationType, nodeHidDevicePath, device) {
106
+ const matchingConnectionData = this.deviceConnections?.find((connection) => {
107
+ const sameCommunication = communicationType === connection.communicationType;
108
+ if (connection.communicationType === CommunicationType.Web) {
109
+ return sameCommunication && device === connection.device;
110
+ }
111
+ if (connection.communicationType === CommunicationType.Node) {
112
+ return sameCommunication && device === connection.device && nodeHidDevicePath === connection.nodeHidDevicePath;
113
+ }
114
+ });
115
+ if (!matchingConnectionData)
116
+ return null;
117
+ try {
118
+ await this.testConnection(matchingConnectionData.deviceConnection);
119
+ }
120
+ catch (error) {
121
+ if (error instanceof errors.TransportError && error.message.includes(CARDANO_APP_CONNECTION_ERROR_MESSAGE)) {
122
+ this.deviceConnections = this.deviceConnections.filter((connectionData) => connectionData !== matchingConnectionData);
123
+ return null;
124
+ }
125
+ throw error;
126
+ }
127
+ return matchingConnectionData.deviceConnection;
82
128
  }
83
129
  static async getHidDeviceList(communicationType) {
84
130
  try {
85
- return communicationType === CommunicationType.Node ? TransportNodeHid.list() : TransportWebHID.list();
131
+ return communicationType === CommunicationType.Node ? TransportNodeHid.list() : TransportWebUSB.list();
86
132
  }
87
133
  catch (error) {
88
134
  throw new errors.TransportError('Cannot fetch device list', error);
89
135
  }
90
136
  }
91
- static async createTransport({ communicationType, activeTransport, devicePath = '' }) {
137
+ static attachDisconnectionCleanupHandler(transport) {
138
+ const onDisconnect = () => {
139
+ transport.off('disconnect', onDisconnect);
140
+ this.deviceConnections = this.deviceConnections.filter(({ deviceConnection }) => deviceConnection.transport !== transport);
141
+ void transport.close();
142
+ };
143
+ transport.on('disconnect', onDisconnect);
144
+ }
145
+ static async openTransportForDevice({ communicationType, device }) {
146
+ let transport;
92
147
  try {
93
- if (communicationType === CommunicationType.Node) {
94
- return await TransportNodeHid.open(devicePath);
148
+ if (communicationType === CommunicationType.Node && device instanceof HID) {
149
+ transport = new TransportNodeHid(device);
150
+ }
151
+ else if (communicationType === CommunicationType.Web && isUsbDevice(device)) {
152
+ transport = await TransportWebUSB.open(device);
95
153
  }
96
- return await (activeTransport && activeTransport instanceof TransportWebHID
97
- ? TransportWebHID.open(activeTransport.device)
98
- : TransportWebHID.request());
154
+ else {
155
+ throw new errors.TransportError(`Invalid device object provided for communication type ${communicationType}`);
156
+ }
157
+ }
158
+ catch (error) {
159
+ throw new errors.TransportError('Failed to open a transport for a given device', error);
160
+ }
161
+ this.attachDisconnectionCleanupHandler(transport);
162
+ return transport;
163
+ }
164
+ static async createTransport({ communicationType, nodeHidDevicePath = '' }) {
165
+ let transport;
166
+ try {
167
+ transport =
168
+ communicationType === CommunicationType.Node
169
+ ? await TransportNodeHid.open(nodeHidDevicePath)
170
+ : await TransportWebUSB.request();
99
171
  }
100
172
  catch (error) {
101
173
  throw new errors.TransportError('Creating transport failed', error);
102
174
  }
175
+ this.attachDisconnectionCleanupHandler(transport);
176
+ return transport;
103
177
  }
104
- static async createDeviceConnection(activeTransport) {
178
+ static async testConnection(activeConnection) {
105
179
  try {
106
- const deviceConnection = new LedgerConnection(activeTransport);
107
- await deviceConnection.getVersion();
108
- return deviceConnection;
180
+ await activeConnection.getVersion();
109
181
  }
110
182
  catch (error) {
111
- throw new errors.TransportError('Cannot communicate with Ledger Cardano App', error);
183
+ throw new errors.TransportError(CARDANO_APP_CONNECTION_ERROR_MESSAGE, error);
112
184
  }
113
185
  }
114
- static async establishDeviceConnection(communicationType, devicePath) {
115
- const sameConnectionByTypeAndPath = this.findKeyAgentByCommunicationTypeAndDevicePath(communicationType, devicePath);
116
- if (sameConnectionByTypeAndPath)
117
- return sameConnectionByTypeAndPath.deviceConnection;
186
+ static async createDeviceConnection(activeTransport) {
187
+ const deviceConnection = new LedgerConnection(activeTransport);
188
+ await this.testConnection(deviceConnection);
189
+ return deviceConnection;
190
+ }
191
+ static rememberConnection({ communicationType, device, deviceConnection, nodeHidDevicePath }) {
192
+ this.deviceConnections.push({
193
+ deviceConnection,
194
+ ...(communicationType === CommunicationType.Node
195
+ ? {
196
+ communicationType,
197
+ ...(device instanceof HID && { device }),
198
+ ...(nodeHidDevicePath !== undefined && { nodeHidDevicePath })
199
+ }
200
+ : {
201
+ communicationType,
202
+ ...(isUsbDevice(device) && { device })
203
+ })
204
+ });
205
+ }
206
+ static async [(_LedgerKeyAgent_communicationType = new WeakMap(), establishDeviceConnectionMethodName)](communicationType, nodeHidDevicePathOrDevice) {
207
+ const { device, nodeHidDevicePath } = parseEstablishDeviceConnectionSecondParam(communicationType, nodeHidDevicePathOrDevice);
208
+ const matchingOpenConnection = await this.findConnectionByCommunicationTypeAndDevicePath(communicationType, nodeHidDevicePath, device);
209
+ if (matchingOpenConnection)
210
+ return matchingOpenConnection;
118
211
  let transport;
119
212
  try {
120
- transport = await LedgerKeyAgent.createTransport({ communicationType, devicePath });
213
+ transport = device
214
+ ? await LedgerKeyAgent.openTransportForDevice({ communicationType, device })
215
+ : await LedgerKeyAgent.createTransport({ communicationType, nodeHidDevicePath });
121
216
  if (!transport || !transport.deviceModel) {
122
217
  throw new errors.TransportError('Missing transport');
123
218
  }
124
- const isSupportedLedgerModel = transport.deviceModel.id === 'nanoS' ||
125
- transport.deviceModel.id === 'nanoX' ||
126
- transport.deviceModel.id === 'nanoSP';
127
- if (!isSupportedLedgerModel) {
219
+ if (!isLedgerModelSupported(transport.deviceModel.id)) {
128
220
  throw new errors.TransportError(`Ledger device model: "${transport.deviceModel.id}" is not supported`);
129
221
  }
130
222
  const newConnection = await LedgerKeyAgent.createDeviceConnection(transport);
131
- this.deviceConnections.push({
223
+ this.rememberConnection({
132
224
  communicationType,
225
+ device,
133
226
  deviceConnection: newConnection,
134
- ...(!!devicePath && { devicePath })
227
+ nodeHidDevicePath
135
228
  });
136
229
  return newConnection;
137
230
  }
@@ -140,7 +233,7 @@ export class LedgerKeyAgent extends KeyAgentBase {
140
233
  throw new errors.TransportError('Connection already established', error);
141
234
  }
142
235
  if (transport) {
143
- transport.close();
236
+ void transport.close();
144
237
  }
145
238
  throw new errors.TransportError('Establishing device connection failed', error);
146
239
  }
@@ -257,6 +350,5 @@ export class LedgerKeyAgent extends KeyAgentBase {
257
350
  throw new NotImplementedError('Operation not supported!');
258
351
  }
259
352
  }
260
- _LedgerKeyAgent_communicationType = new WeakMap();
261
353
  LedgerKeyAgent.deviceConnections = [];
262
354
  //# 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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"}