@ledgerhq/device-core 0.2.1-next.1 → 0.3.0-nightly.0

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.
Files changed (127) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +9 -9
  3. package/lib/commands/entities/AppStorageInfo.d.ts +8 -0
  4. package/lib/commands/entities/AppStorageInfo.d.ts.map +1 -0
  5. package/lib/commands/entities/AppStorageInfo.js +3 -0
  6. package/lib/commands/entities/AppStorageInfo.js.map +1 -0
  7. package/lib/commands/use-cases/app-backup/backupAppStorage.d.ts +18 -0
  8. package/lib/commands/use-cases/app-backup/backupAppStorage.d.ts.map +1 -0
  9. package/lib/commands/use-cases/app-backup/backupAppStorage.js +98 -0
  10. package/lib/commands/use-cases/app-backup/backupAppStorage.js.map +1 -0
  11. package/lib/commands/use-cases/app-backup/backupAppStorage.test.d.ts +2 -0
  12. package/lib/commands/use-cases/app-backup/backupAppStorage.test.d.ts.map +1 -0
  13. package/lib/commands/use-cases/app-backup/backupAppStorage.test.js +56 -0
  14. package/lib/commands/use-cases/app-backup/backupAppStorage.test.js.map +1 -0
  15. package/lib/commands/use-cases/app-backup/getAppStorageInfo.d.ts +20 -0
  16. package/lib/commands/use-cases/app-backup/getAppStorageInfo.d.ts.map +1 -0
  17. package/lib/commands/use-cases/app-backup/getAppStorageInfo.js +104 -0
  18. package/lib/commands/use-cases/app-backup/getAppStorageInfo.js.map +1 -0
  19. package/lib/commands/use-cases/app-backup/getAppStorageInfo.test.d.ts +2 -0
  20. package/lib/commands/use-cases/app-backup/getAppStorageInfo.test.d.ts.map +1 -0
  21. package/lib/commands/use-cases/app-backup/getAppStorageInfo.test.js +59 -0
  22. package/lib/commands/use-cases/app-backup/getAppStorageInfo.test.js.map +1 -0
  23. package/lib/commands/use-cases/app-backup/restoreAppStorage.d.ts +12 -0
  24. package/lib/commands/use-cases/app-backup/restoreAppStorage.d.ts.map +1 -0
  25. package/lib/commands/use-cases/app-backup/restoreAppStorage.js +93 -0
  26. package/lib/commands/use-cases/app-backup/restoreAppStorage.js.map +1 -0
  27. package/lib/commands/use-cases/app-backup/restoreAppStorage.test.d.ts +2 -0
  28. package/lib/commands/use-cases/app-backup/restoreAppStorage.test.d.ts.map +1 -0
  29. package/lib/commands/use-cases/app-backup/restoreAppStorage.test.js +54 -0
  30. package/lib/commands/use-cases/app-backup/restoreAppStorage.test.js.map +1 -0
  31. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.d.ts +11 -0
  32. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.d.ts.map +1 -0
  33. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.js +83 -0
  34. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.js.map +1 -0
  35. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.test.d.ts +2 -0
  36. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.test.d.ts.map +1 -0
  37. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.test.js +49 -0
  38. package/lib/commands/use-cases/app-backup/restoreAppStorageCommit.test.js.map +1 -0
  39. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.d.ts +13 -0
  40. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.d.ts.map +1 -0
  41. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.js +99 -0
  42. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.js.map +1 -0
  43. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.test.d.ts +2 -0
  44. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.test.d.ts.map +1 -0
  45. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.test.js +52 -0
  46. package/lib/commands/use-cases/app-backup/restoreAppStorageInit.test.js.map +1 -0
  47. package/lib/commands/use-cases/getDeviceName.d.ts.map +1 -1
  48. package/lib/commands/use-cases/getDeviceName.js +15 -0
  49. package/lib/commands/use-cases/getDeviceName.js.map +1 -1
  50. package/lib/errors.d.ts +40 -0
  51. package/lib/errors.d.ts.map +1 -0
  52. package/lib/errors.js +30 -0
  53. package/lib/errors.js.map +1 -0
  54. package/lib/index.d.ts +6 -0
  55. package/lib/index.d.ts.map +1 -1
  56. package/lib/index.js +11 -1
  57. package/lib/index.js.map +1 -1
  58. package/lib-es/commands/entities/AppStorageInfo.d.ts +8 -0
  59. package/lib-es/commands/entities/AppStorageInfo.d.ts.map +1 -0
  60. package/lib-es/commands/entities/AppStorageInfo.js +2 -0
  61. package/lib-es/commands/entities/AppStorageInfo.js.map +1 -0
  62. package/lib-es/commands/use-cases/app-backup/backupAppStorage.d.ts +18 -0
  63. package/lib-es/commands/use-cases/app-backup/backupAppStorage.d.ts.map +1 -0
  64. package/lib-es/commands/use-cases/app-backup/backupAppStorage.js +93 -0
  65. package/lib-es/commands/use-cases/app-backup/backupAppStorage.js.map +1 -0
  66. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.d.ts +2 -0
  67. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.d.ts.map +1 -0
  68. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.js +54 -0
  69. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.js.map +1 -0
  70. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.d.ts +20 -0
  71. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.d.ts.map +1 -0
  72. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.js +99 -0
  73. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.js.map +1 -0
  74. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.d.ts +2 -0
  75. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.d.ts.map +1 -0
  76. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.js +57 -0
  77. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.js.map +1 -0
  78. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.d.ts +12 -0
  79. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.d.ts.map +1 -0
  80. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.js +88 -0
  81. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.js.map +1 -0
  82. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.d.ts +2 -0
  83. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.d.ts.map +1 -0
  84. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.js +52 -0
  85. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.js.map +1 -0
  86. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.d.ts +11 -0
  87. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.d.ts.map +1 -0
  88. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.js +78 -0
  89. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.js.map +1 -0
  90. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.d.ts +2 -0
  91. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.d.ts.map +1 -0
  92. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.js +47 -0
  93. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.js.map +1 -0
  94. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.d.ts +13 -0
  95. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.d.ts.map +1 -0
  96. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.js +94 -0
  97. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.js.map +1 -0
  98. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.d.ts +2 -0
  99. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.d.ts.map +1 -0
  100. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.js +50 -0
  101. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.js.map +1 -0
  102. package/lib-es/commands/use-cases/getDeviceName.d.ts.map +1 -1
  103. package/lib-es/commands/use-cases/getDeviceName.js +15 -0
  104. package/lib-es/commands/use-cases/getDeviceName.js.map +1 -1
  105. package/lib-es/errors.d.ts +40 -0
  106. package/lib-es/errors.d.ts.map +1 -0
  107. package/lib-es/errors.js +27 -0
  108. package/lib-es/errors.js.map +1 -0
  109. package/lib-es/index.d.ts +6 -0
  110. package/lib-es/index.d.ts.map +1 -1
  111. package/lib-es/index.js +5 -0
  112. package/lib-es/index.js.map +1 -1
  113. package/package.json +6 -6
  114. package/src/commands/entities/AppStorageInfo.ts +7 -0
  115. package/src/commands/use-cases/app-backup/backupAppStorage.test.ts +52 -0
  116. package/src/commands/use-cases/app-backup/backupAppStorage.ts +97 -0
  117. package/src/commands/use-cases/app-backup/getAppStorageInfo.test.ts +63 -0
  118. package/src/commands/use-cases/app-backup/getAppStorageInfo.ts +102 -0
  119. package/src/commands/use-cases/app-backup/restoreAppStorage.test.ts +57 -0
  120. package/src/commands/use-cases/app-backup/restoreAppStorage.ts +93 -0
  121. package/src/commands/use-cases/app-backup/restoreAppStorageCommit.test.ts +45 -0
  122. package/src/commands/use-cases/app-backup/restoreAppStorageCommit.ts +82 -0
  123. package/src/commands/use-cases/app-backup/restoreAppStorageInit.test.ts +55 -0
  124. package/src/commands/use-cases/app-backup/restoreAppStorageInit.ts +96 -0
  125. package/src/commands/use-cases/getDeviceName.ts +16 -0
  126. package/src/errors.ts +29 -0
  127. package/src/index.ts +6 -0
@@ -3,6 +3,14 @@ import { LocalTracer } from "@ledgerhq/logs";
3
3
  import { APDU } from "../entities/APDU";
4
4
  import { parseGetDeviceNameResponse } from "./parseGetDeviceNameResponse";
5
5
 
6
+ /**
7
+ * A first APDU that we send because getDeviceName sometimes misbehaves on LNX
8
+ * if it's not sent.
9
+ * cf. https://github.com/LedgerHQ/ledger-live/pull/2250 where it was removed
10
+ * cf. https://github.com/LedgerHQ/ledger-live/pull/2401 where it was added back
11
+ */
12
+ const CLEANING_APDU: APDU = [0xe0, 0x50, 0x00, 0x00, undefined];
13
+
6
14
  const GET_DEVICE_NAME_APDU: APDU = [0xe0, 0xd2, 0x00, 0x00, Buffer.from([])];
7
15
 
8
16
  export async function getDeviceName(transport: Transport): Promise<string> {
@@ -12,6 +20,14 @@ export async function getDeviceName(transport: Transport): Promise<string> {
12
20
  });
13
21
  tracer.trace("Start");
14
22
 
23
+ try {
24
+ // Legacy: prevents bad apdu response for LNX
25
+ await transport.send(...CLEANING_APDU);
26
+ } catch (error) {
27
+ tracer.trace(`Error on 0xe0500000: ${error}`, { error });
28
+ }
29
+ tracer.trace("Sent cleaning 0xe0500000");
30
+
15
31
  const res = await transport.send(...GET_DEVICE_NAME_APDU, [
16
32
  StatusCodes.OK,
17
33
  StatusCodes.DEVICE_NOT_ONBOARDED,
package/src/errors.ts ADDED
@@ -0,0 +1,29 @@
1
+ import { createCustomErrorClass } from "@ledgerhq/errors";
2
+
3
+ // 0x5123
4
+ export const AppNotFound = createCustomErrorClass("AppNotFound");
5
+ export const InvalidContext = createCustomErrorClass("InvalidContext");
6
+ // 0x670a
7
+ export const InvalidAppNameLength = createCustomErrorClass("InvalidAppNameLength");
8
+ // 0x5419
9
+ export const GenerateAesKeyFailed = createCustomErrorClass("GenerateAesKeyFailed");
10
+ // 0x541a
11
+ export const InternalCryptoOperationFailed = createCustomErrorClass(
12
+ "InternalCryptoOperationFailed",
13
+ );
14
+ // 0x541b
15
+ export const InternalComputeAesCmacFailed = createCustomErrorClass("InternalComputeAesCmacFailed");
16
+ // 0x541c
17
+ export const EncryptAppStorageFailed = createCustomErrorClass("EncryptAppStorageFailed");
18
+ // 0x5502
19
+ export const PinNotSet = createCustomErrorClass("PinNotSet");
20
+ // 0x684a
21
+ export const InvalidBackupHeader = createCustomErrorClass("InvalidBackupHeader");
22
+ // 0x6733
23
+ export const InvalidBackupLength = createCustomErrorClass("InvalidBackupLength");
24
+ // 0x6642
25
+ export const InvalidBackupState = createCustomErrorClass("InvalidBackupState");
26
+ // 0x6643
27
+ export const InvalidRestoreState = createCustomErrorClass("InvalidRestoreState");
28
+ // 0x6734
29
+ export const InvalidChunkLength = createCustomErrorClass("InvalidChunkLength");
package/src/index.ts CHANGED
@@ -22,6 +22,12 @@ export { getDeviceName } from "./commands/use-cases/getDeviceName";
22
22
  export { isHardwareVersionSupported } from "./commands/use-cases/isHardwareVersionSupported";
23
23
  export { isBootloaderVersionSupported } from "./commands/use-cases/isBootloaderVersionSupported";
24
24
  export { getVersion } from "./commands/use-cases/getVersion";
25
+ export type { AppStorageInfo } from "./commands/entities/AppStorageInfo";
26
+ export { backupAppStorage } from "./commands/use-cases/app-backup/backupAppStorage";
27
+ export { getAppStorageInfo } from "./commands/use-cases/app-backup/getAppStorageInfo";
28
+ export { restoreAppStorage } from "./commands/use-cases/app-backup/restoreAppStorage";
29
+ export { restoreAppStorageCommit } from "./commands/use-cases/app-backup/restoreAppStorageCommit";
30
+ export { restoreAppStorageInit } from "./commands/use-cases/app-backup/restoreAppStorageInit";
25
31
  // src/capabilities/
26
32
  export {
27
33
  type CLSSupportedDeviceModelId,