From 44cf26208a6c55a5c4bf2cb7182dd6fccf2621ae Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Tue, 23 Sep 2025 23:27:36 -0700 Subject: [PATCH] Start converting adpu messages. --- package-lock.json | 3 ++- src/lib/ledger/index.ts | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d404a1..15cac08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "0.10.0", "license": "(GPL-3.0-or-later AND MIT AND ISC)", "workspaces": [ - "src/lib/ledger/*" + "src/lib/ledger/ble", + "src/lib/ledger/hid" ], "dependencies": { "@ledgerhq/device-management-kit": "0.9.0", diff --git a/src/lib/ledger/index.ts b/src/lib/ledger/index.ts index d60fbb4..336e23d 100644 --- a/src/lib/ledger/index.ts +++ b/src/lib/ledger/index.ts @@ -1,7 +1,7 @@ //! SPDX-FileCopyrightText: 2025 Chris Duncan //! SPDX-License-Identifier: GPL-3.0-or-later -import { DeviceManagementKit, DeviceManagementKitBuilder } from '@ledgerhq/device-management-kit' +import { ApduBuilder, DeviceManagementKit } from '@ledgerhq/device-management-kit' import { DmkBle } from '@ledgerhq/dmk-ble' import { DmkHid } from '@ledgerhq/dmk-hid' import { Account } from '../account' @@ -131,10 +131,19 @@ export class Ledger { } const account = dec.toBytes(index + HARDENED_OFFSET, 4) const data = new Uint8Array([...this.#DERIVATION_PATH, ...account]) + const apdu = new ApduBuilder({ + ins: this.#ADPU_CODES.account, + cla: this.#ADPU_CODES.class, + p1: show ? 1 : 0, + p2: this.#ADPU_CODES.paramUnused + }).addBufferToData(data).build().getRawApdu() const transport = await this.#transport.create(this.#openTimeout, this.#listenTimeout) - const response = await transport - .send(this.#ADPU_CODES.class, this.#ADPU_CODES.account, show ? 1 : 0, this.#ADPU_CODES.paramUnused, data as Buffer) + const response = await this.#transport + .sendApdu({ + sessionId: '', + apdu + }) .catch((err: any) => dec.toBytes(err.statusCode)) .finally(async () => await transport.close()) as Uint8Array -- 2.47.3