]> git.codecow.com Git - libnemo.git/commitdiff
Start converting adpu messages.
authorChris Duncan <chris@zoso.dev>
Wed, 24 Sep 2025 06:27:36 +0000 (23:27 -0700)
committerChris Duncan <chris@zoso.dev>
Wed, 24 Sep 2025 06:27:36 +0000 (23:27 -0700)
package-lock.json
src/lib/ledger/index.ts

index 8d404a134f8ac85a39652bb8de57d56a9db217b5..15cac0877fc808c40df7a84a24cbb7a1f8a01258 100644 (file)
@@ -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",
index d60fbb439fb1824385662020b9e0b9e2e7ddcda1..336e23dd84aa8bf4d17635cc127d5aa7910a72e1 100644 (file)
@@ -1,7 +1,7 @@
 //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
 //! 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