@zondax/ledger-cosmos-js 3.0.2 → 3.0.3
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/LICENSE +1 -1
- package/README.md +13 -16
- package/dist/cosmosApp.d.ts +3 -2
- package/dist/cosmosApp.js +53 -3
- package/dist/cosmosApp.js.map +1 -1
- package/package.json +16 -6
- package/yarn.lock +0 -6626
package/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright 2018 -
|
|
189
|
+
Copyright 2018 - 2023 Zondax AG
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
package/README.md
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
# @zondax/ledger-cosmos-js
|
|
2
2
|
|
|
3
|
-

|
|
4
|
+

|
|
4
5
|
|
|
5
6
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
6
|
-
[](https://github.com/cosmos/ledger-cosmos-js/actions?query=workflow%3AMain)
|
|
8
|
+
[](https://badge.fury.io/js/%40cosmos%2Fledger-cosmos-js)
|
|
9
9
|
|
|
10
10
|
This package provides a basic client library to communicate with a Tendermint/Cosmos App running in a Ledger Nano S/S+/X devices
|
|
11
11
|
|
|
12
12
|
We recommend using the npmjs package in order to receive updates/fixes.
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
# Available commands
|
|
16
15
|
|
|
17
|
-
| Operation
|
|
18
|
-
|
|
|
19
|
-
| getVersion
|
|
20
|
-
| publicKey
|
|
21
|
-
| getAddressAndPubKey
|
|
22
|
-
| showAddressAndPubKey
|
|
23
|
-
| appInfo
|
|
24
|
-
| deviceInfo
|
|
25
|
-
| sign
|
|
16
|
+
| Operation | Response | Command |
|
|
17
|
+
| -------------------- | --------------------------- | --------------------------- |
|
|
18
|
+
| getVersion | app version | --------------- |
|
|
19
|
+
| publicKey | pubkey | path (legacy command) |
|
|
20
|
+
| getAddressAndPubKey | pubkey + address | path + ( showInDevice ) |
|
|
21
|
+
| showAddressAndPubKey | signed message | path |
|
|
22
|
+
| appInfo | name, version, flags, etc | --------------- |
|
|
23
|
+
| deviceInfo | fw and mcu version, id, etc | Only available in dashboard |
|
|
24
|
+
| sign | signed message | path + message + (HRP) |
|
|
26
25
|
|
|
27
26
|
getAddress command requires that you set the derivation path (account, change, index) and has an option parameter to display the address on the device. By default, it will retrieve the information without user confirmation.
|
|
28
27
|
|
|
29
|
-
sign command requires that you specify the transaction type, with one of the available types: 0 for json transaction or 1 for textual transaction.
|
|
30
|
-
|
|
31
28
|
# Testing with real devices
|
|
32
29
|
|
|
33
30
|
It is possible to test this package with a real Ledger Nano device. To accomplish that, you will need to follow these steps:
|
package/dist/cosmosApp.d.ts
CHANGED
|
@@ -4,10 +4,11 @@ export declare class CosmosApp {
|
|
|
4
4
|
transport: Transport;
|
|
5
5
|
versionResponse?: any;
|
|
6
6
|
constructor(transport: any);
|
|
7
|
-
static serializeHRP(hrp
|
|
7
|
+
static serializeHRP(hrp?: string): Buffer;
|
|
8
8
|
static getBech32FromPK(hrp: string, pk: Buffer): any;
|
|
9
9
|
serializePath(path: number[]): Promise<Buffer>;
|
|
10
10
|
signGetChunks(path: number[], buffer: Buffer): Promise<Buffer[]>;
|
|
11
|
+
prepareChunks(path: number[], buffer: Buffer, hrp?: string): Promise<Buffer[]>;
|
|
11
12
|
getVersion(): Promise<any>;
|
|
12
13
|
appInfo(): Promise<any>;
|
|
13
14
|
deviceInfo(): Promise<any>;
|
|
@@ -15,5 +16,5 @@ export declare class CosmosApp {
|
|
|
15
16
|
getAddressAndPubKey(path: number[], hrp: string, showInDevice?: boolean): Promise<any>;
|
|
16
17
|
showAddressAndPubKey(path: number[], hrp: string): Promise<any>;
|
|
17
18
|
signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer, txType?: number): Promise<any>;
|
|
18
|
-
sign(path: number[], buffer: Buffer, txType?: number): Promise<any>;
|
|
19
|
+
sign(path: number[], buffer: Buffer, hrp?: string, txType?: number): Promise<any>;
|
|
19
20
|
}
|
package/dist/cosmosApp.js
CHANGED
|
@@ -130,6 +130,30 @@ var CosmosApp = /** @class */ (function () {
|
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
};
|
|
133
|
+
CosmosApp.prototype.prepareChunks = function (path, buffer, hrp) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
135
|
+
var serializedPath, firstChunk, chunks, i, end;
|
|
136
|
+
return __generator(this, function (_a) {
|
|
137
|
+
switch (_a.label) {
|
|
138
|
+
case 0: return [4 /*yield*/, this.serializePath(path)];
|
|
139
|
+
case 1:
|
|
140
|
+
serializedPath = _a.sent();
|
|
141
|
+
firstChunk = (hrp === undefined) ? serializedPath
|
|
142
|
+
: Buffer.concat([serializedPath, CosmosApp.serializeHRP(hrp)]);
|
|
143
|
+
chunks = [];
|
|
144
|
+
chunks.push(firstChunk);
|
|
145
|
+
for (i = 0; i < buffer.length; i += common_1.CHUNK_SIZE) {
|
|
146
|
+
end = i + common_1.CHUNK_SIZE;
|
|
147
|
+
if (i > buffer.length) {
|
|
148
|
+
end = buffer.length;
|
|
149
|
+
}
|
|
150
|
+
chunks.push(buffer.subarray(i, end));
|
|
151
|
+
}
|
|
152
|
+
return [2 /*return*/, chunks];
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
};
|
|
133
157
|
CosmosApp.prototype.getVersion = function () {
|
|
134
158
|
return __awaiter(this, void 0, void 0, function () {
|
|
135
159
|
var _a, e_1;
|
|
@@ -285,7 +309,9 @@ var CosmosApp = /** @class */ (function () {
|
|
|
285
309
|
.then(function (serializedPath) {
|
|
286
310
|
var data = Buffer.concat([CosmosApp.serializeHRP(hrp), serializedPath]);
|
|
287
311
|
return _this.transport
|
|
288
|
-
.send(common_1.CLA, common_1.INS.GET_ADDR_SECP256K1, showInDevice ? common_1.P1_VALUES.SHOW_ADDRESS_IN_DEVICE : common_1.P1_VALUES.ONLY_RETRIEVE, 0, data, [
|
|
312
|
+
.send(common_1.CLA, common_1.INS.GET_ADDR_SECP256K1, showInDevice ? common_1.P1_VALUES.SHOW_ADDRESS_IN_DEVICE : common_1.P1_VALUES.ONLY_RETRIEVE, 0, data, [
|
|
313
|
+
common_1.ERROR_CODE.NoError,
|
|
314
|
+
])
|
|
289
315
|
.then(function (response) {
|
|
290
316
|
var errorCodeData = response.slice(-2);
|
|
291
317
|
var returnCode = errorCodeData[0] * 256 + errorCodeData[1];
|
|
@@ -328,12 +354,36 @@ var CosmosApp = /** @class */ (function () {
|
|
|
328
354
|
});
|
|
329
355
|
});
|
|
330
356
|
};
|
|
331
|
-
|
|
357
|
+
// async sign(path: number[], buffer: Buffer, txType = P2_VALUES.JSON) {
|
|
358
|
+
// return this.signGetChunks(path, buffer).then(chunks => {
|
|
359
|
+
// return this.signSendChunk(1, chunks.length, chunks[0], txType).then(async response => {
|
|
360
|
+
// let result = {
|
|
361
|
+
// return_code: response.return_code,
|
|
362
|
+
// error_message: response.error_message,
|
|
363
|
+
// signature: null,
|
|
364
|
+
// }
|
|
365
|
+
// for (let i = 1; i < chunks.length; i += 1) {
|
|
366
|
+
// // eslint-disable-next-line no-await-in-loop
|
|
367
|
+
// result = await this.signSendChunk(1 + i, chunks.length, chunks[i], txType)
|
|
368
|
+
// if (result.return_code !== ERROR_CODE.NoError) {
|
|
369
|
+
// break
|
|
370
|
+
// }
|
|
371
|
+
// }
|
|
372
|
+
// return {
|
|
373
|
+
// return_code: result.return_code,
|
|
374
|
+
// error_message: result.error_message,
|
|
375
|
+
// // ///
|
|
376
|
+
// signature: result.signature,
|
|
377
|
+
// }
|
|
378
|
+
// }, processErrorResponse)
|
|
379
|
+
// }, processErrorResponse)
|
|
380
|
+
// }
|
|
381
|
+
CosmosApp.prototype.sign = function (path, buffer, hrp, txType) {
|
|
332
382
|
if (txType === void 0) { txType = common_1.P2_VALUES.JSON; }
|
|
333
383
|
return __awaiter(this, void 0, void 0, function () {
|
|
334
384
|
var _this = this;
|
|
335
385
|
return __generator(this, function (_a) {
|
|
336
|
-
return [2 /*return*/, this.
|
|
386
|
+
return [2 /*return*/, this.prepareChunks(path, buffer, hrp).then(function (chunks) {
|
|
337
387
|
return _this.signSendChunk(1, chunks.length, chunks[0], txType).then(function (response) { return __awaiter(_this, void 0, void 0, function () {
|
|
338
388
|
var result, i;
|
|
339
389
|
return __generator(this, function (_a) {
|
package/dist/cosmosApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosApp.js","sourceRoot":"","sources":["../src/cosmosApp.ts"],"names":[],"mappings":"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","sourcesContent":["/** ******************************************************************************\n * (c) 2018 - 2022 Zondax AG\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ******************************************************************************* */\nimport { CHUNK_SIZE, CLA, INS, errorCodeToString, getVersion, processErrorResponse, ERROR_CODE, P1_VALUES, P2_VALUES } from './common'\n\nimport Transport from '@ledgerhq/hw-transport'\nimport { publicKeyv1, serializePathv1, signSendChunkv1 } from './commandsV1'\nimport { publicKeyv2, serializePathv2, signSendChunkv2 } from './commandsV2'\n\nconst crypto = require('crypto')\nconst bech32 = require('bech32')\nconst Ripemd160 = require('ripemd160')\n\nexport class CosmosApp {\n transport: Transport\n versionResponse?: any\n\n constructor(transport: any) {\n if (!transport) {\n throw new Error('Transport has not been defined')\n }\n\n this.transport = transport\n }\n\n static serializeHRP(hrp: string) {\n if (hrp == null || hrp.length < 3 || hrp.length > 83) {\n throw new Error('Invalid HRP')\n }\n const buf = Buffer.alloc(1 + hrp.length)\n buf.writeUInt8(hrp.length, 0)\n buf.write(hrp, 1)\n return buf\n }\n\n static getBech32FromPK(hrp: string, pk: Buffer) {\n if (pk.length !== 33) {\n throw new Error('expected compressed public key [31 bytes]')\n }\n const hashSha256 = crypto.createHash('sha256').update(pk).digest()\n const hashRip = new Ripemd160().update(hashSha256).digest()\n return bech32.encode(hrp, bech32.toWords(hashRip))\n }\n\n async serializePath(path: number[]) {\n this.versionResponse = await getVersion(this.transport)\n\n if (this.versionResponse.return_code !== ERROR_CODE.NoError) {\n throw this.versionResponse\n }\n\n switch (this.versionResponse.major) {\n case 1:\n return serializePathv1(path)\n case 2:\n return serializePathv2(path)\n default:\n return Buffer.alloc(0)\n }\n }\n\n async signGetChunks(path: number[], buffer: Buffer) {\n const serializedPath = await this.serializePath(path)\n\n const chunks = []\n chunks.push(serializedPath)\n\n for (let i = 0; i < buffer.length; i += CHUNK_SIZE) {\n let end = i + CHUNK_SIZE\n if (i > buffer.length) {\n end = buffer.length\n }\n chunks.push(buffer.slice(i, end))\n }\n\n return chunks\n }\n\n async getVersion() {\n try {\n this.versionResponse = await getVersion(this.transport)\n return this.versionResponse\n } catch (e) {\n return processErrorResponse(e)\n }\n }\n\n async appInfo() {\n return this.transport.send(0xb0, 0x01, 0, 0).then((response: any) => {\n const errorCodeData = response.slice(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n let appName = ''\n let appVersion = ''\n let flagLen = 0\n let flagsValue = 0\n\n if (response[0] !== 1) {\n // Ledger responds with format ID 1. There is no spec for any format != 1\n return {\n return_code: 0x9001,\n error_message: 'response format ID not recognized',\n }\n } else {\n const appNameLen = response[1]\n appName = response.slice(2, 2 + appNameLen).toString('ascii')\n let idx = 2 + appNameLen\n const appVersionLen = response[idx]\n idx += 1\n appVersion = response.slice(idx, idx + appVersionLen).toString('ascii')\n idx += appVersionLen\n const appFlagsLen = response[idx]\n idx += 1\n flagLen = appFlagsLen\n flagsValue = response[idx]\n }\n\n return {\n return_code: returnCode,\n error_message: errorCodeToString(returnCode),\n // //\n appName,\n appVersion,\n flagLen,\n flagsValue,\n // eslint-disable-next-line no-bitwise\n flag_recovery: (flagsValue & 1) !== 0,\n // eslint-disable-next-line no-bitwise\n flag_signed_mcu_code: (flagsValue & 2) !== 0,\n // eslint-disable-next-line no-bitwise\n flag_onboarded: (flagsValue & 4) !== 0,\n // eslint-disable-next-line no-bitwise\n flag_pin_validated: (flagsValue & 128) !== 0,\n }\n }, processErrorResponse)\n }\n\n async deviceInfo() {\n return this.transport.send(0xe0, 0x01, 0, 0, Buffer.from([]), [ERROR_CODE.NoError, 0x6e00]).then((response: any) => {\n const errorCodeData = response.slice(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n if (returnCode === 0x6e00) {\n return {\n return_code: returnCode,\n error_message: 'This command is only available in the Dashboard',\n }\n }\n\n const targetId = response.slice(0, 4).toString('hex')\n\n let pos = 4\n const secureElementVersionLen = response[pos]\n pos += 1\n const seVersion = response.slice(pos, pos + secureElementVersionLen).toString()\n pos += secureElementVersionLen\n\n const flagsLen = response[pos]\n pos += 1\n const flag = response.slice(pos, pos + flagsLen).toString('hex')\n pos += flagsLen\n\n const mcuVersionLen = response[pos]\n pos += 1\n // Patch issue in mcu version\n let tmp = response.slice(pos, pos + mcuVersionLen)\n if (tmp[mcuVersionLen - 1] === 0) {\n tmp = response.slice(pos, pos + mcuVersionLen - 1)\n }\n const mcuVersion = tmp.toString()\n\n return {\n return_code: returnCode,\n error_message: errorCodeToString(returnCode),\n // //\n targetId,\n seVersion,\n flag,\n mcuVersion,\n }\n }, processErrorResponse)\n }\n\n async publicKey(path: number[]) {\n try {\n const serializedPath = await this.serializePath(path)\n\n switch (this.versionResponse.major) {\n case 1:\n return publicKeyv1(this, serializedPath)\n case 2: {\n const data = Buffer.concat([CosmosApp.serializeHRP('cosmos'), serializedPath])\n return publicKeyv2(this, data)\n }\n default:\n return {\n return_code: 0x6400,\n error_message: 'App Version is not supported',\n }\n }\n } catch (e) {\n return processErrorResponse(e)\n }\n }\n\n async getAddressAndPubKey(path: number[], hrp: string, showInDevice = false) {\n return this.serializePath(path)\n .then((serializedPath: Buffer) => {\n const data = Buffer.concat([CosmosApp.serializeHRP(hrp), serializedPath])\n return this.transport\n .send(CLA, INS.GET_ADDR_SECP256K1, showInDevice ? P1_VALUES.SHOW_ADDRESS_IN_DEVICE : P1_VALUES.ONLY_RETRIEVE, 0, data, [ERROR_CODE.NoError])\n .then((response: any) => {\n const errorCodeData = response.slice(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n const compressedPk = Buffer.from(response.slice(0, 33))\n const bech32Address = Buffer.from(response.slice(33, -2)).toString()\n\n return {\n bech32_address: bech32Address,\n compressed_pk: compressedPk,\n return_code: returnCode,\n error_message: errorCodeToString(returnCode),\n }\n }, processErrorResponse)\n })\n .catch(err => processErrorResponse(err))\n }\n\n async showAddressAndPubKey(path: number[], hrp: string) {\n return this.getAddressAndPubKey(path, hrp, true)\n }\n\n async signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {\n switch (this.versionResponse.major) {\n case 1:\n return signSendChunkv1(this, chunkIdx, chunkNum, chunk, txType)\n case 2:\n return signSendChunkv2(this, chunkIdx, chunkNum, chunk, txType)\n default:\n return {\n return_code: 0x6400,\n error_message: 'App Version is not supported',\n }\n }\n }\n\n async sign(path: number[], buffer: Buffer, txType = P2_VALUES.JSON) {\n return this.signGetChunks(path, buffer).then(chunks => {\n return this.signSendChunk(1, chunks.length, chunks[0], txType).then(async response => {\n let result = {\n return_code: response.return_code,\n error_message: response.error_message,\n signature: null,\n }\n\n for (let i = 1; i < chunks.length; i += 1) {\n // eslint-disable-next-line no-await-in-loop\n result = await this.signSendChunk(1 + i, chunks.length, chunks[i], txType)\n if (result.return_code !== ERROR_CODE.NoError) {\n break\n }\n }\n\n return {\n return_code: result.return_code,\n error_message: result.error_message,\n // ///\n signature: result.signature,\n }\n }, processErrorResponse)\n }, processErrorResponse)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cosmosApp.js","sourceRoot":"","sources":["../src/cosmosApp.ts"],"names":[],"mappings":"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","sourcesContent":["/** ******************************************************************************\n * (c) 2018 - 2022 Zondax AG\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ******************************************************************************* */\nimport { CHUNK_SIZE, CLA, INS, errorCodeToString, getVersion, processErrorResponse, ERROR_CODE, P1_VALUES, P2_VALUES } from './common'\n\nimport Transport from '@ledgerhq/hw-transport'\nimport { publicKeyv1, serializePathv1, signSendChunkv1 } from './commandsV1'\nimport { publicKeyv2, serializePathv2, signSendChunkv2 } from './commandsV2'\n\nconst crypto = require('crypto')\nconst bech32 = require('bech32')\nconst Ripemd160 = require('ripemd160')\n\nexport class CosmosApp {\n transport: Transport\n versionResponse?: any\n\n constructor(transport: any) {\n if (!transport) {\n throw new Error('Transport has not been defined')\n }\n\n this.transport = transport\n }\n\n static serializeHRP(hrp?: string) {\n if (hrp == null || hrp.length < 3 || hrp.length > 83) {\n throw new Error('Invalid HRP')\n }\n const buf = Buffer.alloc(1 + hrp.length)\n buf.writeUInt8(hrp.length, 0)\n buf.write(hrp, 1)\n return buf\n }\n\n static getBech32FromPK(hrp: string, pk: Buffer) {\n if (pk.length !== 33) {\n throw new Error('expected compressed public key [31 bytes]')\n }\n const hashSha256 = crypto.createHash('sha256').update(pk).digest()\n const hashRip = new Ripemd160().update(hashSha256).digest()\n return bech32.encode(hrp, bech32.toWords(hashRip))\n }\n\n async serializePath(path: number[]) {\n this.versionResponse = await getVersion(this.transport)\n\n if (this.versionResponse.return_code !== ERROR_CODE.NoError) {\n throw this.versionResponse\n }\n\n switch (this.versionResponse.major) {\n case 1:\n return serializePathv1(path)\n case 2:\n return serializePathv2(path)\n default:\n return Buffer.alloc(0)\n }\n }\n\n async signGetChunks(path: number[], buffer: Buffer) {\n const serializedPath = await this.serializePath(path)\n\n const chunks = []\n chunks.push(serializedPath)\n\n for (let i = 0; i < buffer.length; i += CHUNK_SIZE) {\n let end = i + CHUNK_SIZE\n if (i > buffer.length) {\n end = buffer.length\n }\n chunks.push(buffer.slice(i, end))\n }\n\n return chunks\n }\n\n async prepareChunks(path: number[], buffer: Buffer, hrp?: string) {\n const serializedPath = await this.serializePath(path)\n const firstChunk = (hrp === undefined) ? serializedPath\n : Buffer.concat([serializedPath, CosmosApp.serializeHRP(hrp)])\n\n const chunks = []\n chunks.push(firstChunk)\n\n for (let i = 0; i < buffer.length; i += CHUNK_SIZE) {\n let end = i + CHUNK_SIZE\n if (i > buffer.length) {\n end = buffer.length\n }\n chunks.push(buffer.subarray(i, end))\n }\n\n return chunks\n }\n\n async getVersion() {\n try {\n this.versionResponse = await getVersion(this.transport)\n return this.versionResponse\n } catch (e) {\n return processErrorResponse(e)\n }\n }\n\n async appInfo() {\n return this.transport.send(0xb0, 0x01, 0, 0).then((response: any) => {\n const errorCodeData = response.slice(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n let appName = ''\n let appVersion = ''\n let flagLen = 0\n let flagsValue = 0\n\n if (response[0] !== 1) {\n // Ledger responds with format ID 1. There is no spec for any format != 1\n return {\n return_code: 0x9001,\n error_message: 'response format ID not recognized',\n }\n } else {\n const appNameLen = response[1]\n appName = response.slice(2, 2 + appNameLen).toString('ascii')\n let idx = 2 + appNameLen\n const appVersionLen = response[idx]\n idx += 1\n appVersion = response.slice(idx, idx + appVersionLen).toString('ascii')\n idx += appVersionLen\n const appFlagsLen = response[idx]\n idx += 1\n flagLen = appFlagsLen\n flagsValue = response[idx]\n }\n\n return {\n return_code: returnCode,\n error_message: errorCodeToString(returnCode),\n // //\n appName,\n appVersion,\n flagLen,\n flagsValue,\n // eslint-disable-next-line no-bitwise\n flag_recovery: (flagsValue & 1) !== 0,\n // eslint-disable-next-line no-bitwise\n flag_signed_mcu_code: (flagsValue & 2) !== 0,\n // eslint-disable-next-line no-bitwise\n flag_onboarded: (flagsValue & 4) !== 0,\n // eslint-disable-next-line no-bitwise\n flag_pin_validated: (flagsValue & 128) !== 0,\n }\n }, processErrorResponse)\n }\n\n async deviceInfo() {\n return this.transport.send(0xe0, 0x01, 0, 0, Buffer.from([]), [ERROR_CODE.NoError, 0x6e00]).then((response: any) => {\n const errorCodeData = response.slice(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n if (returnCode === 0x6e00) {\n return {\n return_code: returnCode,\n error_message: 'This command is only available in the Dashboard',\n }\n }\n\n const targetId = response.slice(0, 4).toString('hex')\n\n let pos = 4\n const secureElementVersionLen = response[pos]\n pos += 1\n const seVersion = response.slice(pos, pos + secureElementVersionLen).toString()\n pos += secureElementVersionLen\n\n const flagsLen = response[pos]\n pos += 1\n const flag = response.slice(pos, pos + flagsLen).toString('hex')\n pos += flagsLen\n\n const mcuVersionLen = response[pos]\n pos += 1\n // Patch issue in mcu version\n let tmp = response.slice(pos, pos + mcuVersionLen)\n if (tmp[mcuVersionLen - 1] === 0) {\n tmp = response.slice(pos, pos + mcuVersionLen - 1)\n }\n const mcuVersion = tmp.toString()\n\n return {\n return_code: returnCode,\n error_message: errorCodeToString(returnCode),\n // //\n targetId,\n seVersion,\n flag,\n mcuVersion,\n }\n }, processErrorResponse)\n }\n\n async publicKey(path: number[]) {\n try {\n const serializedPath = await this.serializePath(path)\n\n switch (this.versionResponse.major) {\n case 1:\n return publicKeyv1(this, serializedPath)\n case 2: {\n const data = Buffer.concat([CosmosApp.serializeHRP('cosmos'), serializedPath])\n return publicKeyv2(this, data)\n }\n default:\n return {\n return_code: 0x6400,\n error_message: 'App Version is not supported',\n }\n }\n } catch (e) {\n return processErrorResponse(e)\n }\n }\n\n async getAddressAndPubKey(path: number[], hrp: string, showInDevice = false) {\n return this.serializePath(path)\n .then((serializedPath: Buffer) => {\n const data = Buffer.concat([CosmosApp.serializeHRP(hrp), serializedPath])\n return this.transport\n .send(CLA, INS.GET_ADDR_SECP256K1, showInDevice ? P1_VALUES.SHOW_ADDRESS_IN_DEVICE : P1_VALUES.ONLY_RETRIEVE, 0, data, [\n ERROR_CODE.NoError,\n ])\n .then((response: any) => {\n const errorCodeData = response.slice(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n const compressedPk = Buffer.from(response.slice(0, 33))\n const bech32Address = Buffer.from(response.slice(33, -2)).toString()\n\n return {\n bech32_address: bech32Address,\n compressed_pk: compressedPk,\n return_code: returnCode,\n error_message: errorCodeToString(returnCode),\n }\n }, processErrorResponse)\n })\n .catch(err => processErrorResponse(err))\n }\n\n async showAddressAndPubKey(path: number[], hrp: string) {\n return this.getAddressAndPubKey(path, hrp, true)\n }\n\n async signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {\n switch (this.versionResponse.major) {\n case 1:\n return signSendChunkv1(this, chunkIdx, chunkNum, chunk, txType)\n case 2:\n return signSendChunkv2(this, chunkIdx, chunkNum, chunk, txType)\n default:\n return {\n return_code: 0x6400,\n error_message: 'App Version is not supported',\n }\n }\n }\n\n // async sign(path: number[], buffer: Buffer, txType = P2_VALUES.JSON) {\n // return this.signGetChunks(path, buffer).then(chunks => {\n // return this.signSendChunk(1, chunks.length, chunks[0], txType).then(async response => {\n // let result = {\n // return_code: response.return_code,\n // error_message: response.error_message,\n // signature: null,\n // }\n\n // for (let i = 1; i < chunks.length; i += 1) {\n // // eslint-disable-next-line no-await-in-loop\n // result = await this.signSendChunk(1 + i, chunks.length, chunks[i], txType)\n // if (result.return_code !== ERROR_CODE.NoError) {\n // break\n // }\n // }\n\n // return {\n // return_code: result.return_code,\n // error_message: result.error_message,\n // // ///\n // signature: result.signature,\n // }\n // }, processErrorResponse)\n // }, processErrorResponse)\n // }\n\n async sign(path: number[], buffer: Buffer, hrp?: string, txType = P2_VALUES.JSON) {\n return this.prepareChunks(path, buffer, hrp).then(chunks => {\n return this.signSendChunk(1, chunks.length, chunks[0], txType).then(async response => {\n let result = {\n return_code: response.return_code,\n error_message: response.error_message,\n signature: null,\n }\n\n for (let i = 1; i < chunks.length; i += 1) {\n // eslint-disable-next-line no-await-in-loop\n result = await this.signSendChunk(1 + i, chunks.length, chunks[i], txType)\n if (result.return_code !== ERROR_CODE.NoError) {\n break\n }\n }\n\n return {\n return_code: result.return_code,\n error_message: result.error_message,\n // ///\n signature: result.signature,\n }\n }, processErrorResponse)\n }, processErrorResponse)\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zondax/ledger-cosmos-js",
|
|
3
|
-
"author": "
|
|
3
|
+
"author": "Zondax AG",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.3",
|
|
6
6
|
"description": "Node API for Cosmos App (Ledger Nano S/S+/X)",
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"typings": "./dist/index.d.ts",
|
|
@@ -30,8 +30,17 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@babel/runtime": "^7.14.8",
|
|
32
32
|
"@ledgerhq/hw-transport": "6.27.1",
|
|
33
|
+
"@ledgerhq/hw-transport-u2f": "^5.36.0-deprecated",
|
|
34
|
+
"@vue/cli-plugin-typescript": "^5.0.8",
|
|
35
|
+
"@vue/cli-service": "^5.0.8",
|
|
33
36
|
"bech32": "^1.1.4",
|
|
34
|
-
"
|
|
37
|
+
"buffer": "^6.0.3",
|
|
38
|
+
"crypto": "^1.0.1",
|
|
39
|
+
"crypto-browserify": "^3.12.0",
|
|
40
|
+
"ripemd160": "^2.0.2",
|
|
41
|
+
"stream-browserify": "^3.0.0",
|
|
42
|
+
"vue": "^2.7.7",
|
|
43
|
+
"vue-template-compiler": "^2.7.10"
|
|
35
44
|
},
|
|
36
45
|
"devDependencies": {
|
|
37
46
|
"@babel/cli": "^7.18.10",
|
|
@@ -47,11 +56,11 @@
|
|
|
47
56
|
"@types/node": "^18.11.9",
|
|
48
57
|
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
|
49
58
|
"@typescript-eslint/parser": "^5.33.1",
|
|
59
|
+
"babel-eslint": "^10.1.0",
|
|
60
|
+
"babel-jest": "^28.1.3",
|
|
50
61
|
"bip32": "2.0.6",
|
|
51
62
|
"bip39": "3.0.2",
|
|
52
63
|
"copyfiles": "^2.4.1",
|
|
53
|
-
"babel-eslint": "^10.1.0",
|
|
54
|
-
"babel-jest": "^28.1.3",
|
|
55
64
|
"core-js": "^3.15.2",
|
|
56
65
|
"crypto-js": "4.1.1",
|
|
57
66
|
"eslint": "^8.22.0",
|
|
@@ -65,7 +74,8 @@
|
|
|
65
74
|
"secp256k1": "^4.0.2",
|
|
66
75
|
"ts-jest": "26",
|
|
67
76
|
"ts-node": "^10.8.1",
|
|
68
|
-
"typescript": "^4.7.4"
|
|
77
|
+
"typescript": "^4.7.4",
|
|
78
|
+
"webpack": "^5.74.0"
|
|
69
79
|
},
|
|
70
80
|
"moduleDirectories": [
|
|
71
81
|
"node_modules",
|