@ledgerhq/device-core 0.2.1 → 0.2.2-nightly.1

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 (120) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +17 -0
  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/errors.d.ts +40 -0
  48. package/lib/errors.d.ts.map +1 -0
  49. package/lib/errors.js +30 -0
  50. package/lib/errors.js.map +1 -0
  51. package/lib/index.d.ts +6 -0
  52. package/lib/index.d.ts.map +1 -1
  53. package/lib/index.js +11 -1
  54. package/lib/index.js.map +1 -1
  55. package/lib-es/commands/entities/AppStorageInfo.d.ts +8 -0
  56. package/lib-es/commands/entities/AppStorageInfo.d.ts.map +1 -0
  57. package/lib-es/commands/entities/AppStorageInfo.js +2 -0
  58. package/lib-es/commands/entities/AppStorageInfo.js.map +1 -0
  59. package/lib-es/commands/use-cases/app-backup/backupAppStorage.d.ts +18 -0
  60. package/lib-es/commands/use-cases/app-backup/backupAppStorage.d.ts.map +1 -0
  61. package/lib-es/commands/use-cases/app-backup/backupAppStorage.js +93 -0
  62. package/lib-es/commands/use-cases/app-backup/backupAppStorage.js.map +1 -0
  63. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.d.ts +2 -0
  64. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.d.ts.map +1 -0
  65. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.js +54 -0
  66. package/lib-es/commands/use-cases/app-backup/backupAppStorage.test.js.map +1 -0
  67. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.d.ts +20 -0
  68. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.d.ts.map +1 -0
  69. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.js +99 -0
  70. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.js.map +1 -0
  71. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.d.ts +2 -0
  72. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.d.ts.map +1 -0
  73. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.js +57 -0
  74. package/lib-es/commands/use-cases/app-backup/getAppStorageInfo.test.js.map +1 -0
  75. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.d.ts +12 -0
  76. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.d.ts.map +1 -0
  77. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.js +88 -0
  78. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.js.map +1 -0
  79. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.d.ts +2 -0
  80. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.d.ts.map +1 -0
  81. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.js +52 -0
  82. package/lib-es/commands/use-cases/app-backup/restoreAppStorage.test.js.map +1 -0
  83. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.d.ts +11 -0
  84. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.d.ts.map +1 -0
  85. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.js +78 -0
  86. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.js.map +1 -0
  87. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.d.ts +2 -0
  88. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.d.ts.map +1 -0
  89. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.js +47 -0
  90. package/lib-es/commands/use-cases/app-backup/restoreAppStorageCommit.test.js.map +1 -0
  91. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.d.ts +13 -0
  92. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.d.ts.map +1 -0
  93. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.js +94 -0
  94. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.js.map +1 -0
  95. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.d.ts +2 -0
  96. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.d.ts.map +1 -0
  97. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.js +50 -0
  98. package/lib-es/commands/use-cases/app-backup/restoreAppStorageInit.test.js.map +1 -0
  99. package/lib-es/errors.d.ts +40 -0
  100. package/lib-es/errors.d.ts.map +1 -0
  101. package/lib-es/errors.js +27 -0
  102. package/lib-es/errors.js.map +1 -0
  103. package/lib-es/index.d.ts +6 -0
  104. package/lib-es/index.d.ts.map +1 -1
  105. package/lib-es/index.js +5 -0
  106. package/lib-es/index.js.map +1 -1
  107. package/package.json +6 -6
  108. package/src/commands/entities/AppStorageInfo.ts +7 -0
  109. package/src/commands/use-cases/app-backup/backupAppStorage.test.ts +52 -0
  110. package/src/commands/use-cases/app-backup/backupAppStorage.ts +97 -0
  111. package/src/commands/use-cases/app-backup/getAppStorageInfo.test.ts +63 -0
  112. package/src/commands/use-cases/app-backup/getAppStorageInfo.ts +102 -0
  113. package/src/commands/use-cases/app-backup/restoreAppStorage.test.ts +57 -0
  114. package/src/commands/use-cases/app-backup/restoreAppStorage.ts +93 -0
  115. package/src/commands/use-cases/app-backup/restoreAppStorageCommit.test.ts +45 -0
  116. package/src/commands/use-cases/app-backup/restoreAppStorageCommit.ts +82 -0
  117. package/src/commands/use-cases/app-backup/restoreAppStorageInit.test.ts +55 -0
  118. package/src/commands/use-cases/app-backup/restoreAppStorageInit.ts +96 -0
  119. package/src/errors.ts +29 -0
  120. package/src/index.ts +6 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const hw_transport_1 = require("@ledgerhq/hw-transport");
13
+ const restoreAppStorage_1 = require("./restoreAppStorage");
14
+ const errors_1 = require("../../../errors");
15
+ jest.mock("@ledgerhq/hw-transport");
16
+ describe("restoreAppStorage", () => {
17
+ let transport;
18
+ const response = Buffer.from([0x90, 0x00]);
19
+ beforeEach(() => {
20
+ transport = {
21
+ send: jest.fn().mockResolvedValue(response),
22
+ getTraceContext: jest.fn().mockResolvedValue(undefined),
23
+ };
24
+ });
25
+ afterEach(() => {
26
+ jest.clearAllMocks();
27
+ });
28
+ it("should call the send function with correct parameters", () => __awaiter(void 0, void 0, void 0, function* () {
29
+ const chunk = Buffer.from("106RueduTemple");
30
+ yield (0, restoreAppStorage_1.restoreAppStorage)(transport, chunk);
31
+ expect(transport.send).toHaveBeenCalledWith(0xe0, 0x6d, 0x00, 0x00, Buffer.from([
32
+ 0x0e, 0x31, 0x30, 0x36, 0x52, 0x75, 0x65, 0x64, 0x75, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x65,
33
+ ]), [
34
+ hw_transport_1.StatusCodes.OK,
35
+ hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT,
36
+ hw_transport_1.StatusCodes.GEN_AES_KEY_FAILED,
37
+ hw_transport_1.StatusCodes.INTERNAL_CRYPTO_OPERATION_FAILED,
38
+ hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE,
39
+ hw_transport_1.StatusCodes.INVALID_RESTORE_STATE,
40
+ hw_transport_1.StatusCodes.INVALID_CHUNK_LENGTH,
41
+ hw_transport_1.StatusCodes.INVALID_BACKUP_HEADER,
42
+ ]);
43
+ }));
44
+ describe("parseResponse", () => {
45
+ it("should parse the response data correctly", () => {
46
+ expect(() => (0, restoreAppStorage_1.parseResponse)(response)).not.toThrow();
47
+ });
48
+ it("should throw TransportStatusError if the response status is invalid", () => {
49
+ const data = Buffer.from([0x66, 0x43]);
50
+ expect(() => (0, restoreAppStorage_1.parseResponse)(data)).toThrow(new errors_1.InvalidRestoreState("Invalid restore state, restore already performed."));
51
+ });
52
+ });
53
+ });
54
+ //# sourceMappingURL=restoreAppStorage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorage.test.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorage.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,yDAAgE;AAChE,2DAAuE;AACvE,4CAAsD;AAEtD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEpC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,SAAoB,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3C,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAC3C,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAChC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,IAAA,qCAAiB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACzC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACzF,CAAC,EACF;YACE,0BAAW,CAAC,EAAE;YACd,0BAAW,CAAC,gCAAgC;YAC5C,0BAAW,CAAC,kBAAkB;YAC9B,0BAAW,CAAC,gCAAgC;YAC5C,0BAAW,CAAC,uBAAuB;YACnC,0BAAW,CAAC,qBAAqB;YACjC,0BAAW,CAAC,oBAAoB;YAChC,0BAAW,CAAC,qBAAqB;SAClC,CACF,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,iCAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,iCAAa,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CACvC,IAAI,4BAAmB,CAAC,mDAAmD,CAAC,CAC7E,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import Transport from "@ledgerhq/hw-transport";
3
+ /**
4
+ * Restores the application storage commit.
5
+ *
6
+ * @param transport - The transport object used for communication with the device.
7
+ * @returns A promise that resolves to void.
8
+ */
9
+ export declare function restoreAppStorageCommit(transport: Transport): Promise<void>;
10
+ export declare function parseResponse(data: Buffer): void;
11
+ //# sourceMappingURL=restoreAppStorageCommit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageCommit.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageCommit.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AAqCtF;;;;;GAKG;AAEH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAuBhD"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.parseResponse = exports.restoreAppStorageCommit = void 0;
13
+ const hw_transport_1 = require("@ledgerhq/hw-transport");
14
+ const logs_1 = require("@ledgerhq/logs");
15
+ const errors_1 = require("../../../errors");
16
+ /**
17
+ * Name in documentation: INS_APP_STORAGE_RESTORE_COMMIT
18
+ * cla: 0xe0
19
+ * ins: 0x6e
20
+ * p1: 0x00
21
+ * p2: 0x00
22
+ * lc: 0x00
23
+ */
24
+ const RESTORE_APP_STORAGE_COMMIT = [0xe0, 0x6e, 0x00, 0x00];
25
+ /**
26
+ * 0x9000: Success.
27
+ * 0x5123: Invalid context, Restore Init must be called first.
28
+ * 0x5419: Internal error, crypto operaiton failed.
29
+ * 0x541B: Failed to verify backup authenticity.
30
+ * 0x662F: Invalid device state, recovery mode.
31
+ * 0x6734: Invalid size of the restored app storage.
32
+ */
33
+ const RESPONSE_STATUS_SET = [
34
+ hw_transport_1.StatusCodes.OK,
35
+ hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT,
36
+ hw_transport_1.StatusCodes.GEN_AES_KEY_FAILED,
37
+ hw_transport_1.StatusCodes.INTERNAL_COMPUTE_AES_CMAC_FAILED,
38
+ hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE,
39
+ hw_transport_1.StatusCodes.INVALID_CHUNK_LENGTH,
40
+ ];
41
+ /**
42
+ * Restores the application storage commit.
43
+ *
44
+ * @param transport - The transport object used for communication with the device.
45
+ * @returns A promise that resolves to void.
46
+ */
47
+ function restoreAppStorageCommit(transport) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const tracer = new logs_1.LocalTracer("hw", {
50
+ transport: transport.getTraceContext(),
51
+ function: "restoreAppStorageCommit",
52
+ });
53
+ tracer.trace("Start");
54
+ const apdu = [...RESTORE_APP_STORAGE_COMMIT, Buffer.from([0x00])];
55
+ const response = yield transport.send(...apdu, RESPONSE_STATUS_SET);
56
+ parseResponse(response);
57
+ });
58
+ }
59
+ exports.restoreAppStorageCommit = restoreAppStorageCommit;
60
+ function parseResponse(data) {
61
+ const tracer = new logs_1.LocalTracer("hw", {
62
+ function: "parseResponse@restoreAppStorageCommit",
63
+ });
64
+ const status = data.readUInt16BE(data.length - 2);
65
+ tracer.trace("Result status from 0xe06e0000", { status });
66
+ switch (status) {
67
+ case hw_transport_1.StatusCodes.OK:
68
+ return;
69
+ case hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT:
70
+ throw new errors_1.InvalidContext("Invalid context, restoreAppStorageInit must be called first.");
71
+ case hw_transport_1.StatusCodes.GEN_AES_KEY_FAILED:
72
+ throw new errors_1.GenerateAesKeyFailed("Internal error, crypto operation failed.");
73
+ case hw_transport_1.StatusCodes.INTERNAL_COMPUTE_AES_CMAC_FAILED:
74
+ throw new errors_1.InternalComputeAesCmacFailed("Failed to verify backup authenticity.");
75
+ case hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE:
76
+ break;
77
+ case hw_transport_1.StatusCodes.INVALID_CHUNK_LENGTH:
78
+ throw new errors_1.InvalidChunkLength("Invalid size of the restored app storage.");
79
+ }
80
+ throw new hw_transport_1.TransportStatusError(status);
81
+ }
82
+ exports.parseResponse = parseResponse;
83
+ //# sourceMappingURL=restoreAppStorageCommit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageCommit.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageCommit.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAsF;AACtF,yCAA6C;AAE7C,4CAKyB;AAEzB;;;;;;;GAOG;AACH,MAAM,0BAA0B,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAa;IACpC,0BAAW,CAAC,EAAE;IACd,0BAAW,CAAC,gCAAgC;IAC5C,0BAAW,CAAC,kBAAkB;IAC9B,0BAAW,CAAC,gCAAgC;IAC5C,0BAAW,CAAC,uBAAuB;IACnC,0BAAW,CAAC,oBAAoB;CACjC,CAAC;AAEF;;;;;GAKG;AAEH,SAAsB,uBAAuB,CAAC,SAAoB;;QAChE,MAAM,MAAM,GAAG,IAAI,kBAAW,CAAC,IAAI,EAAE;YACnC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE;YACtC,QAAQ,EAAE,yBAAyB;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,IAAI,GAAmB,CAAC,GAAG,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAElF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAEpE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;CAAA;AAZD,0DAYC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,IAAI,kBAAW,CAAC,IAAI,EAAE;QACnC,QAAQ,EAAE,uCAAuC;KAClD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,0BAAW,CAAC,EAAE;YACjB,OAAO;QACT,KAAK,0BAAW,CAAC,gCAAgC;YAC/C,MAAM,IAAI,uBAAc,CAAC,8DAA8D,CAAC,CAAC;QAC3F,KAAK,0BAAW,CAAC,kBAAkB;YACjC,MAAM,IAAI,6BAAoB,CAAC,0CAA0C,CAAC,CAAC;QAC7E,KAAK,0BAAW,CAAC,gCAAgC;YAC/C,MAAM,IAAI,qCAA4B,CAAC,uCAAuC,CAAC,CAAC;QAClF,KAAK,0BAAW,CAAC,uBAAuB;YACtC,MAAM;QACR,KAAK,0BAAW,CAAC,oBAAoB;YACnC,MAAM,IAAI,2BAAkB,CAAC,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,mCAAoB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAvBD,sCAuBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=restoreAppStorageCommit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageCommit.test.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageCommit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const hw_transport_1 = require("@ledgerhq/hw-transport");
13
+ const restoreAppStorageCommit_1 = require("./restoreAppStorageCommit");
14
+ const errors_1 = require("../../../errors");
15
+ jest.mock("@ledgerhq/hw-transport");
16
+ describe("restoreAppStorageCommit", () => {
17
+ let transport;
18
+ const response = Buffer.from([0x90, 0x00]);
19
+ beforeEach(() => {
20
+ transport = {
21
+ send: jest.fn().mockResolvedValue(response),
22
+ getTraceContext: jest.fn().mockResolvedValue(undefined),
23
+ };
24
+ });
25
+ afterEach(() => {
26
+ jest.clearAllMocks();
27
+ });
28
+ it("should call the send function with correct parameters", () => __awaiter(void 0, void 0, void 0, function* () {
29
+ yield (0, restoreAppStorageCommit_1.restoreAppStorageCommit)(transport);
30
+ expect(transport.send).toHaveBeenCalledWith(0xe0, 0x6e, 0x00, 0x00, Buffer.from([0x00]), [
31
+ hw_transport_1.StatusCodes.OK,
32
+ hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT,
33
+ hw_transport_1.StatusCodes.GEN_AES_KEY_FAILED,
34
+ hw_transport_1.StatusCodes.INTERNAL_COMPUTE_AES_CMAC_FAILED,
35
+ hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE,
36
+ hw_transport_1.StatusCodes.INVALID_CHUNK_LENGTH,
37
+ ]);
38
+ }));
39
+ describe("parseResponse", () => {
40
+ it("should parse the response data correctly", () => {
41
+ expect(() => (0, restoreAppStorageCommit_1.parseResponse)(response)).not.toThrow();
42
+ });
43
+ it("should throw TransportStatusError if the response status is invalid", () => {
44
+ const data = Buffer.from([0x67, 0x34]);
45
+ expect(() => (0, restoreAppStorageCommit_1.parseResponse)(data)).toThrow(new errors_1.InvalidChunkLength("Invalid size of the restored app storage."));
46
+ });
47
+ });
48
+ });
49
+ //# sourceMappingURL=restoreAppStorageCommit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageCommit.test.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageCommit.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,yDAAgE;AAChE,uEAAmF;AACnF,4CAAqD;AAErD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEpC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,SAAoB,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3C,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAC3C,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAChC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,MAAM,IAAA,iDAAuB,EAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACvF,0BAAW,CAAC,EAAE;YACd,0BAAW,CAAC,gCAAgC;YAC5C,0BAAW,CAAC,kBAAkB;YAC9B,0BAAW,CAAC,gCAAgC;YAC5C,0BAAW,CAAC,uBAAuB;YACnC,0BAAW,CAAC,oBAAoB;SACjC,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,uCAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,uCAAa,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CACvC,IAAI,2BAAkB,CAAC,2CAA2C,CAAC,CACpE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" />
2
+ import Transport from "@ledgerhq/hw-transport";
3
+ /**
4
+ * Restores the application storage initialization.
5
+ *
6
+ * @param transport - The transport object used for communication with the device.
7
+ * @param appName - The name of the application to restore the storage for.
8
+ * @param backupSize - The size of the backup to restore.
9
+ * @returns A promise that resolves to void.
10
+ */
11
+ export declare function restoreAppStorageInit(transport: Transport, appName: string, backupSize: number): Promise<void>;
12
+ export declare function parseResponse(data: Buffer): void;
13
+ //# sourceMappingURL=restoreAppStorageInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageInit.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageInit.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AAwCtF;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAwBhD"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.parseResponse = exports.restoreAppStorageInit = void 0;
13
+ const hw_transport_1 = require("@ledgerhq/hw-transport");
14
+ const logs_1 = require("@ledgerhq/logs");
15
+ const errors_1 = require("../../../errors");
16
+ /**
17
+ * Name in documentation: INS_APP_STORAGE_RESTORE_INIT
18
+ * cla: 0xe0
19
+ * ins: 0x6c
20
+ * p1: 0x00
21
+ * p2: 0x00
22
+ * data:
23
+ * - LC: BACKUP_LEN_LEN (=0x04) + APP_NAME_LEN (1 byte)
24
+ * - DATA: BACKUP_LEN + APP_NAME
25
+ *
26
+ * For example, the 'bitcoin' app with backup of length 0x00007000:
27
+ * 1. LC is 0x0b
28
+ * 2. DATA is 0x00007000 0x626974636f696e
29
+ */
30
+ const RESTORE_APP_STORAGE_INIT = [0xe0, 0x6c, 0x00, 0x00];
31
+ /**
32
+ * 0x9000: Success.
33
+ * 0x5123: Application not found.
34
+ * 0x662F: Invalid device state, recovery mode.
35
+ * 0x5501: Invalid consent, user rejected.
36
+ * 0x5502: Invalid consent, pin is not set.
37
+ * 0x670A: Invalid application name length, two chars minimum.
38
+ * 0x6733: Invalid BACKUP_LEN value.
39
+ */
40
+ const RESPONSE_STATUS_SET = [
41
+ hw_transport_1.StatusCodes.OK,
42
+ hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT,
43
+ hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE,
44
+ hw_transport_1.StatusCodes.USER_REFUSED_ON_DEVICE,
45
+ hw_transport_1.StatusCodes.PIN_NOT_SET,
46
+ hw_transport_1.StatusCodes.INVALID_APP_NAME_LENGTH,
47
+ hw_transport_1.StatusCodes.INVALID_BACKUP_LENGTH,
48
+ ];
49
+ /**
50
+ * Restores the application storage initialization.
51
+ *
52
+ * @param transport - The transport object used for communication with the device.
53
+ * @param appName - The name of the application to restore the storage for.
54
+ * @param backupSize - The size of the backup to restore.
55
+ * @returns A promise that resolves to void.
56
+ */
57
+ function restoreAppStorageInit(transport, appName, backupSize) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ const tracer = new logs_1.LocalTracer("hw", {
60
+ transport: transport.getTraceContext(),
61
+ function: "restoreAppStorageInit",
62
+ });
63
+ tracer.trace("Start");
64
+ const params = Buffer.concat([
65
+ Buffer.from([appName.length + 4]), // LC
66
+ Buffer.from(backupSize.toString(16).padStart(8, "0"), "hex"), // BACKUP_LEN
67
+ Buffer.from(appName, "ascii"), // APP_NAME
68
+ ]);
69
+ const apdu = [...RESTORE_APP_STORAGE_INIT, params];
70
+ const response = yield transport.send(...apdu, RESPONSE_STATUS_SET);
71
+ parseResponse(response);
72
+ });
73
+ }
74
+ exports.restoreAppStorageInit = restoreAppStorageInit;
75
+ function parseResponse(data) {
76
+ const tracer = new logs_1.LocalTracer("hw", {
77
+ function: "parseResponse@restoreAppStorageInit",
78
+ });
79
+ const status = data.readUInt16BE(data.length - 2);
80
+ tracer.trace("Result status from 0xe06c0000", { status });
81
+ switch (status) {
82
+ case hw_transport_1.StatusCodes.OK:
83
+ return;
84
+ case hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT:
85
+ throw new errors_1.AppNotFound("Application not found.");
86
+ case hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE:
87
+ case hw_transport_1.StatusCodes.USER_REFUSED_ON_DEVICE:
88
+ break;
89
+ case hw_transport_1.StatusCodes.PIN_NOT_SET:
90
+ throw new errors_1.PinNotSet("Invalid consent, PIN is not set.");
91
+ case hw_transport_1.StatusCodes.INVALID_APP_NAME_LENGTH:
92
+ throw new errors_1.InvalidAppNameLength("Invalid application name length, two chars minimum.");
93
+ case hw_transport_1.StatusCodes.INVALID_BACKUP_LENGTH:
94
+ throw new errors_1.InvalidBackupLength("Invalid backup length.");
95
+ }
96
+ throw new hw_transport_1.TransportStatusError(status);
97
+ }
98
+ exports.parseResponse = parseResponse;
99
+ //# sourceMappingURL=restoreAppStorageInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageInit.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageInit.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAsF;AACtF,yCAA6C;AAE7C,4CAAoG;AAEpG;;;;;;;;;;;;;GAaG;AACH,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAa;IACpC,0BAAW,CAAC,EAAE;IACd,0BAAW,CAAC,gCAAgC;IAC5C,0BAAW,CAAC,uBAAuB;IACnC,0BAAW,CAAC,sBAAsB;IAClC,0BAAW,CAAC,WAAW;IACvB,0BAAW,CAAC,uBAAuB;IACnC,0BAAW,CAAC,qBAAqB;CAClC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAsB,qBAAqB,CACzC,SAAoB,EACpB,OAAe,EACf,UAAkB;;QAElB,MAAM,MAAM,GAAG,IAAI,kBAAW,CAAC,IAAI,EAAE;YACnC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE;YACtC,QAAQ,EAAE,uBAAuB;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;YACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;YAC3E,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW;SAC3C,CAAC,CAAC;QACH,MAAM,IAAI,GAAmB,CAAC,GAAG,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAEpE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;CAAA;AArBD,sDAqBC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,IAAI,kBAAW,CAAC,IAAI,EAAE;QACnC,QAAQ,EAAE,qCAAqC;KAChD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,0BAAW,CAAC,EAAE;YACjB,OAAO;QACT,KAAK,0BAAW,CAAC,gCAAgC;YAC/C,MAAM,IAAI,oBAAW,CAAC,wBAAwB,CAAC,CAAC;QAClD,KAAK,0BAAW,CAAC,uBAAuB,CAAC;QACzC,KAAK,0BAAW,CAAC,sBAAsB;YACrC,MAAM;QACR,KAAK,0BAAW,CAAC,WAAW;YAC1B,MAAM,IAAI,kBAAS,CAAC,kCAAkC,CAAC,CAAC;QAC1D,KAAK,0BAAW,CAAC,uBAAuB;YACtC,MAAM,IAAI,6BAAoB,CAAC,qDAAqD,CAAC,CAAC;QACxF,KAAK,0BAAW,CAAC,qBAAqB;YACpC,MAAM,IAAI,4BAAmB,CAAC,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,IAAI,mCAAoB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAxBD,sCAwBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=restoreAppStorageInit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageInit.test.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageInit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const hw_transport_1 = require("@ledgerhq/hw-transport");
13
+ const restoreAppStorageInit_1 = require("./restoreAppStorageInit");
14
+ const errors_1 = require("../../../errors");
15
+ jest.mock("@ledgerhq/hw-transport");
16
+ describe("restoreAppStorageInit", () => {
17
+ let transport;
18
+ const response = Buffer.from([0x90, 0x00]);
19
+ beforeEach(() => {
20
+ transport = {
21
+ send: jest.fn().mockResolvedValue(response),
22
+ getTraceContext: jest.fn().mockResolvedValue(undefined),
23
+ };
24
+ });
25
+ afterEach(() => {
26
+ jest.clearAllMocks();
27
+ });
28
+ it("should call the send function with correct parameters", () => __awaiter(void 0, void 0, void 0, function* () {
29
+ const appName = "MyApp";
30
+ const backupSize = 1234;
31
+ yield (0, restoreAppStorageInit_1.restoreAppStorageInit)(transport, appName, backupSize);
32
+ expect(transport.send).toHaveBeenCalledWith(0xe0, 0x6c, 0x00, 0x00, Buffer.from([0x09, 0x00, 0x00, 0x04, 0xd2, 0x4d, 0x79, 0x41, 0x70, 0x70]), [
33
+ hw_transport_1.StatusCodes.OK,
34
+ hw_transport_1.StatusCodes.APP_NOT_FOUND_OR_INVALID_CONTEXT,
35
+ hw_transport_1.StatusCodes.DEVICE_IN_RECOVERY_MODE,
36
+ hw_transport_1.StatusCodes.USER_REFUSED_ON_DEVICE,
37
+ hw_transport_1.StatusCodes.PIN_NOT_SET,
38
+ hw_transport_1.StatusCodes.INVALID_APP_NAME_LENGTH,
39
+ hw_transport_1.StatusCodes.INVALID_BACKUP_LENGTH,
40
+ ]);
41
+ }));
42
+ describe("parseResponse", () => {
43
+ it("should parse the response data correctly", () => {
44
+ expect(() => (0, restoreAppStorageInit_1.parseResponse)(response)).not.toThrow();
45
+ });
46
+ it("should throw TransportStatusError if the response status is invalid", () => {
47
+ const data = Buffer.from([0x67, 0x0a]);
48
+ expect(() => (0, restoreAppStorageInit_1.parseResponse)(data)).toThrow(new errors_1.InvalidAppNameLength("Invalid application name length, two chars minimum."));
49
+ });
50
+ });
51
+ });
52
+ //# sourceMappingURL=restoreAppStorageInit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreAppStorageInit.test.js","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/restoreAppStorageInit.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,yDAAgE;AAChE,mEAA+E;AAC/E,4CAAuD;AAEvD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEpC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,SAAoB,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3C,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAC3C,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAChC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,IAAA,6CAAqB,EAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACzC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EACzE;YACE,0BAAW,CAAC,EAAE;YACd,0BAAW,CAAC,gCAAgC;YAC5C,0BAAW,CAAC,uBAAuB;YACnC,0BAAW,CAAC,sBAAsB;YAClC,0BAAW,CAAC,WAAW;YACvB,0BAAW,CAAC,uBAAuB;YACnC,0BAAW,CAAC,qBAAqB;SAClC,CACF,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,qCAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,qCAAa,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CACvC,IAAI,6BAAoB,CAAC,qDAAqD,CAAC,CAChF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ export declare const AppNotFound: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
2
+ [key: string]: unknown;
3
+ }>;
4
+ export declare const InvalidContext: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
5
+ [key: string]: unknown;
6
+ }>;
7
+ export declare const InvalidAppNameLength: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
8
+ [key: string]: unknown;
9
+ }>;
10
+ export declare const GenerateAesKeyFailed: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
11
+ [key: string]: unknown;
12
+ }>;
13
+ export declare const InternalCryptoOperationFailed: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
14
+ [key: string]: unknown;
15
+ }>;
16
+ export declare const InternalComputeAesCmacFailed: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
17
+ [key: string]: unknown;
18
+ }>;
19
+ export declare const EncryptAppStorageFailed: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
20
+ [key: string]: unknown;
21
+ }>;
22
+ export declare const PinNotSet: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
23
+ [key: string]: unknown;
24
+ }>;
25
+ export declare const InvalidBackupHeader: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
26
+ [key: string]: unknown;
27
+ }>;
28
+ export declare const InvalidBackupLength: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
29
+ [key: string]: unknown;
30
+ }>;
31
+ export declare const InvalidBackupState: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
32
+ [key: string]: unknown;
33
+ }>;
34
+ export declare const InvalidRestoreState: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
35
+ [key: string]: unknown;
36
+ }>;
37
+ export declare const InvalidChunkLength: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
38
+ [key: string]: unknown;
39
+ }>;
40
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW;;EAAwC,CAAC;AACjE,eAAO,MAAM,cAAc;;EAA2C,CAAC;AAEvE,eAAO,MAAM,oBAAoB;;EAAiD,CAAC;AAEnF,eAAO,MAAM,oBAAoB;;EAAiD,CAAC;AAEnF,eAAO,MAAM,6BAA6B;;EAEzC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;EAAyD,CAAC;AAEnG,eAAO,MAAM,uBAAuB;;EAAoD,CAAC;AAEzF,eAAO,MAAM,SAAS;;EAAsC,CAAC;AAE7D,eAAO,MAAM,mBAAmB;;EAAgD,CAAC;AAEjF,eAAO,MAAM,mBAAmB;;EAAgD,CAAC;AAEjF,eAAO,MAAM,kBAAkB;;EAA+C,CAAC;AAE/E,eAAO,MAAM,mBAAmB;;EAAgD,CAAC;AAEjF,eAAO,MAAM,kBAAkB;;EAA+C,CAAC"}
package/lib/errors.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidChunkLength = exports.InvalidRestoreState = exports.InvalidBackupState = exports.InvalidBackupLength = exports.InvalidBackupHeader = exports.PinNotSet = exports.EncryptAppStorageFailed = exports.InternalComputeAesCmacFailed = exports.InternalCryptoOperationFailed = exports.GenerateAesKeyFailed = exports.InvalidAppNameLength = exports.InvalidContext = exports.AppNotFound = void 0;
4
+ const errors_1 = require("@ledgerhq/errors");
5
+ // 0x5123
6
+ exports.AppNotFound = (0, errors_1.createCustomErrorClass)("AppNotFound");
7
+ exports.InvalidContext = (0, errors_1.createCustomErrorClass)("InvalidContext");
8
+ // 0x670a
9
+ exports.InvalidAppNameLength = (0, errors_1.createCustomErrorClass)("InvalidAppNameLength");
10
+ // 0x5419
11
+ exports.GenerateAesKeyFailed = (0, errors_1.createCustomErrorClass)("GenerateAesKeyFailed");
12
+ // 0x541a
13
+ exports.InternalCryptoOperationFailed = (0, errors_1.createCustomErrorClass)("InternalCryptoOperationFailed");
14
+ // 0x541b
15
+ exports.InternalComputeAesCmacFailed = (0, errors_1.createCustomErrorClass)("InternalComputeAesCmacFailed");
16
+ // 0x541c
17
+ exports.EncryptAppStorageFailed = (0, errors_1.createCustomErrorClass)("EncryptAppStorageFailed");
18
+ // 0x5502
19
+ exports.PinNotSet = (0, errors_1.createCustomErrorClass)("PinNotSet");
20
+ // 0x684a
21
+ exports.InvalidBackupHeader = (0, errors_1.createCustomErrorClass)("InvalidBackupHeader");
22
+ // 0x6733
23
+ exports.InvalidBackupLength = (0, errors_1.createCustomErrorClass)("InvalidBackupLength");
24
+ // 0x6642
25
+ exports.InvalidBackupState = (0, errors_1.createCustomErrorClass)("InvalidBackupState");
26
+ // 0x6643
27
+ exports.InvalidRestoreState = (0, errors_1.createCustomErrorClass)("InvalidRestoreState");
28
+ // 0x6734
29
+ exports.InvalidChunkLength = (0, errors_1.createCustomErrorClass)("InvalidChunkLength");
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,6CAA0D;AAE1D,SAAS;AACI,QAAA,WAAW,GAAG,IAAA,+BAAsB,EAAC,aAAa,CAAC,CAAC;AACpD,QAAA,cAAc,GAAG,IAAA,+BAAsB,EAAC,gBAAgB,CAAC,CAAC;AACvE,SAAS;AACI,QAAA,oBAAoB,GAAG,IAAA,+BAAsB,EAAC,sBAAsB,CAAC,CAAC;AACnF,SAAS;AACI,QAAA,oBAAoB,GAAG,IAAA,+BAAsB,EAAC,sBAAsB,CAAC,CAAC;AACnF,SAAS;AACI,QAAA,6BAA6B,GAAG,IAAA,+BAAsB,EACjE,+BAA+B,CAChC,CAAC;AACF,SAAS;AACI,QAAA,4BAA4B,GAAG,IAAA,+BAAsB,EAAC,8BAA8B,CAAC,CAAC;AACnG,SAAS;AACI,QAAA,uBAAuB,GAAG,IAAA,+BAAsB,EAAC,yBAAyB,CAAC,CAAC;AACzF,SAAS;AACI,QAAA,SAAS,GAAG,IAAA,+BAAsB,EAAC,WAAW,CAAC,CAAC;AAC7D,SAAS;AACI,QAAA,mBAAmB,GAAG,IAAA,+BAAsB,EAAC,qBAAqB,CAAC,CAAC;AACjF,SAAS;AACI,QAAA,mBAAmB,GAAG,IAAA,+BAAsB,EAAC,qBAAqB,CAAC,CAAC;AACjF,SAAS;AACI,QAAA,kBAAkB,GAAG,IAAA,+BAAsB,EAAC,oBAAoB,CAAC,CAAC;AAC/E,SAAS;AACI,QAAA,mBAAmB,GAAG,IAAA,+BAAsB,EAAC,qBAAqB,CAAC,CAAC;AACjF,SAAS;AACI,QAAA,kBAAkB,GAAG,IAAA,+BAAsB,EAAC,oBAAoB,CAAC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -16,6 +16,12 @@ export { getDeviceName } from "./commands/use-cases/getDeviceName";
16
16
  export { isHardwareVersionSupported } from "./commands/use-cases/isHardwareVersionSupported";
17
17
  export { isBootloaderVersionSupported } from "./commands/use-cases/isBootloaderVersionSupported";
18
18
  export { getVersion } from "./commands/use-cases/getVersion";
19
+ export type { AppStorageInfo } from "./commands/entities/AppStorageInfo";
20
+ export { backupAppStorage } from "./commands/use-cases/app-backup/backupAppStorage";
21
+ export { getAppStorageInfo } from "./commands/use-cases/app-backup/getAppStorageInfo";
22
+ export { restoreAppStorage } from "./commands/use-cases/app-backup/restoreAppStorage";
23
+ export { restoreAppStorageCommit } from "./commands/use-cases/app-backup/restoreAppStorageCommit";
24
+ export { restoreAppStorageInit } from "./commands/use-cases/app-backup/restoreAppStorageInit";
19
25
  export { type CLSSupportedDeviceModelId, isCustomLockScreenSupported, } from "./capabilities/isCustomLockScreenSupported";
20
26
  export { isEditDeviceNameSupported } from "./capabilities/isEditDeviceNameSupported";
21
27
  export { isSyncOnboardingSupported } from "./capabilities/isSyncOnboardingSupported";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,WAAW,EACX,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EACL,KAAK,yBAAyB,EAC9B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,WAAW,EACX,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAE9F,OAAO,EACL,KAAK,yBAAyB,EAC9B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC"}
package/lib/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.shouldForceFirmwareUpdate = exports.supportedDeviceModelIds = exports.isSyncOnboardingSupported = exports.isEditDeviceNameSupported = exports.isCustomLockScreenSupported = exports.getVersion = exports.isBootloaderVersionSupported = exports.isHardwareVersionSupported = exports.getDeviceName = exports.parseGetVersionResponse = exports.GET_VERSION_APDU = exports.getAppsCatalogForDevice = exports.aDeviceInfoBuilder = exports.fetchMcus = exports.getProviderIdUseCase = exports.PROVIDERS = exports.isDeviceLocalizationSupported = exports.getLatestFirmwareForDevice = exports.StubManagerApiRepository = exports.HttpManagerApiRepository = void 0;
17
+ exports.shouldForceFirmwareUpdate = exports.supportedDeviceModelIds = exports.isSyncOnboardingSupported = exports.isEditDeviceNameSupported = exports.isCustomLockScreenSupported = exports.restoreAppStorageInit = exports.restoreAppStorageCommit = exports.restoreAppStorage = exports.getAppStorageInfo = exports.backupAppStorage = exports.getVersion = exports.isBootloaderVersionSupported = exports.isHardwareVersionSupported = exports.getDeviceName = exports.parseGetVersionResponse = exports.GET_VERSION_APDU = exports.getAppsCatalogForDevice = exports.aDeviceInfoBuilder = exports.fetchMcus = exports.getProviderIdUseCase = exports.PROVIDERS = exports.isDeviceLocalizationSupported = exports.getLatestFirmwareForDevice = exports.StubManagerApiRepository = exports.HttpManagerApiRepository = void 0;
18
18
  var HttpManagerApiRepository_1 = require("./managerApi/repositories/HttpManagerApiRepository");
19
19
  Object.defineProperty(exports, "HttpManagerApiRepository", { enumerable: true, get: function () { return HttpManagerApiRepository_1.HttpManagerApiRepository; } });
20
20
  var StubManagerApiRepository_1 = require("./managerApi/repositories/StubManagerApiRepository");
@@ -44,6 +44,16 @@ var isBootloaderVersionSupported_1 = require("./commands/use-cases/isBootloaderV
44
44
  Object.defineProperty(exports, "isBootloaderVersionSupported", { enumerable: true, get: function () { return isBootloaderVersionSupported_1.isBootloaderVersionSupported; } });
45
45
  var getVersion_2 = require("./commands/use-cases/getVersion");
46
46
  Object.defineProperty(exports, "getVersion", { enumerable: true, get: function () { return getVersion_2.getVersion; } });
47
+ var backupAppStorage_1 = require("./commands/use-cases/app-backup/backupAppStorage");
48
+ Object.defineProperty(exports, "backupAppStorage", { enumerable: true, get: function () { return backupAppStorage_1.backupAppStorage; } });
49
+ var getAppStorageInfo_1 = require("./commands/use-cases/app-backup/getAppStorageInfo");
50
+ Object.defineProperty(exports, "getAppStorageInfo", { enumerable: true, get: function () { return getAppStorageInfo_1.getAppStorageInfo; } });
51
+ var restoreAppStorage_1 = require("./commands/use-cases/app-backup/restoreAppStorage");
52
+ Object.defineProperty(exports, "restoreAppStorage", { enumerable: true, get: function () { return restoreAppStorage_1.restoreAppStorage; } });
53
+ var restoreAppStorageCommit_1 = require("./commands/use-cases/app-backup/restoreAppStorageCommit");
54
+ Object.defineProperty(exports, "restoreAppStorageCommit", { enumerable: true, get: function () { return restoreAppStorageCommit_1.restoreAppStorageCommit; } });
55
+ var restoreAppStorageInit_1 = require("./commands/use-cases/app-backup/restoreAppStorageInit");
56
+ Object.defineProperty(exports, "restoreAppStorageInit", { enumerable: true, get: function () { return restoreAppStorageInit_1.restoreAppStorageInit; } });
47
57
  // src/capabilities/
48
58
  var isCustomLockScreenSupported_1 = require("./capabilities/isCustomLockScreenSupported");
49
59
  Object.defineProperty(exports, "isCustomLockScreenSupported", { enumerable: true, get: function () { return isCustomLockScreenSupported_1.isCustomLockScreenSupported; } });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,gGAA+F;AAAtF,wIAAA,0BAA0B,OAAA;AACnC,oGAAmG;AAA1F,8IAAA,6BAA6B,OAAA;AACtC,oFAA8F;AAArF,iHAAA,SAAS,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AACxC,8DAA6D;AAApD,sGAAA,SAAS,OAAA;AAClB,uEAA6E;AAApE,iHAAA,kBAAkB,OAAA;AAC3B,0FAAyF;AAAhF,kIAAA,uBAAuB,OAAA;AAGhC,8DAAmE;AAA1D,8GAAA,gBAAgB,OAAA;AACzB,wFAAuF;AAA9E,kIAAA,uBAAuB,OAAA;AAChC,oEAAmE;AAA1D,8GAAA,aAAa,OAAA;AACtB,8FAA6F;AAApF,wIAAA,0BAA0B,OAAA;AACnC,kGAAiG;AAAxF,4IAAA,4BAA4B,OAAA;AACrC,8DAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,oBAAoB;AACpB,0FAGoD;AADlD,0IAAA,2BAA2B,OAAA;AAE7B,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,0FAAqF;AAA5E,sIAAA,uBAAuB,OAAA;AAChC,wBAAwB;AACxB,iEAA+C;AAC/C,sBAAsB;AACtB,wFAAuF;AAA9E,sIAAA,yBAAyB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,+FAA8F;AAArF,oIAAA,wBAAwB,OAAA;AACjC,gGAA+F;AAAtF,wIAAA,0BAA0B,OAAA;AACnC,oGAAmG;AAA1F,8IAAA,6BAA6B,OAAA;AACtC,oFAA8F;AAArF,iHAAA,SAAS,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AACxC,8DAA6D;AAApD,sGAAA,SAAS,OAAA;AAClB,uEAA6E;AAApE,iHAAA,kBAAkB,OAAA;AAC3B,0FAAyF;AAAhF,kIAAA,uBAAuB,OAAA;AAGhC,8DAAmE;AAA1D,8GAAA,gBAAgB,OAAA;AACzB,wFAAuF;AAA9E,kIAAA,uBAAuB,OAAA;AAChC,oEAAmE;AAA1D,8GAAA,aAAa,OAAA;AACtB,8FAA6F;AAApF,wIAAA,0BAA0B,OAAA;AACnC,kGAAiG;AAAxF,4IAAA,4BAA4B,OAAA;AACrC,8DAA6D;AAApD,wGAAA,UAAU,OAAA;AAEnB,qFAAoF;AAA3E,oHAAA,gBAAgB,OAAA;AACzB,uFAAsF;AAA7E,sHAAA,iBAAiB,OAAA;AAC1B,uFAAsF;AAA7E,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,kIAAA,uBAAuB,OAAA;AAChC,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,oBAAoB;AACpB,0FAGoD;AADlD,0IAAA,2BAA2B,OAAA;AAE7B,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,0FAAqF;AAA5E,sIAAA,uBAAuB,OAAA;AAChC,wBAAwB;AACxB,iEAA+C;AAC/C,sBAAsB;AACtB,wFAAuF;AAA9E,sIAAA,yBAAyB,OAAA"}
@@ -0,0 +1,8 @@
1
+ export type AppStorageInfo = {
2
+ size: number;
3
+ dataVersion: string;
4
+ hasSettings: boolean;
5
+ hasData: boolean;
6
+ hash: string;
7
+ };
8
+ //# sourceMappingURL=AppStorageInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStorageInfo.d.ts","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AppStorageInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStorageInfo.js","sourceRoot":"","sources":["../../../src/commands/entities/AppStorageInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" />
2
+ import Transport from "@ledgerhq/hw-transport";
3
+ /**
4
+ * Retrieves the app storage information (chunk) from the device and returns it
5
+ * as a buffer.
6
+ *
7
+ * @param transport - The transport object used to communicate with the device.
8
+ * @returns A promise that resolves to the app storage information as a buffer.
9
+ */
10
+ export declare function backupAppStorage(transport: Transport): Promise<Buffer>;
11
+ /**
12
+ * Parses the response data buffer, check the status code and return the data.
13
+ *
14
+ * @param data - The response data buffer w/ status code.
15
+ * @returns The response data as a buffer w/o status code.
16
+ */
17
+ export declare function parseResponse(data: Buffer): Buffer;
18
+ //# sourceMappingURL=backupAppStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backupAppStorage.d.ts","sourceRoot":"","sources":["../../../../src/commands/use-cases/app-backup/backupAppStorage.ts"],"names":[],"mappings":";AAAA,OAAO,SAAgD,MAAM,wBAAwB,CAAC;AA0CtF;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2BlD"}