You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| DevTools Websocket Server |[@ledgerhq/device-management-kit-devtools-websocket-server](https://www.npmjs.com/package/@ledgerhq/device-management-kit-devtools-websocket-server)| 1.0.1 |
73
+
74
+
## Legal notice
75
+
76
+
The Device Management Kit (DMK) is made available under an open source license and is free to use for development, testing, and integration purposes.
77
+
78
+
Please note that access to the DMK does not grant you any rights to access Ledger SAS backend services, nor any rights to use tokens, APIs, or infrastructure beyond what is explicitly allowed under the open source license. Access to Ledger SAS backend is strictly prohibited unless explicitly authorized by Ledger SAS.
79
+
80
+
Use of any token to gain access to Ledger SAS backend without a formal, written legal agreement is forbidden. Unauthorized use or access may lead to legal claims, including but not limited to injunctive relief, damages, or other remedies permitted under applicable law.
Copy file name to clipboardExpand all lines: apps/docs/pages/docs/references/signers/solana.mdx
+29-4Lines changed: 29 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -240,7 +240,7 @@ Sign a Solana off-chain message on Ledger devices. Supports multiple signing
240
240
modes via `SignMessageVersion`:
241
241
242
242
-**V0** (default) β original [off-chain message](https://docs.anza.xyz/proposals/off-chain-message-signing) header with `appDomain` and signer fields. Supported on all firmware with off-chain signing. Falls back to Legacy on `6a81`.
243
-
-**V1** β simplified header without `appDomain`; supports lexicographically sorted multi-signer payloads. Requires Solana device app version 1.14+. Falls back to V0 then Legacy on `6a81`.
243
+
-**V1** β simplified header per [sRFC 38](https://github.com/solana-foundation/SRFCs/discussions/3): no `appDomain`, no format byte. Use `signers` to bind the message to a specific application instead. Requires Solana device app version 1.14+. Falls back to V0 then Legacy on `6a81`.
244
244
-**Legacy** β compact header for backward compatibility with very old Solana app firmware. Current firmware will reject it.
245
245
-**Raw** β pass-through: the caller provides the fully formatted payload as a `Uint8Array` and the SDK sends it as-is with no header wrapping.
(UTF-8 encoded, padded/truncated to 32 bytes). Defaults to 32 zero bytes.
280
280
Ignored for V1, Legacy, and Raw.
281
281
282
+
-**signers**`Uint8Array[]`
283
+
V1 only: additional required signers to include in the off-chain message header alongside the user's key. Per sRFC 38, this is the recommended replacement for the V0 `appDomain` field β pass the dApp's public key here to bind the message to a specific application. Signers are sorted and deduplicated automatically.
284
+
Each entry must be a 32-byte Ed25519 public key. At most 254 additional signers are supported (1 slot is reserved for the user's key). Passing a signer with the wrong length or exceeding the limit returns an error before any device communication.
285
+
Ignored for V0, Legacy, and Raw.
286
+
282
287
-**skipOpenApp**`boolean`
283
288
If `true`, skips opening the Solana app on the device.
284
289
@@ -287,7 +292,8 @@ import { SignMessageVersion } from "@ledgerhq/device-signer-kit-solana";
287
292
288
293
typeMessageOptions= {
289
294
version?:SignMessageVersion;
290
-
appDomain?:string;
295
+
appDomain?:string; // V0 only
296
+
signers?:Uint8Array[]; // V1 only
291
297
skipOpenApp?:boolean;
292
298
};
293
299
```
@@ -324,11 +330,14 @@ type SignMessageDAOutput = {
V1 removes `appDomain` (no central registry β anyone could spoof it). To bind a message to a specific application, add the dApp's public key as a required signer instead:
365
+
366
+
```typescript
367
+
// V1 β bind message to dApp via required signer (sRFC 38)
368
+
const { observable } =signerSolana.signMessage(
369
+
"44'/501'/0'/0'",
370
+
"Hello World",
371
+
{
372
+
version: SignMessageVersion.V1,
373
+
signers: [dAppPubkeyBytes], // dApp's Ed25519 public key as Uint8Array(32)
374
+
},
375
+
);
376
+
```
377
+
353
378
#### Raw Mode
354
379
355
380
In Raw mode, the caller is responsible for constructing the full off-chain
Copy file name to clipboardExpand all lines: packages/device-management-kit/CHANGELOG.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,17 @@
1
1
# @ledgerhq/device-management-kit
2
2
3
+
## 1.4.0
4
+
5
+
### Minor Changes
6
+
7
+
-[#1382](https://github.com/LedgerHQ/device-sdk-ts/pull/1382)[`68947bf`](https://github.com/LedgerHQ/device-sdk-ts/commit/68947bfa299c7c7620c7a3bf3de5788555ba4961) Thanks [@pvautherin-ledger](https://github.com/pvautherin-ledger)! - Add Language Package install device action and Delete command
8
+
9
+
### Patch Changes
10
+
11
+
-[#1467](https://github.com/LedgerHQ/device-sdk-ts/pull/1467)[`16e08f2`](https://github.com/LedgerHQ/device-sdk-ts/commit/16e08f2e504e5361f6a0e70de679ad588b5034b2) Thanks [@aussedatlo](https://github.com/aussedatlo)! - Fix React Native compatibility in `DmkNetworkClient`: serialize query params manually instead of using `URLSearchParams.set` (not implemented in React Native), and guard optional Web globals (`Blob`, `FormData`, `URLSearchParams`, `ReadableStream`) in `isRawBody` to avoid `ReferenceError` on runtimes where they are missing.
0 commit comments