*/\r
async version (): Promise<LedgerVersionResponse> {\r
const transport = await this.DynamicTransport.create(this.openTimeout, this.listenTimeout)\r
- const response = await transport.send(0xb0, LEDGER_ADPU_CODES.version, LEDGER_ADPU_CODES.paramUnused, LEDGER_ADPU_CODES.paramUnused)\r
+ const response = await transport\r
+ .send(0xb0, LEDGER_ADPU_CODES.version, LEDGER_ADPU_CODES.paramUnused, LEDGER_ADPU_CODES.paramUnused)\r
.catch(err => dec.toBytes(err.statusCode)) as Uint8Array\r
await transport.close()\r
\r
- if (response.length === 2) {\r
- const statusCode = bytes.toDec(response) as number\r
- const status = LEDGER_STATUS_CODES[statusCode] ?? 'UNKNOWN_ERROR'\r
+ const statusCode = bytes.toDec(response.slice(-2)) as number\r
+ const status = LEDGER_STATUS_CODES[statusCode] ?? 'UNKNOWN_ERROR'\r
+ if (status !== 'OK') {\r
return { status, name: null, version: null }\r
}\r
\r
const name = response.slice(2, 2 + nameLength).toString()\r
const versionLength = response[2 + nameLength]\r
const version = response.slice(2 + nameLength + 1, 2 + nameLength + 1 + versionLength).toString()\r
- const statusCode = bytes.toDec(response.slice(-2)) as number\r
\r
- const status = LEDGER_STATUS_CODES[statusCode]\r
return { status, name, version }\r
}\r
\r
const data = new Uint8Array([LEDGER_ADPU_CODES.bip32DerivationLevel, ...purpose, ...coin, ...account])\r
\r
const transport = await this.DynamicTransport.create(this.openTimeout, this.listenTimeout)\r
- const response = await transport.send(LEDGER_ADPU_CODES.class, LEDGER_ADPU_CODES.account, show ? 0x01 : 0x00, LEDGER_ADPU_CODES.paramUnused, data as Buffer)\r
+ const response = await transport\r
+ .send(LEDGER_ADPU_CODES.class, LEDGER_ADPU_CODES.account, show ? 1 : 0, LEDGER_ADPU_CODES.paramUnused, data as Buffer)\r
.catch(err => dec.toBytes(err.statusCode)) as Uint8Array\r
await transport.close()\r
\r
- if (response.length === 2) {\r
- const statusCode = bytes.toDec(response) as number\r
- const status = LEDGER_STATUS_CODES[statusCode] ?? 'UNKNOWN_ERROR'\r
+ const statusCode = bytes.toDec(response.slice(-2)) as number\r
+ const status = LEDGER_STATUS_CODES[statusCode] ?? 'UNKNOWN_ERROR'\r
+ if (status !== 'OK') {\r
return { status, publicKey: null, address: null }\r
}\r
\r
const publicKey = bytes.toHex(response.slice(0, 32))\r
const addressLength = response[32]\r
const address = response.slice(33, 33 + addressLength).toString()\r
- const statusCode = bytes.toDec(response.slice(33 + addressLength)) as number\r
- const status = LEDGER_STATUS_CODES[statusCode]\r
+\r
return { status, publicKey, address }\r
} catch (err) {\r
return { status: 'ERROR_PARSING_ACCOUNT', publicKey: null, address: null }\r
const data = new Uint8Array([LEDGER_ADPU_CODES.bip32DerivationLevel, ...purpose, ...coin, ...account, ...previous, ...link, ...representative, ...balance, ...signature])\r
\r
const transport = await this.DynamicTransport.create(this.openTimeout, this.listenTimeout)\r
- const response = await transport.send(LEDGER_ADPU_CODES.class, LEDGER_ADPU_CODES.cacheBlock, LEDGER_ADPU_CODES.paramUnused, LEDGER_ADPU_CODES.paramUnused, data as Buffer)\r
+ const response = await transport\r
+ .send(LEDGER_ADPU_CODES.class, LEDGER_ADPU_CODES.cacheBlock, LEDGER_ADPU_CODES.paramUnused, LEDGER_ADPU_CODES.paramUnused, data as Buffer)\r
.then(res => bytes.toDec(res))\r
.catch(err => err.statusCode) as number\r
await transport.close()\r