@ledgerhq/device-management-kit 0.0.0-develop-20260706002934 → 0.0.0-develop-20260707161641
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.
- package/lib/cjs/package.json +1 -1
- package/lib/cjs/src/api/command/os/BackupAppStorageCommand.js +2 -0
- package/lib/cjs/src/api/command/os/BackupAppStorageCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/BackupAppStorageCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/BackupAppStorageCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/CommitRestoreAppStorageCommand.js +2 -0
- package/lib/cjs/src/api/command/os/CommitRestoreAppStorageCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/CommitRestoreAppStorageCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/CommitRestoreAppStorageCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/InitRestoreAppStorageCommand.js +2 -0
- package/lib/cjs/src/api/command/os/InitRestoreAppStorageCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/InitRestoreAppStorageCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/InitRestoreAppStorageCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/RestoreAppStorageCommand.js +2 -0
- package/lib/cjs/src/api/command/os/RestoreAppStorageCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/RestoreAppStorageCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/RestoreAppStorageCommand.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.js +1 -1
- package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.js.map +3 -3
- package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.test.js +1 -1
- package/lib/cjs/src/api/device-action/task/BackupAppStorageTask.test.js.map +3 -3
- package/lib/cjs/src/api/device-action/task/RestoreAppStorageTask.js +2 -0
- package/lib/cjs/src/api/device-action/task/RestoreAppStorageTask.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/RestoreAppStorageTask.test.js +2 -0
- package/lib/cjs/src/api/device-action/task/RestoreAppStorageTask.test.js.map +7 -0
- package/lib/cjs/src/api/index.js +1 -1
- package/lib/cjs/src/api/index.js.map +3 -3
- package/lib/esm/package.json +1 -1
- package/lib/esm/src/api/command/os/BackupAppStorageCommand.js +2 -0
- package/lib/esm/src/api/command/os/BackupAppStorageCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/BackupAppStorageCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/BackupAppStorageCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/CommitRestoreAppStorageCommand.js +2 -0
- package/lib/esm/src/api/command/os/CommitRestoreAppStorageCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/CommitRestoreAppStorageCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/CommitRestoreAppStorageCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/InitRestoreAppStorageCommand.js +2 -0
- package/lib/esm/src/api/command/os/InitRestoreAppStorageCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/InitRestoreAppStorageCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/InitRestoreAppStorageCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/RestoreAppStorageCommand.js +2 -0
- package/lib/esm/src/api/command/os/RestoreAppStorageCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/RestoreAppStorageCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/RestoreAppStorageCommand.test.js.map +7 -0
- package/lib/esm/src/api/device-action/task/BackupAppStorageTask.js +1 -1
- package/lib/esm/src/api/device-action/task/BackupAppStorageTask.js.map +3 -3
- package/lib/esm/src/api/device-action/task/BackupAppStorageTask.test.js +1 -1
- package/lib/esm/src/api/device-action/task/BackupAppStorageTask.test.js.map +3 -3
- package/lib/esm/src/api/device-action/task/RestoreAppStorageTask.js +2 -0
- package/lib/esm/src/api/device-action/task/RestoreAppStorageTask.js.map +7 -0
- package/lib/esm/src/api/device-action/task/RestoreAppStorageTask.test.js +2 -0
- package/lib/esm/src/api/device-action/task/RestoreAppStorageTask.test.js.map +7 -0
- package/lib/esm/src/api/index.js +1 -1
- package/lib/esm/src/api/index.js.map +3 -3
- package/lib/types/src/api/command/os/BackupAppStorageCommand.d.ts +23 -0
- package/lib/types/src/api/command/os/BackupAppStorageCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/BackupAppStorageCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/BackupAppStorageCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/command/os/CommitRestoreAppStorageCommand.d.ts +19 -0
- package/lib/types/src/api/command/os/CommitRestoreAppStorageCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/CommitRestoreAppStorageCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/CommitRestoreAppStorageCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/command/os/InitRestoreAppStorageCommand.d.ts +25 -0
- package/lib/types/src/api/command/os/InitRestoreAppStorageCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/InitRestoreAppStorageCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/InitRestoreAppStorageCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/command/os/RestoreAppStorageCommand.d.ts +24 -0
- package/lib/types/src/api/command/os/RestoreAppStorageCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/RestoreAppStorageCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/RestoreAppStorageCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/BackupAppStorageTask.d.ts +3 -3
- package/lib/types/src/api/device-action/task/BackupAppStorageTask.d.ts.map +1 -1
- package/lib/types/src/api/device-action/task/RestoreAppStorageTask.d.ts +17 -0
- package/lib/types/src/api/device-action/task/RestoreAppStorageTask.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/RestoreAppStorageTask.test.d.ts +2 -0
- package/lib/types/src/api/device-action/task/RestoreAppStorageTask.test.d.ts.map +1 -0
- package/lib/types/src/api/index.d.ts +5 -1
- package/lib/types/src/api/index.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/lib/cjs/src/api/command/os/BackupStorageCommand.js +0 -2
- package/lib/cjs/src/api/command/os/BackupStorageCommand.js.map +0 -7
- package/lib/cjs/src/api/command/os/BackupStorageCommand.test.js +0 -2
- package/lib/cjs/src/api/command/os/BackupStorageCommand.test.js.map +0 -7
- package/lib/esm/src/api/command/os/BackupStorageCommand.js +0 -2
- package/lib/esm/src/api/command/os/BackupStorageCommand.js.map +0 -7
- package/lib/esm/src/api/command/os/BackupStorageCommand.test.js +0 -2
- package/lib/esm/src/api/command/os/BackupStorageCommand.test.js.map +0 -7
- package/lib/types/src/api/command/os/BackupStorageCommand.d.ts +0 -23
- package/lib/types/src/api/command/os/BackupStorageCommand.d.ts.map +0 -1
- package/lib/types/src/api/command/os/BackupStorageCommand.test.d.ts +0 -2
- package/lib/types/src/api/command/os/BackupStorageCommand.test.d.ts.map +0 -1
package/lib/cjs/package.json
CHANGED
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
63
63
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
|
|
64
64
|
},
|
|
65
|
-
"version": "0.0.0-develop-
|
|
65
|
+
"version": "0.0.0-develop-20260707161641"
|
|
66
66
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var m=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var f=(e,r)=>{for(var a in r)m(e,a,{get:r[a],enumerable:!0})},E=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of k(r))!S.call(e,o)&&o!==a&&m(e,o,{get:()=>r[o],enumerable:!(t=A(r,o))||t.enumerable});return e};var y=e=>E(m({},"__esModule",{value:!0}),e);var x={};f(x,{BACKUP_APP_STORAGE_ERRORS:()=>n,BackupAppStorageCommand:()=>B,BackupAppStorageCommandError:()=>l});module.exports=y(x);var d=require("../../apdu/utils/ApduBuilder"),s=require("../../apdu/utils/ApduParser"),c=require("../../command/Errors"),p=require("../../command/model/CommandResult"),u=require("../../command/utils/CommandErrors"),i=require("../../command/utils/CommandUtils"),C=require("../../command/utils/GlobalCommandError"),g=require("../../Error");const n={5123:{message:"Invalid context. Get info must be called."},5419:{message:"Failed to generate AES key."},"541a":{message:"Internal error, crypto operation failed."},"541b":{message:"Internal error, failed to compute AES CMAC."},"541c":{message:"Failed to encrypt the app storage backup."},"622f":{message:"Invalid device state, recovery mode."},6642:{message:"Invalid backup state, backup already performed."}};class l extends g.DeviceExchangeError{constructor(r){super({tag:"BackupAppStorageCommandError",...r})}}class B{name="BackupAppStorage";header={cla:224,ins:107,p1:0,p2:0};getApdu(){return new d.ApduBuilder(this.header).build()}parseResponse(r){const a=new s.ApduParser(r);if(!i.CommandUtils.isSuccessResponse(r)){const o=a.encodeToHexaString(r.statusCode);return(0,u.isCommandErrorCode)(o,n)?(0,p.CommandResultFactory)({error:new l({...n[o],errorCode:o})}):(0,p.CommandResultFactory)({error:C.GlobalCommandErrorHandler.handle(r)})}const t=a.extractFieldByLength(a.getUnparsedRemainingLength());return t===void 0?(0,p.CommandResultFactory)({error:new c.InvalidStatusWordError("Failed to extract app storage data chunk")}):(0,p.CommandResultFactory)({data:{chunkData:t,chunkSize:t.length}})}}0&&(module.exports={BACKUP_APP_STORAGE_ERRORS,BackupAppStorageCommand,BackupAppStorageCommandError});
|
|
2
|
+
//# sourceMappingURL=BackupAppStorageCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/BackupAppStorageCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type BackupAppStorageCommandResponse = {\n chunkData: Uint8Array;\n chunkSize: number;\n};\n\nexport type BackupAppStorageCommandErrorCodes =\n | \"5123\"\n | \"5419\"\n | \"541a\"\n | \"541b\"\n | \"541c\"\n | \"622f\"\n | \"6642\";\n\nexport const BACKUP_APP_STORAGE_ERRORS: CommandErrors<BackupAppStorageCommandErrorCodes> =\n {\n \"5123\": { message: \"Invalid context. Get info must be called.\" },\n \"5419\": { message: \"Failed to generate AES key.\" },\n \"541a\": { message: \"Internal error, crypto operation failed.\" },\n \"541b\": { message: \"Internal error, failed to compute AES CMAC.\" },\n \"541c\": { message: \"Failed to encrypt the app storage backup.\" },\n \"622f\": { message: \"Invalid device state, recovery mode.\" },\n \"6642\": { message: \"Invalid backup state, backup already performed.\" },\n };\n\nexport class BackupAppStorageCommandError extends DeviceExchangeError<BackupAppStorageCommandErrorCodes> {\n constructor(args: CommandErrorArgs<BackupAppStorageCommandErrorCodes>) {\n super({ tag: \"BackupAppStorageCommandError\", ...args });\n }\n}\n\nexport type BackupAppStorageCommandResult = CommandResult<\n BackupAppStorageCommandResponse,\n BackupAppStorageCommandErrorCodes\n>;\n\nexport class BackupAppStorageCommand\n implements\n Command<\n BackupAppStorageCommandResponse,\n void,\n BackupAppStorageCommandErrorCodes\n >\n{\n readonly name = \"BackupAppStorage\";\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6b,\n p1: 0x00,\n p2: 0x00,\n };\n\n getApdu(): Apdu {\n return new ApduBuilder(this.header).build();\n }\n\n parseResponse(apduResponse: ApduResponse): BackupAppStorageCommandResult {\n const parser = new ApduParser(apduResponse);\n\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, BACKUP_APP_STORAGE_ERRORS)) {\n return CommandResultFactory({\n error: new BackupAppStorageCommandError({\n ...BACKUP_APP_STORAGE_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n const appStorageDataChunk = parser.extractFieldByLength(\n parser.getUnparsedRemainingLength(),\n );\n\n if (appStorageDataChunk === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Failed to extract app storage data chunk\",\n ),\n });\n }\n\n return CommandResultFactory({\n data: {\n chunkData: appStorageDataChunk,\n chunkSize: appStorageDataChunk.length,\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,4BAAAC,EAAA,iCAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAA4B,uCAC5BC,EAA2B,sCAE3BC,EAAuC,+BACvCC,EAGO,4CACPC,EAGO,4CACPC,EAA6B,2CAC7BC,EAA0C,iDAE1CC,EAA2D,sBAgBpD,MAAMX,EACX,CACE,KAAQ,CAAE,QAAS,2CAA4C,EAC/D,KAAQ,CAAE,QAAS,6BAA8B,EACjD,OAAQ,CAAE,QAAS,0CAA2C,EAC9D,OAAQ,CAAE,QAAS,6CAA8C,EACjE,OAAQ,CAAE,QAAS,2CAA4C,EAC/D,OAAQ,CAAE,QAAS,sCAAuC,EAC1D,KAAQ,CAAE,QAAS,iDAAkD,CACvE,EAEK,MAAME,UAAqC,qBAAuD,CACvG,YAAYU,EAA2D,CACrE,MAAM,CAAE,IAAK,+BAAgC,GAAGA,CAAK,CAAC,CACxD,CACF,CAOO,MAAMX,CAOb,CACW,KAAO,mBAEC,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAEA,SAAgB,CACd,OAAO,IAAI,cAAY,KAAK,MAAM,EAAE,MAAM,CAC5C,CAEA,cAAcY,EAA2D,CACvE,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAE1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWf,CAAyB,KAClD,wBAAqB,CAC1B,MAAO,IAAIE,EAA6B,CACtC,GAAGF,EAA0Be,CAAS,EACtC,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,MAAMG,EAAsBF,EAAO,qBACjCA,EAAO,2BAA2B,CACpC,EAEA,OAAIE,IAAwB,UACnB,wBAAqB,CAC1B,MAAO,IAAI,yBACT,0CACF,CACF,CAAC,KAGI,wBAAqB,CAC1B,KAAM,CACJ,UAAWA,EACX,UAAWA,EAAoB,MACjC,CACF,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["BackupAppStorageCommand_exports", "__export", "BACKUP_APP_STORAGE_ERRORS", "BackupAppStorageCommand", "BackupAppStorageCommandError", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_Errors", "import_CommandResult", "import_CommandErrors", "import_CommandUtils", "import_GlobalCommandError", "import_Error", "args", "apduResponse", "parser", "errorCode", "appStorageDataChunk"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("../../command/model/CommandResult"),a=require("../../command/os/BackupAppStorageCommand"),r=require("../../device-session/ApduResponse");describe("BackupAppStorageCommand",()=>{describe("Name",()=>{it("name should be 'BackupAppStorage'",()=>{const e=new a.BackupAppStorageCommand().name;expect(e).toBe("BackupAppStorage")})}),describe("Command",()=>{it("should return the correct APDU for backing up app storage",()=>{const t=Uint8Array.from([224,107,0,0,0]),e=new a.BackupAppStorageCommand().getApdu();expect(e.getRawApdu()).toEqual(t)})}),describe("Success response",()=>{it("should return the app storage data chunk as a hex string",()=>{const t=Uint8Array.from([144,0]),e=new r.ApduResponse({statusCode:t,data:Uint8Array.from([171,205,239,1,35])}),o=new a.BackupAppStorageCommand().parseResponse(e);expect((0,s.isSuccessCommandResult)(o)).toBe(!0),expect(o).toEqual({data:{chunkData:Uint8Array.from([171,205,239,1,35]),chunkSize:5},status:"SUCCESS"})})}),describe("Error response",()=>{it.each([{description:"get info was not called first",statusCode:[81,35],expectedMessage:"Invalid context. Get info must be called."},{description:"AES key generation fails",statusCode:[84,25],expectedMessage:"Failed to generate AES key."},{description:"crypto operation fails",statusCode:[84,26],expectedMessage:"Internal error, crypto operation failed."},{description:"AES CMAC computation fails",statusCode:[84,27],expectedMessage:"Internal error, failed to compute AES CMAC."},{description:"encryption of backup fails",statusCode:[84,28],expectedMessage:"Failed to encrypt the app storage backup."},{description:"device is in recovery mode",statusCode:[98,47],expectedMessage:"Invalid device state, recovery mode."},{description:"backup was already performed",statusCode:[102,66],expectedMessage:"Invalid backup state, backup already performed."},{description:"error code is not specific to BackupStorageCommand (global error)",statusCode:[85,21],expectedMessage:"Device is locked."}])("should return error when $description",({statusCode:t,expectedMessage:e})=>{const o=new r.ApduResponse({statusCode:Uint8Array.from(t),data:new Uint8Array([])}),c=new a.BackupAppStorageCommand().parseResponse(o);expect((0,s.isSuccessCommandResult)(c)).toBe(!1),expect(c.error.message).toBe(e)})})});
|
|
2
|
+
//# sourceMappingURL=BackupAppStorageCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/BackupAppStorageCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { BackupAppStorageCommand } from \"@api/command/os/BackupAppStorageCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\ndescribe(\"BackupAppStorageCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'BackupAppStorage'\", () => {\n // ARRANGE\n const command = new BackupAppStorageCommand();\n\n // ACT\n const name = command.name;\n\n // ASSERT\n expect(name).toBe(\"BackupAppStorage\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for backing up app storage\", () => {\n // ARRANGE\n const expectedApdu = Uint8Array.from([0xe0, 0x6b, 0x00, 0x00, 0x00]);\n\n // ACT\n const apdu = new BackupAppStorageCommand().getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"Success response\", () => {\n it(\"should return the app storage data chunk as a hex string\", () => {\n // ARRANGE\n const statusCode = Uint8Array.from([0x90, 0x00]);\n const response = new ApduResponse({\n statusCode,\n data: Uint8Array.from([0xab, 0xcd, 0xef, 0x01, 0x23]),\n });\n\n // ACT\n const result = new BackupAppStorageCommand().parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: {\n chunkData: Uint8Array.from([0xab, 0xcd, 0xef, 0x01, 0x23]),\n chunkSize: 5,\n },\n status: \"SUCCESS\",\n });\n });\n });\n\n describe(\"Error response\", () => {\n it.each([\n {\n description: \"get info was not called first\",\n statusCode: [0x51, 0x23],\n expectedMessage: \"Invalid context. Get info must be called.\",\n },\n {\n description: \"AES key generation fails\",\n statusCode: [0x54, 0x19],\n expectedMessage: \"Failed to generate AES key.\",\n },\n {\n description: \"crypto operation fails\",\n statusCode: [0x54, 0x1a],\n expectedMessage: \"Internal error, crypto operation failed.\",\n },\n {\n description: \"AES CMAC computation fails\",\n statusCode: [0x54, 0x1b],\n expectedMessage: \"Internal error, failed to compute AES CMAC.\",\n },\n {\n description: \"encryption of backup fails\",\n statusCode: [0x54, 0x1c],\n expectedMessage: \"Failed to encrypt the app storage backup.\",\n },\n {\n description: \"device is in recovery mode\",\n statusCode: [0x62, 0x2f],\n expectedMessage: \"Invalid device state, recovery mode.\",\n },\n {\n description: \"backup was already performed\",\n statusCode: [0x66, 0x42],\n expectedMessage: \"Invalid backup state, backup already performed.\",\n },\n {\n description:\n \"error code is not specific to BackupStorageCommand (global error)\",\n statusCode: [0x55, 0x15],\n expectedMessage: \"Device is locked.\",\n },\n ])(\n \"should return error when $description\",\n ({ statusCode, expectedMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from(statusCode),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new BackupAppStorageCommand().parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect((result as unknown as { error: Error }).error.message).toBe(\n expectedMessage,\n );\n },\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAuC,4CACvCC,EAAwC,mDACxCC,EAA6B,4CAE7B,SAAS,0BAA2B,IAAM,CACxC,SAAS,OAAQ,IAAM,CACrB,GAAG,oCAAqC,IAAM,CAK5C,MAAMC,EAHU,IAAI,0BAAwB,EAGvB,KAGrB,OAAOA,CAAI,EAAE,KAAK,kBAAkB,CACtC,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,4DAA6D,IAAM,CAEpE,MAAMC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,EAAM,EAAM,CAAI,CAAC,EAG7DC,EAAO,IAAI,0BAAwB,EAAE,QAAQ,EAGnD,OAAOA,EAAK,WAAW,CAAC,EAAE,QAAQD,CAAY,CAChD,CAAC,CACH,CAAC,EAED,SAAS,mBAAoB,IAAM,CACjC,GAAG,2DAA4D,IAAM,CAEnE,MAAME,EAAa,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACzCC,EAAW,IAAI,eAAa,CAChC,WAAAD,EACA,KAAM,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAM,EAAI,CAAC,CACtD,CAAC,EAGKE,EAAS,IAAI,0BAAwB,EAAE,cAAcD,CAAQ,EAGnE,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAChD,OAAOA,CAAM,EAAE,QAAQ,CACrB,KAAM,CACJ,UAAW,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAM,EAAI,CAAC,EACzD,UAAW,CACb,EACA,OAAQ,SACV,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,KAAK,CACN,CACE,YAAa,gCACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,2CACnB,EACA,CACE,YAAa,2BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,6BACnB,EACA,CACE,YAAa,yBACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,0CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,6CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,2CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,sCACnB,EACA,CACE,YAAa,+BACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,iDACnB,EACA,CACE,YACE,oEACF,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,mBACnB,CACF,CAAC,EACC,wCACA,CAAC,CAAE,WAAAF,EAAY,gBAAAG,CAAgB,IAAM,CAEnC,MAAMF,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAKD,CAAU,EACtC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKE,EAAS,IAAI,0BAAwB,EAAE,cAAcD,CAAQ,EAGnE,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EACjD,OAAQA,EAAuC,MAAM,OAAO,EAAE,KAC5DC,CACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_CommandResult", "import_BackupAppStorageCommand", "import_ApduResponse", "name", "expectedApdu", "apdu", "statusCode", "response", "result", "expectedMessage"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var E=(e,r)=>{for(var o in r)s(e,o,{get:r[o],enumerable:!0})},f=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of A(r))!c.call(e,m)&&m!==o&&s(e,m,{get:()=>r[m],enumerable:!(t=u(r,m))||t.enumerable});return e};var S=e=>f(s({},"__esModule",{value:!0}),e);var x={};E(x,{COMMIT_RESTORE_APP_STORAGE_ERRORS:()=>p,CommitRestoreAppStorageCommand:()=>y,CommitRestoreAppStorageCommandError:()=>R});module.exports=S(x);var d=require("../../apdu/utils/ApduBuilder"),n=require("../../apdu/utils/ApduParser"),a=require("../../command/model/CommandResult"),i=require("../../command/utils/CommandErrors"),C=require("../../command/utils/CommandUtils"),l=require("../../command/utils/GlobalCommandError"),g=require("../../Error");const p={5123:{message:"Invalid context, restore init must be called first."},5419:{message:"Internal error, crypto operation failed."},"541b":{message:"Failed to verify backup authenticity."},"662f":{message:"Invalid device state, recovery mode."},6734:{message:"Invalid size of the restored app storage."}};class R extends g.DeviceExchangeError{constructor(r){super({tag:"CommitRestoreAppStorageCommandError",...r})}}class y{name="CommitRestoreAppStorage";header={cla:224,ins:110,p1:0,p2:0};getApdu(){return new d.ApduBuilder(this.header).build()}parseResponse(r){const o=new n.ApduParser(r);if(!C.CommandUtils.isSuccessResponse(r)){const t=o.encodeToHexaString(r.statusCode);return(0,i.isCommandErrorCode)(t,p)?(0,a.CommandResultFactory)({error:new R({...p[t],errorCode:t})}):(0,a.CommandResultFactory)({error:l.GlobalCommandErrorHandler.handle(r)})}return(0,a.CommandResultFactory)({data:void 0})}}0&&(module.exports={COMMIT_RESTORE_APP_STORAGE_ERRORS,CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError});
|
|
2
|
+
//# sourceMappingURL=CommitRestoreAppStorageCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/CommitRestoreAppStorageCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type CommitRestoreAppStorageCommandErrorCodes =\n | \"5123\"\n | \"5419\"\n | \"541b\"\n | \"662f\"\n | \"6734\";\n\nexport const COMMIT_RESTORE_APP_STORAGE_ERRORS: CommandErrors<CommitRestoreAppStorageCommandErrorCodes> =\n {\n \"5123\": { message: \"Invalid context, restore init must be called first.\" },\n \"5419\": { message: \"Internal error, crypto operation failed.\" },\n \"541b\": { message: \"Failed to verify backup authenticity.\" },\n \"662f\": { message: \"Invalid device state, recovery mode.\" },\n \"6734\": { message: \"Invalid size of the restored app storage.\" },\n };\n\nexport class CommitRestoreAppStorageCommandError extends DeviceExchangeError<CommitRestoreAppStorageCommandErrorCodes> {\n constructor(\n args: CommandErrorArgs<CommitRestoreAppStorageCommandErrorCodes>,\n ) {\n super({ tag: \"CommitRestoreAppStorageCommandError\", ...args });\n }\n}\n\nexport type CommitRestoreAppStorageCommandResult = CommandResult<\n void,\n CommitRestoreAppStorageCommandErrorCodes\n>;\n\nexport class CommitRestoreAppStorageCommand\n implements Command<void, void, CommitRestoreAppStorageCommandErrorCodes>\n{\n readonly name = \"CommitRestoreAppStorage\";\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6e,\n p1: 0x00,\n p2: 0x00,\n };\n\n getApdu(): Apdu {\n return new ApduBuilder(this.header).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommitRestoreAppStorageCommandResult {\n const parser = new ApduParser(apduResponse);\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, COMMIT_RESTORE_APP_STORAGE_ERRORS)) {\n return CommandResultFactory({\n error: new CommitRestoreAppStorageCommandError({\n ...COMMIT_RESTORE_APP_STORAGE_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n return CommandResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uCAAAE,EAAA,mCAAAC,EAAA,wCAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAA4B,uCAC5BC,EAA2B,sCAE3BC,EAGO,4CACPC,EAGO,4CACPC,EAA6B,2CAC7BC,EAA0C,iDAE1CC,EAA2D,sBASpD,MAAMV,EACX,CACE,KAAQ,CAAE,QAAS,qDAAsD,EACzE,KAAQ,CAAE,QAAS,0CAA2C,EAC9D,OAAQ,CAAE,QAAS,uCAAwC,EAC3D,OAAQ,CAAE,QAAS,sCAAuC,EAC1D,KAAQ,CAAE,QAAS,2CAA4C,CACjE,EAEK,MAAME,UAA4C,qBAA8D,CACrH,YACES,EACA,CACA,MAAM,CAAE,IAAK,sCAAuC,GAAGA,CAAK,CAAC,CAC/D,CACF,CAOO,MAAMV,CAEb,CACW,KAAO,0BAEC,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAEA,SAAgB,CACd,OAAO,IAAI,cAAY,KAAK,MAAM,EAAE,MAAM,CAC5C,CAEA,cACEW,EACsC,CACtC,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAC1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWd,CAAiC,KAC1D,wBAAqB,CAC1B,MAAO,IAAIE,EAAoC,CAC7C,GAAGF,EAAkCc,CAAS,EAC9C,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,SAAO,wBAAqB,CAC1B,KAAM,MACR,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["CommitRestoreAppStorageCommand_exports", "__export", "COMMIT_RESTORE_APP_STORAGE_ERRORS", "CommitRestoreAppStorageCommand", "CommitRestoreAppStorageCommandError", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_CommandResult", "import_CommandErrors", "import_CommandUtils", "import_GlobalCommandError", "import_Error", "args", "apduResponse", "parser", "errorCode"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("../../command/model/CommandResult"),o=require("../../command/os/CommitRestoreAppStorageCommand"),r=require("../../device-session/ApduResponse");describe("CommitRestoreAppStorageCommand",()=>{describe("Name",()=>{it("name should be 'CommitRestoreAppStorage'",()=>{const e=new o.CommitRestoreAppStorageCommand().name;expect(e).toBe("CommitRestoreAppStorage")})}),describe("Command",()=>{it("should return the correct APDU for committing an app storage restore",()=>{const t=Uint8Array.from([224,110,0,0,0]),e=new o.CommitRestoreAppStorageCommand().getApdu();expect(e.getRawApdu()).toEqual(t)})}),describe("Success response",()=>{it("should return a success result",()=>{const t=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),e=new o.CommitRestoreAppStorageCommand().parseResponse(t);expect((0,s.isSuccessCommandResult)(e)).toBe(!0),expect(e).toEqual({data:void 0,status:"SUCCESS"})})}),describe("Error response",()=>{it.each([{description:"restore init has not been called",statusCode:[81,35],expectedMessage:"Invalid context, restore init must be called first."},{description:"crypto operation failed",statusCode:[84,25],expectedMessage:"Internal error, crypto operation failed."},{description:"backup authenticity verification failed",statusCode:[84,27],expectedMessage:"Failed to verify backup authenticity."},{description:"device is in recovery mode",statusCode:[102,47],expectedMessage:"Invalid device state, recovery mode."},{description:"restored app storage size is invalid",statusCode:[103,52],expectedMessage:"Invalid size of the restored app storage."},{description:"error code is not specific to CommitRestoreAppStorageCommand (global error)",statusCode:[85,21],expectedMessage:"Device is locked."}])("should return error when $description",({statusCode:t,expectedMessage:e})=>{const i=new r.ApduResponse({statusCode:Uint8Array.from(t),data:new Uint8Array([])}),a=new o.CommitRestoreAppStorageCommand().parseResponse(i);expect((0,s.isSuccessCommandResult)(a)).toBe(!1),expect(a.error.message).toBe(e)})})});
|
|
2
|
+
//# sourceMappingURL=CommitRestoreAppStorageCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/CommitRestoreAppStorageCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { CommitRestoreAppStorageCommand } from \"@api/command/os/CommitRestoreAppStorageCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\ndescribe(\"CommitRestoreAppStorageCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'CommitRestoreAppStorage'\", () => {\n // ARRANGE\n const command = new CommitRestoreAppStorageCommand();\n\n // ACT\n const name = command.name;\n\n // ASSERT\n expect(name).toBe(\"CommitRestoreAppStorage\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for committing an app storage restore\", () => {\n // ARRANGE\n const expectedApdu = Uint8Array.from([0xe0, 0x6e, 0x00, 0x00, 0x00]);\n\n // ACT\n const apdu = new CommitRestoreAppStorageCommand().getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"Success response\", () => {\n it(\"should return a success result\", () => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new CommitRestoreAppStorageCommand().parseResponse(\n response,\n );\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: undefined,\n status: \"SUCCESS\",\n });\n });\n });\n\n describe(\"Error response\", () => {\n it.each([\n {\n description: \"restore init has not been called\",\n statusCode: [0x51, 0x23],\n expectedMessage: \"Invalid context, restore init must be called first.\",\n },\n {\n description: \"crypto operation failed\",\n statusCode: [0x54, 0x19],\n expectedMessage: \"Internal error, crypto operation failed.\",\n },\n {\n description: \"backup authenticity verification failed\",\n statusCode: [0x54, 0x1b],\n expectedMessage: \"Failed to verify backup authenticity.\",\n },\n {\n description: \"device is in recovery mode\",\n statusCode: [0x66, 0x2f],\n expectedMessage: \"Invalid device state, recovery mode.\",\n },\n {\n description: \"restored app storage size is invalid\",\n statusCode: [0x67, 0x34],\n expectedMessage: \"Invalid size of the restored app storage.\",\n },\n {\n description:\n \"error code is not specific to CommitRestoreAppStorageCommand (global error)\",\n statusCode: [0x55, 0x15],\n expectedMessage: \"Device is locked.\",\n },\n ])(\n \"should return error when $description\",\n ({ statusCode, expectedMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from(statusCode),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new CommitRestoreAppStorageCommand().parseResponse(\n response,\n );\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect((result as unknown as { error: Error }).error.message).toBe(\n expectedMessage,\n );\n },\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAuC,4CACvCC,EAA+C,0DAC/CC,EAA6B,4CAE7B,SAAS,iCAAkC,IAAM,CAC/C,SAAS,OAAQ,IAAM,CACrB,GAAG,2CAA4C,IAAM,CAKnD,MAAMC,EAHU,IAAI,iCAA+B,EAG9B,KAGrB,OAAOA,CAAI,EAAE,KAAK,yBAAyB,CAC7C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,uEAAwE,IAAM,CAE/E,MAAMC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,EAAM,EAAM,CAAI,CAAC,EAG7DC,EAAO,IAAI,iCAA+B,EAAE,QAAQ,EAG1D,OAAOA,EAAK,WAAW,CAAC,EAAE,QAAQD,CAAY,CAChD,CAAC,CACH,CAAC,EAED,SAAS,mBAAoB,IAAM,CACjC,GAAG,iCAAkC,IAAM,CAEzC,MAAME,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKC,EAAS,IAAI,iCAA+B,EAAE,cAClDD,CACF,EAGA,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAChD,OAAOA,CAAM,EAAE,QAAQ,CACrB,KAAM,OACN,OAAQ,SACV,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,KAAK,CACN,CACE,YAAa,mCACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,qDACnB,EACA,CACE,YAAa,0BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,0CACnB,EACA,CACE,YAAa,0CACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,uCACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,sCACnB,EACA,CACE,YAAa,uCACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,2CACnB,EACA,CACE,YACE,8EACF,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,mBACnB,CACF,CAAC,EACC,wCACA,CAAC,CAAE,WAAAC,EAAY,gBAAAC,CAAgB,IAAM,CAEnC,MAAMH,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAKE,CAAU,EACtC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKD,EAAS,IAAI,iCAA+B,EAAE,cAClDD,CACF,EAGA,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EACjD,OAAQA,EAAuC,MAAM,OAAO,EAAE,KAC5DE,CACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_CommandResult", "import_CommitRestoreAppStorageCommand", "import_ApduResponse", "name", "expectedApdu", "apdu", "response", "result", "statusCode", "expectedMessage"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var m=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var I=(e,r)=>{for(var o in r)m(e,o,{get:r[o],enumerable:!0})},S=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of u(r))!R.call(e,a)&&a!==o&&m(e,a,{get:()=>r[a],enumerable:!(t=c(r,a))||t.enumerable});return e};var E=e=>S(m({},"__esModule",{value:!0}),e);var y={};I(y,{INIT_RESTORE_APP_STORAGE_ERRORS:()=>s,InitRestoreAppStorageCommand:()=>f,InitRestoreAppStorageCommandError:()=>l});module.exports=E(y);var p=require("../../apdu/utils/ApduBuilder"),d=require("../../apdu/utils/ApduParser"),n=require("../../command/model/CommandResult"),i=require("../../command/utils/CommandErrors"),g=require("../../command/utils/CommandUtils"),C=require("../../command/utils/GlobalCommandError"),A=require("../../Error");const s={5123:{message:"Application not found."},"662f":{message:"Invalid device state, recovery mode."},5501:{message:"Invalid consent, user rejected."},5502:{message:"Invalid consent, pin is not set."},"670a":{message:"Invalid application name length, two chars minimum."},6733:{message:"Invalid backup length value."}};class l extends A.DeviceExchangeError{constructor(r){super({tag:"InitRestoreAppStorageCommandError",...r})}}class f{constructor(r){this.args=r}name="InitRestoreAppStorage";header={cla:224,ins:108,p1:0,p2:0};getApdu(){const{appName:r,appStorageDataLength:o}=this.args;return new p.ApduBuilder(this.header).add32BitUIntToData(o).addAsciiStringToData(r).build()}parseResponse(r){const o=new d.ApduParser(r);if(!g.CommandUtils.isSuccessResponse(r)){const t=o.encodeToHexaString(r.statusCode);return(0,i.isCommandErrorCode)(t,s)?(0,n.CommandResultFactory)({error:new l({...s[t],errorCode:t})}):(0,n.CommandResultFactory)({error:C.GlobalCommandErrorHandler.handle(r)})}return(0,n.CommandResultFactory)({data:void 0})}}0&&(module.exports={INIT_RESTORE_APP_STORAGE_ERRORS,InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError});
|
|
2
|
+
//# sourceMappingURL=InitRestoreAppStorageCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/InitRestoreAppStorageCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type InitRestoreAppStorageCommandArgs = {\n appName: string;\n appStorageDataLength: number;\n};\n\nexport type InitRestoreAppStorageCommandErrorCodes =\n | \"5123\"\n | \"662f\"\n | \"5501\"\n | \"5502\"\n | \"670a\"\n | \"6733\";\n\nexport const INIT_RESTORE_APP_STORAGE_ERRORS: CommandErrors<InitRestoreAppStorageCommandErrorCodes> =\n {\n \"5123\": { message: \"Application not found.\" },\n \"662f\": { message: \"Invalid device state, recovery mode.\" },\n \"5501\": { message: \"Invalid consent, user rejected.\" },\n \"5502\": { message: \"Invalid consent, pin is not set.\" },\n \"670a\": { message: \"Invalid application name length, two chars minimum.\" },\n \"6733\": { message: \"Invalid backup length value.\" },\n };\n\nexport class InitRestoreAppStorageCommandError extends DeviceExchangeError<InitRestoreAppStorageCommandErrorCodes> {\n constructor(args: CommandErrorArgs<InitRestoreAppStorageCommandErrorCodes>) {\n super({ tag: \"InitRestoreAppStorageCommandError\", ...args });\n }\n}\n\nexport type InitRestoreAppStorageCommandResult = CommandResult<\n void,\n InitRestoreAppStorageCommandErrorCodes\n>;\n\nexport class InitRestoreAppStorageCommand\n implements\n Command<\n void,\n InitRestoreAppStorageCommandArgs,\n InitRestoreAppStorageCommandErrorCodes\n >\n{\n readonly name = \"InitRestoreAppStorage\";\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6c,\n p1: 0x00,\n p2: 0x00,\n };\n\n constructor(private readonly args: InitRestoreAppStorageCommandArgs) {}\n\n getApdu(): Apdu {\n const { appName, appStorageDataLength } = this.args;\n return new ApduBuilder(this.header)\n .add32BitUIntToData(appStorageDataLength)\n .addAsciiStringToData(appName)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): InitRestoreAppStorageCommandResult {\n const parser = new ApduParser(apduResponse);\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, INIT_RESTORE_APP_STORAGE_ERRORS)) {\n return CommandResultFactory({\n error: new InitRestoreAppStorageCommandError({\n ...INIT_RESTORE_APP_STORAGE_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n return CommandResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qCAAAE,EAAA,iCAAAC,EAAA,sCAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAA4B,uCAC5BC,EAA2B,sCAE3BC,EAGO,4CACPC,EAGO,4CACPC,EAA6B,2CAC7BC,EAA0C,iDAE1CC,EAA2D,sBAepD,MAAMV,EACX,CACE,KAAQ,CAAE,QAAS,wBAAyB,EAC5C,OAAQ,CAAE,QAAS,sCAAuC,EAC1D,KAAQ,CAAE,QAAS,iCAAkC,EACrD,KAAQ,CAAE,QAAS,kCAAmC,EACtD,OAAQ,CAAE,QAAS,qDAAsD,EACzE,KAAQ,CAAE,QAAS,8BAA+B,CACpD,EAEK,MAAME,UAA0C,qBAA4D,CACjH,YAAYS,EAAgE,CAC1E,MAAM,CAAE,IAAK,oCAAqC,GAAGA,CAAK,CAAC,CAC7D,CACF,CAOO,MAAMV,CAOb,CAUE,YAA6BU,EAAwC,CAAxC,UAAAA,CAAyC,CAT7D,KAAO,wBAEC,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAIA,SAAgB,CACd,KAAM,CAAE,QAAAC,EAAS,qBAAAC,CAAqB,EAAI,KAAK,KAC/C,OAAO,IAAI,cAAY,KAAK,MAAM,EAC/B,mBAAmBA,CAAoB,EACvC,qBAAqBD,CAAO,EAC5B,MAAM,CACX,CAEA,cACEE,EACoC,CACpC,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAC1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWhB,CAA+B,KACxD,wBAAqB,CAC1B,MAAO,IAAIE,EAAkC,CAC3C,GAAGF,EAAgCgB,CAAS,EAC5C,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,SAAO,wBAAqB,CAC1B,KAAM,MACR,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["InitRestoreAppStorageCommand_exports", "__export", "INIT_RESTORE_APP_STORAGE_ERRORS", "InitRestoreAppStorageCommand", "InitRestoreAppStorageCommandError", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_CommandResult", "import_CommandErrors", "import_CommandUtils", "import_GlobalCommandError", "import_Error", "args", "appName", "appStorageDataLength", "apduResponse", "parser", "errorCode"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var a=require("../../command/model/CommandResult"),s=require("../../command/os/InitRestoreAppStorageCommand"),o=require("../../device-session/ApduResponse");describe("InitRestoreAppStorageCommand",()=>{describe("Name",()=>{it("name should be 'InitRestoreAppStorage'",()=>{const e=new s.InitRestoreAppStorageCommand({appName:"MyApp",appStorageDataLength:10}).name;expect(e).toBe("InitRestoreAppStorage")})}),describe("Command",()=>{it("should return the correct APDU for initializing an app storage restore",()=>{const t=Uint8Array.from([224,108,0,0,9,0,0,0,10,77,121,65,112,112]),e=new s.InitRestoreAppStorageCommand({appName:"MyApp",appStorageDataLength:10}).getApdu();expect(e.getRawApdu()).toEqual(t)})}),describe("Success response",()=>{it("should return a success result",()=>{const t=new o.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),e=new s.InitRestoreAppStorageCommand({appName:"MyApp",appStorageDataLength:10}).parseResponse(t);expect((0,a.isSuccessCommandResult)(e)).toBe(!0),expect(e).toEqual({data:void 0,status:"SUCCESS"})})}),describe("Error response",()=>{it.each([{description:"application is not found",statusCode:[81,35],expectedMessage:"Application not found."},{description:"device is in recovery mode",statusCode:[102,47],expectedMessage:"Invalid device state, recovery mode."},{description:"user rejected the consent",statusCode:[85,1],expectedMessage:"Invalid consent, user rejected."},{description:"pin is not set",statusCode:[85,2],expectedMessage:"Invalid consent, pin is not set."},{description:"application name length is invalid",statusCode:[103,10],expectedMessage:"Invalid application name length, two chars minimum."},{description:"backup length value is invalid",statusCode:[103,51],expectedMessage:"Invalid backup length value."},{description:"error code is not specific to InitRestoreAppStorageCommand (global error)",statusCode:[85,21],expectedMessage:"Device is locked."}])("should return error when $description",({statusCode:t,expectedMessage:e})=>{const r=new o.ApduResponse({statusCode:Uint8Array.from(t),data:new Uint8Array([])}),n=new s.InitRestoreAppStorageCommand({appName:"MyApp",appStorageDataLength:10}).parseResponse(r);expect((0,a.isSuccessCommandResult)(n)).toBe(!1),expect(n.error.message).toBe(e)})})});
|
|
2
|
+
//# sourceMappingURL=InitRestoreAppStorageCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/InitRestoreAppStorageCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { InitRestoreAppStorageCommand } from \"@api/command/os/InitRestoreAppStorageCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\ndescribe(\"InitRestoreAppStorageCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'InitRestoreAppStorage'\", () => {\n // ARRANGE\n const command = new InitRestoreAppStorageCommand({\n appName: \"MyApp\",\n appStorageDataLength: 10,\n });\n\n // ACT\n const name = command.name;\n\n // ASSERT\n expect(name).toBe(\"InitRestoreAppStorage\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for initializing an app storage restore\", () => {\n // ARRANGE\n const expectedApdu = Uint8Array.from([\n 0xe0, 0x6c, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x4d, 0x79, 0x41,\n 0x70, 0x70,\n ]);\n\n // ACT\n const apdu = new InitRestoreAppStorageCommand({\n appName: \"MyApp\",\n appStorageDataLength: 10,\n }).getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"Success response\", () => {\n it(\"should return a success result\", () => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new InitRestoreAppStorageCommand({\n appName: \"MyApp\",\n appStorageDataLength: 10,\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: undefined,\n status: \"SUCCESS\",\n });\n });\n });\n\n describe(\"Error response\", () => {\n it.each([\n {\n description: \"application is not found\",\n statusCode: [0x51, 0x23],\n expectedMessage: \"Application not found.\",\n },\n {\n description: \"device is in recovery mode\",\n statusCode: [0x66, 0x2f],\n expectedMessage: \"Invalid device state, recovery mode.\",\n },\n {\n description: \"user rejected the consent\",\n statusCode: [0x55, 0x01],\n expectedMessage: \"Invalid consent, user rejected.\",\n },\n {\n description: \"pin is not set\",\n statusCode: [0x55, 0x02],\n expectedMessage: \"Invalid consent, pin is not set.\",\n },\n {\n description: \"application name length is invalid\",\n statusCode: [0x67, 0x0a],\n expectedMessage: \"Invalid application name length, two chars minimum.\",\n },\n {\n description: \"backup length value is invalid\",\n statusCode: [0x67, 0x33],\n expectedMessage: \"Invalid backup length value.\",\n },\n {\n description:\n \"error code is not specific to InitRestoreAppStorageCommand (global error)\",\n statusCode: [0x55, 0x15],\n expectedMessage: \"Device is locked.\",\n },\n ])(\n \"should return error when $description\",\n ({ statusCode, expectedMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from(statusCode),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new InitRestoreAppStorageCommand({\n appName: \"MyApp\",\n appStorageDataLength: 10,\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect((result as unknown as { error: Error }).error.message).toBe(\n expectedMessage,\n );\n },\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAuC,4CACvCC,EAA6C,wDAC7CC,EAA6B,4CAE7B,SAAS,+BAAgC,IAAM,CAC7C,SAAS,OAAQ,IAAM,CACrB,GAAG,yCAA0C,IAAM,CAQjD,MAAMC,EANU,IAAI,+BAA6B,CAC/C,QAAS,QACT,qBAAsB,EACxB,CAAC,EAGoB,KAGrB,OAAOA,CAAI,EAAE,KAAK,uBAAuB,CAC3C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,yEAA0E,IAAM,CAEjF,MAAMC,EAAe,WAAW,KAAK,CACnC,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,IAAM,GAClE,IAAM,GACR,CAAC,EAGKC,EAAO,IAAI,+BAA6B,CAC5C,QAAS,QACT,qBAAsB,EACxB,CAAC,EAAE,QAAQ,EAGX,OAAOA,EAAK,WAAW,CAAC,EAAE,QAAQD,CAAY,CAChD,CAAC,CACH,CAAC,EAED,SAAS,mBAAoB,IAAM,CACjC,GAAG,iCAAkC,IAAM,CAEzC,MAAME,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKC,EAAS,IAAI,+BAA6B,CAC9C,QAAS,QACT,qBAAsB,EACxB,CAAC,EAAE,cAAcD,CAAQ,EAGzB,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAChD,OAAOA,CAAM,EAAE,QAAQ,CACrB,KAAM,OACN,OAAQ,SACV,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,KAAK,CACN,CACE,YAAa,2BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,wBACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,sCACnB,EACA,CACE,YAAa,4BACb,WAAY,CAAC,GAAM,CAAI,EACvB,gBAAiB,iCACnB,EACA,CACE,YAAa,iBACb,WAAY,CAAC,GAAM,CAAI,EACvB,gBAAiB,kCACnB,EACA,CACE,YAAa,qCACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,qDACnB,EACA,CACE,YAAa,iCACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,8BACnB,EACA,CACE,YACE,4EACF,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,mBACnB,CACF,CAAC,EACC,wCACA,CAAC,CAAE,WAAAC,EAAY,gBAAAC,CAAgB,IAAM,CAEnC,MAAMH,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAKE,CAAU,EACtC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKD,EAAS,IAAI,+BAA6B,CAC9C,QAAS,QACT,qBAAsB,EACxB,CAAC,EAAE,cAAcD,CAAQ,EAGzB,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EACjD,OAAQA,EAAuC,MAAM,OAAO,EAAE,KAC5DE,CACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_CommandResult", "import_InitRestoreAppStorageCommand", "import_ApduResponse", "name", "expectedApdu", "apdu", "response", "result", "statusCode", "expectedMessage"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var m=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var E=(r,e)=>{for(var o in e)m(r,o,{get:e[o],enumerable:!0})},S=(r,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of R(e))!c.call(r,a)&&a!==o&&m(r,a,{get:()=>e[a],enumerable:!(t=u(e,a))||t.enumerable});return r};var f=r=>S(m({},"__esModule",{value:!0}),r);var x={};E(x,{RESTORE_APP_STORAGE_ERRORS:()=>p,RestoreAppStorageCommand:()=>y,RestoreAppStorageCommandError:()=>A});module.exports=f(x);var d=require("../../apdu/utils/ApduBuilder"),n=require("../../apdu/utils/ApduParser"),s=require("../../command/model/CommandResult"),i=require("../../command/utils/CommandErrors"),g=require("../../command/utils/CommandUtils"),C=require("../../command/utils/GlobalCommandError"),l=require("../../Error");const p={5123:{message:"Invalid context, Restore Init must be called first."},5419:{message:"Failed to generate AES key."},"541a":{message:"Failed to decrypt the app storage backup."},"662f":{message:"Invalid device state, recovery mode."},6643:{message:"Invalid restore state, restore already performed."},6734:{message:"Invalid chunk length."},"684a":{message:"Invalid backup, app storage header is not valid."}};class A extends l.DeviceExchangeError{constructor(e){super({tag:"RestoreAppStorageCommandError",...e})}}class y{constructor(e){this.args=e}name="RestoreAppStorage";header={cla:224,ins:109,p1:0,p2:0};getApdu(){const{chunkData:e}=this.args;return new d.ApduBuilder(this.header).addBufferToData(e).build()}parseResponse(e){const o=new n.ApduParser(e);if(!g.CommandUtils.isSuccessResponse(e)){const t=o.encodeToHexaString(e.statusCode);return(0,i.isCommandErrorCode)(t,p)?(0,s.CommandResultFactory)({error:new A({...p[t],errorCode:t})}):(0,s.CommandResultFactory)({error:C.GlobalCommandErrorHandler.handle(e)})}return(0,s.CommandResultFactory)({data:void 0})}}0&&(module.exports={RESTORE_APP_STORAGE_ERRORS,RestoreAppStorageCommand,RestoreAppStorageCommandError});
|
|
2
|
+
//# sourceMappingURL=RestoreAppStorageCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/RestoreAppStorageCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type RestoreAppStorageCommandArgs = {\n chunkData: Uint8Array;\n};\n\nexport type RestoreAppStorageCommandErrorCodes =\n | \"5123\"\n | \"5419\"\n | \"541a\"\n | \"662f\"\n | \"6643\"\n | \"6734\"\n | \"684a\";\n\nexport const RESTORE_APP_STORAGE_ERRORS: CommandErrors<RestoreAppStorageCommandErrorCodes> =\n {\n \"5123\": { message: \"Invalid context, Restore Init must be called first.\" },\n \"5419\": { message: \"Failed to generate AES key.\" },\n \"541a\": { message: \"Failed to decrypt the app storage backup.\" },\n \"662f\": { message: \"Invalid device state, recovery mode.\" },\n \"6643\": { message: \"Invalid restore state, restore already performed.\" },\n \"6734\": { message: \"Invalid chunk length.\" },\n \"684a\": { message: \"Invalid backup, app storage header is not valid.\" },\n };\n\nexport class RestoreAppStorageCommandError extends DeviceExchangeError<RestoreAppStorageCommandErrorCodes> {\n constructor(args: CommandErrorArgs<RestoreAppStorageCommandErrorCodes>) {\n super({ tag: \"RestoreAppStorageCommandError\", ...args });\n }\n}\n\nexport type RestoreAppStorageCommandResult = CommandResult<\n void,\n RestoreAppStorageCommandErrorCodes\n>;\n\nexport class RestoreAppStorageCommand\n implements\n Command<\n void,\n RestoreAppStorageCommandArgs,\n RestoreAppStorageCommandErrorCodes\n >\n{\n readonly name = \"RestoreAppStorage\";\n\n private readonly header = {\n cla: 0xe0,\n ins: 0x6d,\n p1: 0x00,\n p2: 0x00,\n };\n\n constructor(private readonly args: RestoreAppStorageCommandArgs) {}\n\n getApdu(): Apdu {\n const { chunkData } = this.args;\n return new ApduBuilder(this.header).addBufferToData(chunkData).build();\n }\n\n parseResponse(apduResponse: ApduResponse): RestoreAppStorageCommandResult {\n const parser = new ApduParser(apduResponse);\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, RESTORE_APP_STORAGE_ERRORS)) {\n return CommandResultFactory({\n error: new RestoreAppStorageCommandError({\n ...RESTORE_APP_STORAGE_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n return CommandResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,EAAA,6BAAAC,EAAA,kCAAAC,IAAA,eAAAC,EAAAL,GACA,IAAAM,EAA4B,uCAC5BC,EAA2B,sCAE3BC,EAGO,4CACPC,EAGO,4CACPC,EAA6B,2CAC7BC,EAA0C,iDAE1CC,EAA2D,sBAepD,MAAMV,EACX,CACE,KAAQ,CAAE,QAAS,qDAAsD,EACzE,KAAQ,CAAE,QAAS,6BAA8B,EACjD,OAAQ,CAAE,QAAS,2CAA4C,EAC/D,OAAQ,CAAE,QAAS,sCAAuC,EAC1D,KAAQ,CAAE,QAAS,mDAAoD,EACvE,KAAQ,CAAE,QAAS,uBAAwB,EAC3C,OAAQ,CAAE,QAAS,kDAAmD,CACxE,EAEK,MAAME,UAAsC,qBAAwD,CACzG,YAAYS,EAA4D,CACtE,MAAM,CAAE,IAAK,gCAAiC,GAAGA,CAAK,CAAC,CACzD,CACF,CAOO,MAAMV,CAOb,CAUE,YAA6BU,EAAoC,CAApC,UAAAA,CAAqC,CATzD,KAAO,oBAEC,OAAS,CACxB,IAAK,IACL,IAAK,IACL,GAAI,EACJ,GAAI,CACN,EAIA,SAAgB,CACd,KAAM,CAAE,UAAAC,CAAU,EAAI,KAAK,KAC3B,OAAO,IAAI,cAAY,KAAK,MAAM,EAAE,gBAAgBA,CAAS,EAAE,MAAM,CACvE,CAEA,cAAcC,EAA4D,CACxE,MAAMC,EAAS,IAAI,aAAWD,CAAY,EAC1C,GAAI,CAAC,eAAa,kBAAkBA,CAAY,EAAG,CACjD,MAAME,EAAYD,EAAO,mBAAmBD,EAAa,UAAU,EACnE,SAAI,sBAAmBE,EAAWf,CAA0B,KACnD,wBAAqB,CAC1B,MAAO,IAAIE,EAA8B,CACvC,GAAGF,EAA2Be,CAAS,EACvC,UAAAA,CACF,CAAC,CACH,CAAC,KAEI,wBAAqB,CAC1B,MAAO,4BAA0B,OAAOF,CAAY,CACtD,CAAC,CACH,CAEA,SAAO,wBAAqB,CAC1B,KAAM,MACR,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["RestoreAppStorageCommand_exports", "__export", "RESTORE_APP_STORAGE_ERRORS", "RestoreAppStorageCommand", "RestoreAppStorageCommandError", "__toCommonJS", "import_ApduBuilder", "import_ApduParser", "import_CommandResult", "import_CommandErrors", "import_CommandUtils", "import_GlobalCommandError", "import_Error", "args", "chunkData", "apduResponse", "parser", "errorCode"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("../../command/model/CommandResult"),r=require("../../command/os/RestoreAppStorageCommand"),o=require("../../device-session/ApduResponse");describe("RestoreAppStorageCommand",()=>{describe("Name",()=>{it("name should be 'RestoreAppStorage'",()=>{const e=new r.RestoreAppStorageCommand({chunkData:Uint8Array.from([1,2,3])}).name;expect(e).toBe("RestoreAppStorage")})}),describe("Command",()=>{it("should return the correct APDU for restoring an app storage chunk",()=>{const t=Uint8Array.from([224,109,0,0,3,1,2,3]),e=new r.RestoreAppStorageCommand({chunkData:Uint8Array.from([1,2,3])}).getApdu();expect(e.getRawApdu()).toEqual(t)})}),describe("Success response",()=>{it("should return a success result",()=>{const t=new o.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),e=new r.RestoreAppStorageCommand({chunkData:Uint8Array.from([1,2,3])}).parseResponse(t);expect((0,s.isSuccessCommandResult)(e)).toBe(!0),expect(e).toEqual({data:void 0,status:"SUCCESS"})})}),describe("Error response",()=>{it.each([{description:"restore init has not been called",statusCode:[81,35],expectedMessage:"Invalid context, Restore Init must be called first."},{description:"AES key generation failed",statusCode:[84,25],expectedMessage:"Failed to generate AES key."},{description:"decryption failed",statusCode:[84,26],expectedMessage:"Failed to decrypt the app storage backup."},{description:"device is in recovery mode",statusCode:[102,47],expectedMessage:"Invalid device state, recovery mode."},{description:"restore has already been performed",statusCode:[102,67],expectedMessage:"Invalid restore state, restore already performed."},{description:"chunk length is invalid",statusCode:[103,52],expectedMessage:"Invalid chunk length."},{description:"app storage header is invalid",statusCode:[104,74],expectedMessage:"Invalid backup, app storage header is not valid."},{description:"error code is not specific to RestoreAppStorageCommand (global error)",statusCode:[85,21],expectedMessage:"Device is locked."}])("should return error when $description",({statusCode:t,expectedMessage:e})=>{const n=new o.ApduResponse({statusCode:Uint8Array.from(t),data:new Uint8Array([])}),a=new r.RestoreAppStorageCommand({chunkData:Uint8Array.from([1,2,3])}).parseResponse(n);expect((0,s.isSuccessCommandResult)(a)).toBe(!1),expect(a.error.message).toBe(e)})})});
|
|
2
|
+
//# sourceMappingURL=RestoreAppStorageCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/RestoreAppStorageCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport { RestoreAppStorageCommand } from \"@api/command/os/RestoreAppStorageCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\ndescribe(\"RestoreAppStorageCommand\", () => {\n describe(\"Name\", () => {\n it(\"name should be 'RestoreAppStorage'\", () => {\n // ARRANGE\n const command = new RestoreAppStorageCommand({\n chunkData: Uint8Array.from([0x01, 0x02, 0x03]),\n });\n\n // ACT\n const name = command.name;\n\n // ASSERT\n expect(name).toBe(\"RestoreAppStorage\");\n });\n });\n\n describe(\"Command\", () => {\n it(\"should return the correct APDU for restoring an app storage chunk\", () => {\n // ARRANGE\n const expectedApdu = Uint8Array.from([\n 0xe0, 0x6d, 0x00, 0x00, 0x03, 0x01, 0x02, 0x03,\n ]);\n\n // ACT\n const apdu = new RestoreAppStorageCommand({\n chunkData: Uint8Array.from([0x01, 0x02, 0x03]),\n }).getApdu();\n\n // ASSERT\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"Success response\", () => {\n it(\"should return a success result\", () => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new RestoreAppStorageCommand({\n chunkData: Uint8Array.from([0x01, 0x02, 0x03]),\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(result).toEqual({\n data: undefined,\n status: \"SUCCESS\",\n });\n });\n });\n\n describe(\"Error response\", () => {\n it.each([\n {\n description: \"restore init has not been called\",\n statusCode: [0x51, 0x23],\n expectedMessage: \"Invalid context, Restore Init must be called first.\",\n },\n {\n description: \"AES key generation failed\",\n statusCode: [0x54, 0x19],\n expectedMessage: \"Failed to generate AES key.\",\n },\n {\n description: \"decryption failed\",\n statusCode: [0x54, 0x1a],\n expectedMessage: \"Failed to decrypt the app storage backup.\",\n },\n {\n description: \"device is in recovery mode\",\n statusCode: [0x66, 0x2f],\n expectedMessage: \"Invalid device state, recovery mode.\",\n },\n {\n description: \"restore has already been performed\",\n statusCode: [0x66, 0x43],\n expectedMessage: \"Invalid restore state, restore already performed.\",\n },\n {\n description: \"chunk length is invalid\",\n statusCode: [0x67, 0x34],\n expectedMessage: \"Invalid chunk length.\",\n },\n {\n description: \"app storage header is invalid\",\n statusCode: [0x68, 0x4a],\n expectedMessage: \"Invalid backup, app storage header is not valid.\",\n },\n {\n description:\n \"error code is not specific to RestoreAppStorageCommand (global error)\",\n statusCode: [0x55, 0x15],\n expectedMessage: \"Device is locked.\",\n },\n ])(\n \"should return error when $description\",\n ({ statusCode, expectedMessage }) => {\n // ARRANGE\n const response = new ApduResponse({\n statusCode: Uint8Array.from(statusCode),\n data: new Uint8Array([]),\n });\n\n // ACT\n const result = new RestoreAppStorageCommand({\n chunkData: Uint8Array.from([0x01, 0x02, 0x03]),\n }).parseResponse(response);\n\n // ASSERT\n expect(isSuccessCommandResult(result)).toBe(false);\n expect((result as unknown as { error: Error }).error.message).toBe(\n expectedMessage,\n );\n },\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAuC,4CACvCC,EAAyC,oDACzCC,EAA6B,4CAE7B,SAAS,2BAA4B,IAAM,CACzC,SAAS,OAAQ,IAAM,CACrB,GAAG,qCAAsC,IAAM,CAO7C,MAAMC,EALU,IAAI,2BAAyB,CAC3C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CAAC,EAGoB,KAGrB,OAAOA,CAAI,EAAE,KAAK,mBAAmB,CACvC,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,oEAAqE,IAAM,CAE5E,MAAMC,EAAe,WAAW,KAAK,CACnC,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAC5C,CAAC,EAGKC,EAAO,IAAI,2BAAyB,CACxC,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CAAC,EAAE,QAAQ,EAGX,OAAOA,EAAK,WAAW,CAAC,EAAE,QAAQD,CAAY,CAChD,CAAC,CACH,CAAC,EAED,SAAS,mBAAoB,IAAM,CACjC,GAAG,iCAAkC,IAAM,CAEzC,MAAME,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKC,EAAS,IAAI,2BAAyB,CAC1C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CAAC,EAAE,cAAcD,CAAQ,EAGzB,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAChD,OAAOA,CAAM,EAAE,QAAQ,CACrB,KAAM,OACN,OAAQ,SACV,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,KAAK,CACN,CACE,YAAa,mCACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,qDACnB,EACA,CACE,YAAa,4BACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,6BACnB,EACA,CACE,YAAa,oBACb,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,2CACnB,EACA,CACE,YAAa,6BACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,sCACnB,EACA,CACE,YAAa,qCACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,mDACnB,EACA,CACE,YAAa,0BACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,uBACnB,EACA,CACE,YAAa,gCACb,WAAY,CAAC,IAAM,EAAI,EACvB,gBAAiB,kDACnB,EACA,CACE,YACE,wEACF,WAAY,CAAC,GAAM,EAAI,EACvB,gBAAiB,mBACnB,CACF,CAAC,EACC,wCACA,CAAC,CAAE,WAAAC,EAAY,gBAAAC,CAAgB,IAAM,CAEnC,MAAMH,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAKE,CAAU,EACtC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKD,EAAS,IAAI,2BAAyB,CAC1C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CAAC,EAAE,cAAcD,CAAQ,EAGzB,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EACjD,OAAQA,EAAuC,MAAM,OAAO,EAAE,KAC5DE,CACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_CommandResult", "import_RestoreAppStorageCommand", "import_ApduResponse", "name", "expectedApdu", "apdu", "response", "result", "statusCode", "expectedMessage"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var g=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var
|
|
1
|
+
"use strict";var g=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var C=(e,r)=>{for(var a in r)g(e,a,{get:r[a],enumerable:!0})},y=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of A(r))!f.call(e,o)&&o!==a&&g(e,o,{get:()=>r[o],enumerable:!(t=l(r,o))||t.enumerable});return e};var B=e=>y(g({},"__esModule",{value:!0}),e);var E={};C(E,{BackupAppStorageTask:()=>h});module.exports=B(E);var m=require("../../command/model/CommandResult"),u=require("../../command/os/BackupAppStorageCommand"),d=require("../../command/os/GetAppStorageInfoCommand"),s=require("../../model/DmkResult"),c=require("../../utils/HexaString");class h{constructor(r,a,t){this.args=r;this.api=a;this.logger=t}async run(){this.logger.debug("[run] Starting BackupAppStorageTask",{data:{appName:this.args.appName}});const{appName:r}=this.args,a=await this.api.sendCommand(new d.GetAppStorageInfoCommand({appName:r}));if(!(0,m.isSuccessCommandResult)(a))return this.logger.debug("[run] Failed to get app storage info",{data:{error:a.error}}),(0,s.DmkResultFactory)({error:a.error});const{storageSize:t}=a.data;let o=0,n=new Uint8Array(0);for(;o<t;){const p=await this.api.sendCommand(new u.BackupAppStorageCommand);if(!(0,m.isSuccessCommandResult)(p))return this.logger.debug("[run] Failed to backup app storage",{data:{error:p.error}}),(0,s.DmkResultFactory)({error:p.error});const{chunkData:S,chunkSize:k}=p.data;n=Uint8Array.from([...n,...S]),o+=k}const i=(0,c.bufferToHexaString)(n);return this.logger.debug("[run] App storage data backed up successfully",{data:{appStorageData:i}}),(0,s.DmkResultFactory)({data:{appStorageData:i}})}}0&&(module.exports={BackupAppStorageTask});
|
|
2
2
|
//# sourceMappingURL=BackupAppStorageTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/device-action/task/BackupAppStorageTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandErrorResult,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport {\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,4CACPC,EAGO,
|
|
6
|
-
"names": ["BackupAppStorageTask_exports", "__export", "BackupAppStorageTask", "__toCommonJS", "import_CommandResult", "
|
|
4
|
+
"sourcesContent": ["import {\n type CommandErrorResult,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport {\n BackupAppStorageCommand,\n type BackupAppStorageCommandErrorCodes,\n} from \"@api/command/os/BackupAppStorageCommand\";\nimport {\n GetAppStorageInfoCommand,\n type GetAppStorageInfoCommandErrorCodes,\n} from \"@api/command/os/GetAppStorageInfoCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type DmkResult, DmkResultFactory } from \"@api/model/DmkResult\";\nimport { bufferToHexaString, type HexaString } from \"@api/utils/HexaString\";\n\nexport type BackupAppStorageTaskArgs = {\n appName: string;\n};\n\nexport type BackupAppStorageTaskResponse = {\n appStorageData: HexaString;\n};\n\nexport type BackupAppStorageTaskErrorCodes =\n | GetAppStorageInfoCommandErrorCodes\n | BackupAppStorageCommandErrorCodes;\n\nexport type BackupAppStorageTaskError =\n | CommandErrorResult<GetAppStorageInfoCommandErrorCodes>[\"error\"]\n | CommandErrorResult<BackupAppStorageCommandErrorCodes>[\"error\"];\n\nexport class BackupAppStorageTask {\n constructor(\n private readonly args: BackupAppStorageTaskArgs,\n private readonly api: InternalApi,\n private readonly logger: LoggerPublisherService,\n ) {}\n\n public async run(): Promise<\n DmkResult<BackupAppStorageTaskResponse, BackupAppStorageTaskError>\n > {\n this.logger.debug(\"[run] Starting BackupAppStorageTask\", {\n data: {\n appName: this.args.appName,\n },\n });\n\n const { appName } = this.args;\n\n const getAppStorageInfo = await this.api.sendCommand(\n new GetAppStorageInfoCommand({\n appName,\n }),\n );\n\n if (!isSuccessCommandResult(getAppStorageInfo)) {\n this.logger.debug(\"[run] Failed to get app storage info\", {\n data: { error: getAppStorageInfo.error },\n });\n return DmkResultFactory({\n error: getAppStorageInfo.error,\n });\n }\n\n const { storageSize } = getAppStorageInfo.data;\n let offset = 0;\n let appStorageDataBytes = new Uint8Array(0);\n\n while (offset < storageSize) {\n const backupStorage = await this.api.sendCommand(\n new BackupAppStorageCommand(),\n );\n if (!isSuccessCommandResult(backupStorage)) {\n this.logger.debug(\"[run] Failed to backup app storage\", {\n data: { error: backupStorage.error },\n });\n return DmkResultFactory({\n error: backupStorage.error,\n });\n }\n\n const { chunkData, chunkSize } = backupStorage.data;\n appStorageDataBytes = Uint8Array.from([\n ...appStorageDataBytes,\n ...chunkData,\n ]);\n offset += chunkSize;\n }\n\n const appStorageData = bufferToHexaString(appStorageDataBytes);\n this.logger.debug(\"[run] App storage data backed up successfully\", {\n data: {\n appStorageData,\n },\n });\n\n return DmkResultFactory({\n data: {\n appStorageData,\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,4CACPC,EAGO,mDACPC,EAGO,oDAGPC,EAAiD,gCACjDC,EAAoD,iCAkB7C,MAAMN,CAAqB,CAChC,YACmBO,EACAC,EACAC,EACjB,CAHiB,UAAAF,EACA,SAAAC,EACA,YAAAC,CAChB,CAEH,MAAa,KAEX,CACA,KAAK,OAAO,MAAM,sCAAuC,CACvD,KAAM,CACJ,QAAS,KAAK,KAAK,OACrB,CACF,CAAC,EAED,KAAM,CAAE,QAAAC,CAAQ,EAAI,KAAK,KAEnBC,EAAoB,MAAM,KAAK,IAAI,YACvC,IAAI,2BAAyB,CAC3B,QAAAD,CACF,CAAC,CACH,EAEA,GAAI,IAAC,0BAAuBC,CAAiB,EAC3C,YAAK,OAAO,MAAM,uCAAwC,CACxD,KAAM,CAAE,MAAOA,EAAkB,KAAM,CACzC,CAAC,KACM,oBAAiB,CACtB,MAAOA,EAAkB,KAC3B,CAAC,EAGH,KAAM,CAAE,YAAAC,CAAY,EAAID,EAAkB,KAC1C,IAAIE,EAAS,EACTC,EAAsB,IAAI,WAAW,CAAC,EAE1C,KAAOD,EAASD,GAAa,CAC3B,MAAMG,EAAgB,MAAM,KAAK,IAAI,YACnC,IAAI,yBACN,EACA,GAAI,IAAC,0BAAuBA,CAAa,EACvC,YAAK,OAAO,MAAM,qCAAsC,CACtD,KAAM,CAAE,MAAOA,EAAc,KAAM,CACrC,CAAC,KACM,oBAAiB,CACtB,MAAOA,EAAc,KACvB,CAAC,EAGH,KAAM,CAAE,UAAAC,EAAW,UAAAC,CAAU,EAAIF,EAAc,KAC/CD,EAAsB,WAAW,KAAK,CACpC,GAAGA,EACH,GAAGE,CACL,CAAC,EACDH,GAAUI,CACZ,CAEA,MAAMC,KAAiB,sBAAmBJ,CAAmB,EAC7D,YAAK,OAAO,MAAM,gDAAiD,CACjE,KAAM,CACJ,eAAAI,CACF,CACF,CAAC,KAEM,oBAAiB,CACtB,KAAM,CACJ,eAAAA,CACF,CACF,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["BackupAppStorageTask_exports", "__export", "BackupAppStorageTask", "__toCommonJS", "import_CommandResult", "import_BackupAppStorageCommand", "import_GetAppStorageInfoCommand", "import_DmkResult", "import_HexaString", "args", "api", "logger", "appName", "getAppStorageInfo", "storageSize", "offset", "appStorageDataBytes", "backupStorage", "chunkData", "chunkSize", "appStorageData"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=require("../../command/os/BackupAppStorageCommand"),c=require("../../command/os/GetAppStorageInfoCommand"),n=require("../../device-action/task/BackupAppStorageTask"),e=require("../../index");describe("BackupAppStorageTask",()=>{let o,t;const s=vi.fn();beforeEach(()=>{vi.clearAllMocks(),o={sendCommand:s},t={debug:vi.fn()}}),describe("Success",()=>{it("should backup app storage data successfully",async()=>{const r=new n.BackupAppStorageTask({appName:"MyApp"},o,t);s.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{storageSize:15}})).mockResolvedValueOnce((0,e.CommandResultFactory)({data:{chunkData:new Uint8Array([1,35,69,103,137]),chunkSize:5}})).mockResolvedValueOnce((0,e.CommandResultFactory)({data:{chunkData:new Uint8Array([10,11,12,13,14]),chunkSize:5}})).mockResolvedValueOnce((0,e.CommandResultFactory)({data:{chunkData:new Uint8Array([15,16,17,18,19]),chunkSize:5}}));const a=await r.run();expect((0,e.isSuccessDmkResult)(a)).toBe(!0),expect(a.data.appStorageData).toBe("0x01234567890a0b0c0d0e0f10111213")})}),describe("Error",()=>{it("should return error when getting app storage info fails",async()=>{const r=new n.BackupAppStorageTask({appName:"MyApp"},o,t);s.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new c.GetAppStorageInfoCommandError({message:"Application not found.",errorCode:"5123"})}));const a=await r.run();expect(a).toStrictEqual((0,e.DmkResultFactory)({error:new c.GetAppStorageInfoCommandError({message:"Application not found.",errorCode:"5123"})}))}),it("should return error when backing up app storage data fails",async()=>{const r=new n.BackupAppStorageTask({appName:"MyApp"},o,t);s.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{storageSize:100}})).mockResolvedValueOnce((0,e.CommandResultFactory)({error:new p.BackupAppStorageCommandError({message:"Failed to backup app storage data.",errorCode:"541c"})}));const a=await r.run();expect((0,e.isSuccessDmkResult)(a)).toBe(!1),expect(a.error).toBeInstanceOf(p.BackupAppStorageCommandError),expect(a.error.message).toBe("Failed to backup app storage data.")})})});
|
|
2
2
|
//# sourceMappingURL=BackupAppStorageTask.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/device-action/task/BackupAppStorageTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "aAAA,IAAAA,
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import { BackupAppStorageCommandError } from \"@api/command/os/BackupAppStorageCommand\";\nimport { GetAppStorageInfoCommandError } from \"@api/command/os/GetAppStorageInfoCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport {\n BackupAppStorageTask,\n type BackupAppStorageTaskResponse,\n} from \"@api/device-action/task/BackupAppStorageTask\";\nimport {\n CommandResultFactory,\n DmkResultFactory,\n isSuccessDmkResult,\n} from \"@api/index\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\n\ndescribe(\"BackupAppStorageTask\", () => {\n let api: InternalApi;\n let logger: LoggerPublisherService;\n const sendCommand = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n api = {\n sendCommand,\n } as unknown as InternalApi;\n logger = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n });\n\n describe(\"Success\", () => {\n it(\"should backup app storage data successfully\", async () => {\n // ARRANGE\n const task = new BackupAppStorageTask(\n {\n appName: \"MyApp\",\n },\n api,\n logger,\n );\n\n sendCommand\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { storageSize: 15 } }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n chunkData: new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89]),\n chunkSize: 5,\n },\n }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n chunkData: new Uint8Array([0x0a, 0x0b, 0x0c, 0x0d, 0x0e]),\n chunkSize: 5,\n },\n }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n chunkData: new Uint8Array([0x0f, 0x10, 0x11, 0x12, 0x13]),\n chunkSize: 5,\n },\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(true);\n expect(\n (result as { data: BackupAppStorageTaskResponse }).data.appStorageData,\n ).toBe(\"0x01234567890a0b0c0d0e0f10111213\");\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return error when getting app storage info fails\", async () => {\n // ARRANGE\n const task = new BackupAppStorageTask(\n {\n appName: \"MyApp\",\n },\n api,\n logger,\n );\n\n sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new GetAppStorageInfoCommandError({\n message: \"Application not found.\",\n errorCode: \"5123\",\n }),\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(result).toStrictEqual(\n DmkResultFactory({\n error: new GetAppStorageInfoCommandError({\n message: \"Application not found.\",\n errorCode: \"5123\",\n }),\n }),\n );\n });\n\n it(\"should return error when backing up app storage data fails\", async () => {\n // ARRANGE\n const task = new BackupAppStorageTask(\n {\n appName: \"MyApp\",\n },\n api,\n logger,\n );\n\n sendCommand\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { storageSize: 100 } }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new BackupAppStorageCommandError({\n message: \"Failed to backup app storage data.\",\n errorCode: \"541c\",\n }),\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(false);\n expect(\n (result as { error: BackupAppStorageCommandError }).error,\n ).toBeInstanceOf(BackupAppStorageCommandError);\n expect(\n (result as { error: BackupAppStorageCommandError }).error.message,\n ).toBe(\"Failed to backup app storage data.\");\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA6C,mDAC7CC,EAA8C,oDAE9CC,EAGO,wDACPC,EAIO,sBAGP,SAAS,uBAAwB,IAAM,CACrC,IAAIC,EACAC,EACJ,MAAMC,EAAc,GAAG,GAAG,EAE1B,WAAW,IAAM,CACf,GAAG,cAAc,EACjBF,EAAM,CACJ,YAAAE,CACF,EACAD,EAAS,CACP,MAAO,GAAG,GAAG,CACf,CACF,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,8CAA+C,SAAY,CAE5D,MAAME,EAAO,IAAI,uBACf,CACE,QAAS,OACX,EACAH,EACAC,CACF,EAEAC,EACG,yBACC,wBAAqB,CAAE,KAAM,CAAE,YAAa,EAAG,CAAE,CAAC,CACpD,EACC,yBACC,wBAAqB,CACnB,KAAM,CACJ,UAAW,IAAI,WAAW,CAAC,EAAM,GAAM,GAAM,IAAM,GAAI,CAAC,EACxD,UAAW,CACb,CACF,CAAC,CACH,EACC,yBACC,wBAAqB,CACnB,KAAM,CACJ,UAAW,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EACxD,UAAW,CACb,CACF,CAAC,CACH,EACC,yBACC,wBAAqB,CACnB,KAAM,CACJ,UAAW,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EACxD,UAAW,CACb,CACF,CAAC,CACH,EAGF,MAAME,EAAS,MAAMD,EAAK,IAAI,EAG9B,UAAO,sBAAmBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5C,OACGA,EAAkD,KAAK,cAC1D,EAAE,KAAK,kCAAkC,CAC3C,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,0DAA2D,SAAY,CAExE,MAAMD,EAAO,IAAI,uBACf,CACE,QAAS,OACX,EACAH,EACAC,CACF,EAEAC,EAAY,yBACV,wBAAqB,CACnB,MAAO,IAAI,gCAA8B,CACvC,QAAS,yBACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,EAGA,MAAME,EAAS,MAAMD,EAAK,IAAI,EAG9B,OAAOC,CAAM,EAAE,iBACb,oBAAiB,CACf,MAAO,IAAI,gCAA8B,CACvC,QAAS,yBACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAED,GAAG,6DAA8D,SAAY,CAE3E,MAAMD,EAAO,IAAI,uBACf,CACE,QAAS,OACX,EACAH,EACAC,CACF,EAEAC,EACG,yBACC,wBAAqB,CAAE,KAAM,CAAE,YAAa,GAAI,CAAE,CAAC,CACrD,EACC,yBACC,wBAAqB,CACnB,MAAO,IAAI,+BAA6B,CACtC,QAAS,qCACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,EAGF,MAAME,EAAS,MAAMD,EAAK,IAAI,EAG9B,UAAO,sBAAmBC,CAAM,CAAC,EAAE,KAAK,EAAK,EAC7C,OACGA,EAAmD,KACtD,EAAE,eAAe,8BAA4B,EAC7C,OACGA,EAAmD,MAAM,OAC5D,EAAE,KAAK,oCAAoC,CAC7C,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_BackupAppStorageCommand", "import_GetAppStorageInfoCommand", "import_BackupAppStorageTask", "import_api", "api", "logger", "sendCommand", "task", "result"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var d=(o,r)=>{for(var e in r)s(o,e,{get:r[e],enumerable:!0})},A=(o,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of l(r))!u.call(o,t)&&t!==e&&s(o,t,{get:()=>r[t],enumerable:!(a=m(r,t))||a.enumerable});return o};var c=o=>A(s({},"__esModule",{value:!0}),o);var y={};d(y,{RestoreAppStorageTask:()=>S});module.exports=c(y);var g=require("../../apdu/utils/ApduBuilder"),n=require("../../command/model/CommandResult"),i=require("../../command/os/RestoreAppStorageCommand"),p=require("../../model/DmkResult");class S{constructor(r,e,a){this.args=r;this.api=e;this.logger=a}async run(){const{appStorageData:r}=this.args;this.logger.debug("[run] Starting RestoreAppStorageTask",{data:{appStorageDataLength:r.length}});let e=0;for(;e<r.length;){const a=r.subarray(e,e+g.APDU_MAX_PAYLOAD),t=await this.api.sendCommand(new i.RestoreAppStorageCommand({chunkData:a}));if(!(0,n.isSuccessCommandResult)(t))return this.logger.debug("[run] Failed to restore app storage chunk",{data:{error:t.error}}),(0,p.DmkResultFactory)({error:t.error});e+=a.length}return this.logger.debug("[run] App storage data restored successfully"),(0,p.DmkResultFactory)({data:void 0})}}0&&(module.exports={RestoreAppStorageTask});
|
|
2
|
+
//# sourceMappingURL=RestoreAppStorageTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/device-action/task/RestoreAppStorageTask.ts"],
|
|
4
|
+
"sourcesContent": ["import { APDU_MAX_PAYLOAD } from \"@api/apdu/utils/ApduBuilder\";\nimport {\n type CommandErrorResult,\n isSuccessCommandResult,\n} from \"@api/command/model/CommandResult\";\nimport {\n RestoreAppStorageCommand,\n type RestoreAppStorageCommandErrorCodes,\n} from \"@api/command/os/RestoreAppStorageCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type DmkResult, DmkResultFactory } from \"@api/model/DmkResult\";\n\nexport type RestoreAppStorageTaskArgs = {\n appStorageData: Uint8Array;\n};\n\nexport type RestoreAppStorageTaskError =\n CommandErrorResult<RestoreAppStorageCommandErrorCodes>[\"error\"];\n\nexport class RestoreAppStorageTask {\n constructor(\n private readonly args: RestoreAppStorageTaskArgs,\n private readonly api: InternalApi,\n private readonly logger: LoggerPublisherService,\n ) {}\n\n public async run(): Promise<DmkResult<void, RestoreAppStorageTaskError>> {\n const { appStorageData } = this.args;\n\n this.logger.debug(\"[run] Starting RestoreAppStorageTask\", {\n data: {\n appStorageDataLength: appStorageData.length,\n },\n });\n\n let offset = 0;\n\n while (offset < appStorageData.length) {\n const chunkData = appStorageData.subarray(\n offset,\n offset + APDU_MAX_PAYLOAD,\n );\n\n const restoreAppStorage = await this.api.sendCommand(\n new RestoreAppStorageCommand({ chunkData }),\n );\n\n if (!isSuccessCommandResult(restoreAppStorage)) {\n this.logger.debug(\"[run] Failed to restore app storage chunk\", {\n data: { error: restoreAppStorage.error },\n });\n return DmkResultFactory({\n error: restoreAppStorage.error,\n });\n }\n\n offset += chunkData.length;\n }\n\n this.logger.debug(\"[run] App storage data restored successfully\");\n\n return DmkResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiC,uCACjCC,EAGO,4CACPC,EAGO,oDAGPC,EAAiD,gCAS1C,MAAML,CAAsB,CACjC,YACmBM,EACAC,EACAC,EACjB,CAHiB,UAAAF,EACA,SAAAC,EACA,YAAAC,CAChB,CAEH,MAAa,KAA4D,CACvE,KAAM,CAAE,eAAAC,CAAe,EAAI,KAAK,KAEhC,KAAK,OAAO,MAAM,uCAAwC,CACxD,KAAM,CACJ,qBAAsBA,EAAe,MACvC,CACF,CAAC,EAED,IAAIC,EAAS,EAEb,KAAOA,EAASD,EAAe,QAAQ,CACrC,MAAME,EAAYF,EAAe,SAC/BC,EACAA,EAAS,kBACX,EAEME,EAAoB,MAAM,KAAK,IAAI,YACvC,IAAI,2BAAyB,CAAE,UAAAD,CAAU,CAAC,CAC5C,EAEA,GAAI,IAAC,0BAAuBC,CAAiB,EAC3C,YAAK,OAAO,MAAM,4CAA6C,CAC7D,KAAM,CAAE,MAAOA,EAAkB,KAAM,CACzC,CAAC,KACM,oBAAiB,CACtB,MAAOA,EAAkB,KAC3B,CAAC,EAGHF,GAAUC,EAAU,MACtB,CAEA,YAAK,OAAO,MAAM,8CAA8C,KAEzD,oBAAiB,CACtB,KAAM,MACR,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["RestoreAppStorageTask_exports", "__export", "RestoreAppStorageTask", "__toCommonJS", "import_ApduBuilder", "import_CommandResult", "import_RestoreAppStorageCommand", "import_DmkResult", "args", "api", "logger", "appStorageData", "offset", "chunkData", "restoreAppStorage"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=require("../../apdu/utils/ApduBuilder"),l=require("../../command/os/RestoreAppStorageCommand"),c=require("../../device-action/task/RestoreAppStorageTask"),e=require("../../index");describe("RestoreAppStorageTask",()=>{let r,s;const t=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r={sendCommand:t},s={debug:vi.fn()}}),describe("Success",()=>{it("should send a single chunk when the data fits in one APDU",async()=>{const a=Uint8Array.from([1,2,3]),n=new c.RestoreAppStorageTask({appStorageData:a},r,s);t.mockResolvedValueOnce((0,e.CommandResultFactory)({data:void 0}));const o=await n.run();expect((0,e.isSuccessDmkResult)(o)).toBe(!0),expect(t).toHaveBeenCalledTimes(1),expect(t).toHaveBeenCalledWith(expect.objectContaining({args:{chunkData:a}}))}),it("should split the data into several chunks when it does not fit in a single APDU",async()=>{const a=new Uint8Array(i.APDU_MAX_PAYLOAD+45).map((d,p)=>p%256),n=new c.RestoreAppStorageTask({appStorageData:a},r,s);t.mockResolvedValueOnce((0,e.CommandResultFactory)({data:void 0})).mockResolvedValueOnce((0,e.CommandResultFactory)({data:void 0}));const o=await n.run();expect((0,e.isSuccessDmkResult)(o)).toBe(!0),expect(t).toHaveBeenCalledTimes(2),expect(t).toHaveBeenNthCalledWith(1,expect.objectContaining({args:{chunkData:a.slice(0,i.APDU_MAX_PAYLOAD)}})),expect(t).toHaveBeenNthCalledWith(2,expect.objectContaining({args:{chunkData:a.slice(i.APDU_MAX_PAYLOAD)}}))}),it("should not send any command when the data is empty",async()=>{const n=await new c.RestoreAppStorageTask({appStorageData:new Uint8Array(0)},r,s).run();expect((0,e.isSuccessDmkResult)(n)).toBe(!0),expect(t).not.toHaveBeenCalled()})}),describe("Error",()=>{it("should return error when restoring a chunk fails",async()=>{const a=Uint8Array.from([1,2,3]),n=new c.RestoreAppStorageTask({appStorageData:a},r,s);t.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new l.RestoreAppStorageCommandError({message:"Failed to decrypt the app storage backup.",errorCode:"541a"})}));const o=await n.run();expect(o).toStrictEqual((0,e.DmkResultFactory)({error:new l.RestoreAppStorageCommandError({message:"Failed to decrypt the app storage backup.",errorCode:"541a"})}))}),it("should stop sending chunks as soon as one fails",async()=>{const a=new Uint8Array(i.APDU_MAX_PAYLOAD+10),n=new c.RestoreAppStorageTask({appStorageData:a},r,s);t.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new l.RestoreAppStorageCommandError({message:"Invalid chunk length.",errorCode:"6734"})}));const o=await n.run();expect((0,e.isSuccessDmkResult)(o)).toBe(!1),expect(t).toHaveBeenCalledTimes(1)})})});
|
|
2
|
+
//# sourceMappingURL=RestoreAppStorageTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/device-action/task/RestoreAppStorageTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { APDU_MAX_PAYLOAD } from \"@api/apdu/utils/ApduBuilder\";\nimport { RestoreAppStorageCommandError } from \"@api/command/os/RestoreAppStorageCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { RestoreAppStorageTask } from \"@api/device-action/task/RestoreAppStorageTask\";\nimport {\n CommandResultFactory,\n DmkResultFactory,\n isSuccessDmkResult,\n} from \"@api/index\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\n\ndescribe(\"RestoreAppStorageTask\", () => {\n let api: InternalApi;\n let logger: LoggerPublisherService;\n const sendCommand = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n api = {\n sendCommand,\n } as unknown as InternalApi;\n logger = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n });\n\n describe(\"Success\", () => {\n it(\"should send a single chunk when the data fits in one APDU\", async () => {\n // ARRANGE\n const appStorageData = Uint8Array.from([0x01, 0x02, 0x03]);\n const task = new RestoreAppStorageTask({ appStorageData }, api, logger);\n\n sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(true);\n expect(sendCommand).toHaveBeenCalledTimes(1);\n expect(sendCommand).toHaveBeenCalledWith(\n expect.objectContaining({\n args: { chunkData: appStorageData },\n }),\n );\n });\n\n it(\"should split the data into several chunks when it does not fit in a single APDU\", async () => {\n // ARRANGE\n const appStorageData = new Uint8Array(APDU_MAX_PAYLOAD + 45).map(\n (_, i) => i % 256,\n );\n const task = new RestoreAppStorageTask({ appStorageData }, api, logger);\n\n sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }));\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(true);\n expect(sendCommand).toHaveBeenCalledTimes(2);\n expect(sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining({\n args: { chunkData: appStorageData.slice(0, APDU_MAX_PAYLOAD) },\n }),\n );\n expect(sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining({\n args: { chunkData: appStorageData.slice(APDU_MAX_PAYLOAD) },\n }),\n );\n });\n\n it(\"should not send any command when the data is empty\", async () => {\n // ARRANGE\n const task = new RestoreAppStorageTask(\n { appStorageData: new Uint8Array(0) },\n api,\n logger,\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(true);\n expect(sendCommand).not.toHaveBeenCalled();\n });\n });\n\n describe(\"Error\", () => {\n it(\"should return error when restoring a chunk fails\", async () => {\n // ARRANGE\n const appStorageData = Uint8Array.from([0x01, 0x02, 0x03]);\n const task = new RestoreAppStorageTask({ appStorageData }, api, logger);\n\n sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new RestoreAppStorageCommandError({\n message: \"Failed to decrypt the app storage backup.\",\n errorCode: \"541a\",\n }),\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(result).toStrictEqual(\n DmkResultFactory({\n error: new RestoreAppStorageCommandError({\n message: \"Failed to decrypt the app storage backup.\",\n errorCode: \"541a\",\n }),\n }),\n );\n });\n\n it(\"should stop sending chunks as soon as one fails\", async () => {\n // ARRANGE\n const appStorageData = new Uint8Array(APDU_MAX_PAYLOAD + 10);\n const task = new RestoreAppStorageTask({ appStorageData }, api, logger);\n\n sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new RestoreAppStorageCommandError({\n message: \"Invalid chunk length.\",\n errorCode: \"6734\",\n }),\n }),\n );\n\n // ACT\n const result = await task.run();\n\n // ASSERT\n expect(isSuccessDmkResult(result)).toBe(false);\n expect(sendCommand).toHaveBeenCalledTimes(1);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAiC,uCACjCC,EAA8C,oDAE9CC,EAAsC,yDACtCC,EAIO,sBAGP,SAAS,wBAAyB,IAAM,CACtC,IAAIC,EACAC,EACJ,MAAMC,EAAc,GAAG,GAAG,EAE1B,WAAW,IAAM,CACf,GAAG,cAAc,EACjBF,EAAM,CACJ,YAAAE,CACF,EACAD,EAAS,CACP,MAAO,GAAG,GAAG,CACf,CACF,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,4DAA6D,SAAY,CAE1E,MAAME,EAAiB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACnDC,EAAO,IAAI,wBAAsB,CAAE,eAAAD,CAAe,EAAGH,EAAKC,CAAM,EAEtEC,EAAY,yBACV,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EAGA,MAAMG,EAAS,MAAMD,EAAK,IAAI,EAG9B,UAAO,sBAAmBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5C,OAAOH,CAAW,EAAE,sBAAsB,CAAC,EAC3C,OAAOA,CAAW,EAAE,qBAClB,OAAO,iBAAiB,CACtB,KAAM,CAAE,UAAWC,CAAe,CACpC,CAAC,CACH,CACF,CAAC,EAED,GAAG,kFAAmF,SAAY,CAEhG,MAAMA,EAAiB,IAAI,WAAW,mBAAmB,EAAE,EAAE,IAC3D,CAACG,EAAGC,IAAMA,EAAI,GAChB,EACMH,EAAO,IAAI,wBAAsB,CAAE,eAAAD,CAAe,EAAGH,EAAKC,CAAM,EAEtEC,EACG,yBAAsB,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,yBAAsB,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAGlE,MAAMG,EAAS,MAAMD,EAAK,IAAI,EAG9B,UAAO,sBAAmBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5C,OAAOH,CAAW,EAAE,sBAAsB,CAAC,EAC3C,OAAOA,CAAW,EAAE,wBAClB,EACA,OAAO,iBAAiB,CACtB,KAAM,CAAE,UAAWC,EAAe,MAAM,EAAG,kBAAgB,CAAE,CAC/D,CAAC,CACH,EACA,OAAOD,CAAW,EAAE,wBAClB,EACA,OAAO,iBAAiB,CACtB,KAAM,CAAE,UAAWC,EAAe,MAAM,kBAAgB,CAAE,CAC5D,CAAC,CACH,CACF,CAAC,EAED,GAAG,qDAAsD,SAAY,CASnE,MAAME,EAAS,MAPF,IAAI,wBACf,CAAE,eAAgB,IAAI,WAAW,CAAC,CAAE,EACpCL,EACAC,CACF,EAG0B,IAAI,EAG9B,UAAO,sBAAmBI,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5C,OAAOH,CAAW,EAAE,IAAI,iBAAiB,CAC3C,CAAC,CACH,CAAC,EAED,SAAS,QAAS,IAAM,CACtB,GAAG,mDAAoD,SAAY,CAEjE,MAAMC,EAAiB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACnDC,EAAO,IAAI,wBAAsB,CAAE,eAAAD,CAAe,EAAGH,EAAKC,CAAM,EAEtEC,EAAY,yBACV,wBAAqB,CACnB,MAAO,IAAI,gCAA8B,CACvC,QAAS,4CACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,EAGA,MAAMG,EAAS,MAAMD,EAAK,IAAI,EAG9B,OAAOC,CAAM,EAAE,iBACb,oBAAiB,CACf,MAAO,IAAI,gCAA8B,CACvC,QAAS,4CACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAMF,EAAiB,IAAI,WAAW,mBAAmB,EAAE,EACrDC,EAAO,IAAI,wBAAsB,CAAE,eAAAD,CAAe,EAAGH,EAAKC,CAAM,EAEtEC,EAAY,yBACV,wBAAqB,CACnB,MAAO,IAAI,gCAA8B,CACvC,QAAS,wBACT,UAAW,MACb,CAAC,CACH,CAAC,CACH,EAGA,MAAMG,EAAS,MAAMD,EAAK,IAAI,EAG9B,UAAO,sBAAmBC,CAAM,CAAC,EAAE,KAAK,EAAK,EAC7C,OAAOH,CAAW,EAAE,sBAAsB,CAAC,CAC7C,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_ApduBuilder", "import_RestoreAppStorageCommand", "import_RestoreAppStorageTask", "import_api", "api", "logger", "sendCommand", "appStorageData", "task", "result", "_", "i"]
|
|
7
|
+
}
|
package/lib/cjs/src/api/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var L=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var Pe=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var he=(p,t)=>{for(var a in t)L(p,a,{get:t[a],enumerable:!0})},v=(p,t,a,k)=>{if(t&&typeof t=="object"||typeof t=="function")for(let A of Pe(t))!be.call(p,A)&&A!==a&&L(p,A,{get:()=>t[A],enumerable:!(k=Te(t,A))||k.enumerable});return p},o=(p,t,a)=>(v(p,t,"default"),a&&v(a,t,"default"));var Oe=p=>v(L({},"__esModule",{value:!0}),p);var e={};he(e,{APDU_MAX_PAYLOAD:()=>f.APDU_MAX_PAYLOAD,Apdu:()=>R.Apdu,ApduBuilder:()=>f.ApduBuilder,ApduParser:()=>E.ApduParser,ApduResponse:()=>ne.ApduResponse,AppAlreadyInstalledDAError:()=>r.AppAlreadyInstalledDAError,ApplicationChecker:()=>Ie.ApplicationChecker,BackupAppStorageTask:()=>oe.BackupAppStorageTask,BackupStorageCommand:()=>B.BackupStorageCommand,BatteryStatusType:()=>g.BatteryStatusType,BleDeviceInfos:()=>pe.BleDeviceInfos,ByteArrayBuilder:()=>G.ByteArrayBuilder,ByteArrayParser:()=>I.ByteArrayParser,CallTaskInAppDeviceAction:()=>w.CallTaskInAppDeviceAction,CloseAppCommand:()=>T.CloseAppCommand,CommandResultFactory:()=>n.CommandResultFactory,CommandResultStatus:()=>n.CommandResultStatus,CommandUtils:()=>U.CommandUtils,ConnectedDevice:()=>ke.ConnectedDevice,ConsoleLogger:()=>ye.ConsoleLogger,DEFAULT_UNLOCK_TIMEOUT_MS:()=>z.DEFAULT_UNLOCK_TIMEOUT_MS,DefaultLogTagFormatter:()=>Ce.DefaultLogTagFormatter,DeleteLanguagePackCommand:()=>D.DeleteLanguagePackCommand,DeleteLanguagePackCommandError:()=>D.DeleteLanguagePackCommandError,DeleteLanguagePackDAError:()=>r.DeleteLanguagePackDAError,DeviceActionStatus:()=>N.DeviceActionStatus,DeviceConnectionStateMachine:()=>Re.DeviceConnectionStateMachine,DeviceLockedError:()=>r.DeviceLockedError,DeviceManagementKit:()=>xe.DeviceManagementKit,DeviceManagementKitBuilder:()=>ge.DeviceManagementKitBuilder,DeviceModel:()=>i.DeviceModel,DeviceModelId:()=>i.DeviceModelId,DeviceNotOnboardedError:()=>r.DeviceNotOnboardedError,DeviceSessionStateType:()=>me.DeviceSessionStateType,DeviceStatus:()=>W.DeviceStatus,DmkNetworkClient:()=>ve.DmkNetworkClient,DmkNetworkClientError:()=>Le.DmkNetworkClientError,DmkResultFactory:()=>s.DmkResultFactory,DmkResultStatus:()=>s.DmkResultStatus,FramerUtils:()=>De.FramerUtils,GLOBAL_ERRORS:()=>m.GLOBAL_ERRORS,GenuineCheckDeviceAction:()=>ie.GenuineCheckDeviceAction,GetAppAndVersionCommand:()=>P.GetAppAndVersionCommand,GetAppStorageInfoCommand:()=>b.GetAppStorageInfoCommand,GetApplicationsMetadataTaskError:()=>y.GetApplicationsMetadataTaskError,GetBackgroundImageSizeCommand:()=>x.GetBackgroundImageSizeCommand,GetBackgroundImageSizeCommandError:()=>x.GetBackgroundImageSizeCommandError,GetBatteryStatusCommand:()=>g.GetBatteryStatusCommand,GetDeviceMetadataDeviceAction:()=>q.GetDeviceMetadataDeviceAction,GetDeviceStatusDeviceAction:()=>H.GetDeviceStatusDeviceAction,GetOsVersionCommand:()=>h.GetOsVersionCommand,GlobalCommandError:()=>m.GlobalCommandError,GlobalCommandErrorHandler:()=>m.GlobalCommandErrorHandler,GoToDashboardDeviceAction:()=>K.GoToDashboardDeviceAction,InstallAppDeviceAction:()=>se.InstallAppDeviceAction,InstallLanguagePackageDeviceAction:()=>Q.InstallLanguagePackageDeviceAction,InstallOrUpdateAppsDeviceAction:()=>X.InstallOrUpdateAppsDeviceAction,InvalidGetFirmwareMetadataResponseError:()=>y.InvalidGetFirmwareMetadataResponseError,InvalidResponseFormatError:()=>u.InvalidResponseFormatError,InvalidStatusWordError:()=>u.InvalidStatusWordError,LEDGER_VENDOR_ID:()=>i.LEDGER_VENDOR_ID,ListAppsCommand:()=>O.ListAppsCommand,ListAppsDeviceAction:()=>Y.ListAppsDeviceAction,ListAppsWithMetadataDeviceAction:()=>j.ListAppsWithMetadataDeviceAction,ListInstalledAppsDeviceAction:()=>de.ListInstalledAppsDeviceAction,ListLanguagePackCommand:()=>l.ListLanguagePackCommand,ListLanguagePackCommandError:()=>l.ListLanguagePackCommandError,LoadCertificateCommand:()=>F.LoadCertificateCommand,LogLevel:()=>le.LogLevel,OpenAppCommand:()=>M.OpenAppCommand,OpenAppDeviceAction:()=>J.OpenAppDeviceAction,OpenAppWithDependenciesDeviceAction:()=>Z.OpenAppWithDependenciesDeviceAction,OutOfMemoryDAError:()=>r.OutOfMemoryDAError,RefusedByUserDAError:()=>r.RefusedByUserDAError,SecureChannelError:()=>Ae.SecureChannelError,SendCommandInAppDeviceAction:()=>$.SendCommandInAppDeviceAction,StaticDeviceModelDataSource:()=>te.StaticDeviceModelDataSource,TransportConnectedDevice:()=>Ee.TransportConnectedDevice,TransportDeviceModel:()=>ae.TransportDeviceModel,UninstallAppDeviceAction:()=>ce.UninstallAppDeviceAction,UnknownDAError:()=>r.UnknownDAError,UnsupportedFirmwareDAError:()=>r.UnsupportedFirmwareDAError,UserInteractionRequired:()=>_.UserInteractionRequired,WaitForAppAndVersionDeviceAction:()=>ee.WaitForAppAndVersionDeviceAction,WebLogsExporterLogger:()=>Se.WebLogsExporterLogger,XStateDeviceAction:()=>re.XStateDeviceAction,base64StringToBuffer:()=>d.base64StringToBuffer,bufferToBase64String:()=>d.bufferToBase64String,bufferToHexaString:()=>c.bufferToHexaString,connectedDeviceStubBuilder:()=>Ge.connectedDeviceStubBuilder,defaultApduReceiverServiceStubBuilder:()=>fe.defaultApduReceiverServiceStubBuilder,defaultApduSenderServiceStubBuilder:()=>ue.defaultApduSenderServiceStubBuilder,formatApduReceivedLog:()=>S.formatApduReceivedLog,formatApduSentLog:()=>S.formatApduSentLog,hexaStringToBuffer:()=>c.hexaStringToBuffer,isBase64String:()=>d.isBase64String,isCommandErrorCode:()=>V.isCommandErrorCode,isDashboardName:()=>Be.isDashboardName,isHexaString:()=>c.isHexaString,isSuccessCommandResult:()=>n.isSuccessCommandResult,isSuccessDmkResult:()=>s.isSuccessDmkResult,noopLogger:()=>C.noopLogger,noopLoggerFactory:()=>C.noopLoggerFactory});module.exports=Oe(e);var R=require("./apdu/model/Apdu"),f=require("./apdu/utils/ApduBuilder"),E=require("./apdu/utils/ApduParser");o(e,require("./apdu/utils/AppBuilderError"),module.exports);var G=require("./apdu/utils/ByteArrayBuilder"),I=require("./apdu/utils/ByteArrayParser"),u=require("./command/Errors"),n=require("./command/model/CommandResult"),B=require("./command/os/BackupStorageCommand"),T=require("./command/os/CloseAppCommand"),D=require("./command/os/DeleteLanguagePackCommand"),P=require("./command/os/GetAppAndVersionCommand"),b=require("./command/os/GetAppStorageInfoCommand"),x=require("./command/os/GetBackgroundImageSizeCommand"),g=require("./command/os/GetBatteryStatusCommand"),h=require("./command/os/GetOsVersionCommand"),O=require("./command/os/ListAppsCommand"),l=require("./command/os/ListLanguagePackCommand"),F=require("./command/os/LoadCertificateCommand"),M=require("./command/os/OpenAppCommand"),V=require("./command/utils/CommandErrors"),U=require("./command/utils/CommandUtils"),m=require("./command/utils/GlobalCommandError"),i=require("./device/DeviceModel"),W=require("./device/DeviceStatus"),N=require("./device-action/model/DeviceActionState"),_=require("./device-action/model/UserInteractionRequired"),w=require("./device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction"),z=require("./device-action/os/Const"),r=require("./device-action/os/Errors"),q=require("./device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction"),H=require("./device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction"),K=require("./device-action/os/GoToDashboard/GoToDashboardDeviceAction"),Q=require("./device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction"),X=require("./device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction"),Y=require("./device-action/os/ListApps/ListAppsDeviceAction"),j=require("./device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction"),J=require("./device-action/os/OpenAppDeviceAction/OpenAppDeviceAction"),Z=require("./device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction"),$=require("./device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction"),ee=require("./device-action/os/WaitForAppAndVersion/WaitForAppAndVersionDeviceAction"),oe=require("./device-action/task/BackupAppStorageTask"),y=require("./device-action/task/Errors"),re=require("./device-action/xstate-utils/XStateDeviceAction"),te=require("./device-model/data/StaticDeviceModelDataSource"),pe=require("./device-model/model/BleDeviceInfos"),ae=require("./device-model/model/DeviceModel"),ne=require("./device-session/ApduResponse");o(e,require("./device-session/data/FramerConst"),module.exports);var me=require("./device-session/DeviceSessionState"),s=require("./model/DmkResult"),ie=require("./secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction"),se=require("./secure-channel/device-action/InstallApp/InstallAppDeviceAction"),de=require("./secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction"),ce=require("./secure-channel/device-action/UninstallApp/UninstallAppDeviceAction"),Ae=require("../internal/secure-channel/model/Errors"),fe=require("./device-session/service/DefaultApduReceiverService.stub"),ue=require("./device-session/service/DefaultApduSenderService.stub"),De=require("./device-session/utils/FramerUtils"),xe=require("./DeviceManagementKit"),ge=require("./DeviceManagementKitBuilder");o(e,require("./Error"),module.exports);var C=require("./logger-publisher/utils/noopLoggerFactory"),le=require("./logger-subscriber/model/LogLevel"),ye=require("./logger-subscriber/service/ConsoleLogger"),Ce=require("./logger-subscriber/service/DefaultLogTagFormatter"),Se=require("./logger-subscriber/service/WebLogsExporterLogger"),ve=require("./network/DmkNetworkClient"),Le=require("./network/DmkNetworkClientError"),ke=require("./transport/model/ConnectedDevice"),Re=require("./transport/model/DeviceConnectionStateMachine");o(e,require("./transport/model/Errors"),module.exports);var Ee=require("./transport/model/TransportConnectedDevice"),Ge=require("./transport/model/TransportConnectedDevice.stub");o(e,require("./types"),module.exports);var S=require("./utils/apduLogs"),Ie=require("./utils/ApplicationChecker"),Be=require("./utils/AppName"),d=require("./utils/Base64String"),c=require("./utils/HexaString");0&&(module.exports={APDU_MAX_PAYLOAD,Apdu,ApduBuilder,ApduParser,ApduResponse,AppAlreadyInstalledDAError,ApplicationChecker,BackupAppStorageTask,BackupStorageCommand,BatteryStatusType,BleDeviceInfos,ByteArrayBuilder,ByteArrayParser,CallTaskInAppDeviceAction,CloseAppCommand,CommandResultFactory,CommandResultStatus,CommandUtils,ConnectedDevice,ConsoleLogger,DEFAULT_UNLOCK_TIMEOUT_MS,DefaultLogTagFormatter,DeleteLanguagePackCommand,DeleteLanguagePackCommandError,DeleteLanguagePackDAError,DeviceActionStatus,DeviceConnectionStateMachine,DeviceLockedError,DeviceManagementKit,DeviceManagementKitBuilder,DeviceModel,DeviceModelId,DeviceNotOnboardedError,DeviceSessionStateType,DeviceStatus,DmkNetworkClient,DmkNetworkClientError,DmkResultFactory,DmkResultStatus,FramerUtils,GLOBAL_ERRORS,GenuineCheckDeviceAction,GetAppAndVersionCommand,GetAppStorageInfoCommand,GetApplicationsMetadataTaskError,GetBackgroundImageSizeCommand,GetBackgroundImageSizeCommandError,GetBatteryStatusCommand,GetDeviceMetadataDeviceAction,GetDeviceStatusDeviceAction,GetOsVersionCommand,GlobalCommandError,GlobalCommandErrorHandler,GoToDashboardDeviceAction,InstallAppDeviceAction,InstallLanguagePackageDeviceAction,InstallOrUpdateAppsDeviceAction,InvalidGetFirmwareMetadataResponseError,InvalidResponseFormatError,InvalidStatusWordError,LEDGER_VENDOR_ID,ListAppsCommand,ListAppsDeviceAction,ListAppsWithMetadataDeviceAction,ListInstalledAppsDeviceAction,ListLanguagePackCommand,ListLanguagePackCommandError,LoadCertificateCommand,LogLevel,OpenAppCommand,OpenAppDeviceAction,OpenAppWithDependenciesDeviceAction,OutOfMemoryDAError,RefusedByUserDAError,SecureChannelError,SendCommandInAppDeviceAction,StaticDeviceModelDataSource,TransportConnectedDevice,TransportDeviceModel,UninstallAppDeviceAction,UnknownDAError,UnsupportedFirmwareDAError,UserInteractionRequired,WaitForAppAndVersionDeviceAction,WebLogsExporterLogger,XStateDeviceAction,base64StringToBuffer,bufferToBase64String,bufferToHexaString,connectedDeviceStubBuilder,defaultApduReceiverServiceStubBuilder,defaultApduSenderServiceStubBuilder,formatApduReceivedLog,formatApduSentLog,hexaStringToBuffer,isBase64String,isCommandErrorCode,isDashboardName,isHexaString,isSuccessCommandResult,isSuccessDmkResult,noopLogger,noopLoggerFactory,...require("./apdu/utils/AppBuilderError"),...require("./device-session/data/FramerConst"),...require("./Error"),...require("./transport/model/Errors"),...require("./types")});
|
|
1
|
+
"use strict";var E=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var Me=Object.prototype.hasOwnProperty;var Ve=(p,t)=>{for(var a in t)E(p,a,{get:t[a],enumerable:!0})},L=(p,t,a,I)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of Fe(t))!Me.call(p,c)&&c!==a&&E(p,c,{get:()=>t[c],enumerable:!(I=Oe(t,c))||I.enumerable});return p},o=(p,t,a)=>(L(p,t,"default"),a&&L(a,t,"default"));var Ue=p=>L(E({},"__esModule",{value:!0}),p);var e={};Ve(e,{APDU_MAX_PAYLOAD:()=>f.APDU_MAX_PAYLOAD,Apdu:()=>G.Apdu,ApduBuilder:()=>f.ApduBuilder,ApduParser:()=>B.ApduParser,ApduResponse:()=>de.ApduResponse,AppAlreadyInstalledDAError:()=>r.AppAlreadyInstalledDAError,ApplicationChecker:()=>be.ApplicationChecker,BackupAppStorageCommand:()=>b.BackupAppStorageCommand,BackupAppStorageTask:()=>pe.BackupAppStorageTask,BatteryStatusType:()=>C.BatteryStatusType,BleDeviceInfos:()=>se.BleDeviceInfos,ByteArrayBuilder:()=>T.ByteArrayBuilder,ByteArrayParser:()=>P.ByteArrayParser,CallTaskInAppDeviceAction:()=>H.CallTaskInAppDeviceAction,CloseAppCommand:()=>h.CloseAppCommand,CommandResultFactory:()=>m.CommandResultFactory,CommandResultStatus:()=>m.CommandResultStatus,CommandUtils:()=>_.CommandUtils,CommitRestoreAppStorageCommand:()=>u.CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError:()=>u.CommitRestoreAppStorageCommandError,ConnectedDevice:()=>Ge.ConnectedDevice,ConsoleLogger:()=>ve.ConsoleLogger,DEFAULT_UNLOCK_TIMEOUT_MS:()=>K.DEFAULT_UNLOCK_TIMEOUT_MS,DefaultLogTagFormatter:()=>ke.DefaultLogTagFormatter,DeleteLanguagePackCommand:()=>x.DeleteLanguagePackCommand,DeleteLanguagePackCommandError:()=>x.DeleteLanguagePackCommandError,DeleteLanguagePackDAError:()=>r.DeleteLanguagePackDAError,DeviceActionStatus:()=>z.DeviceActionStatus,DeviceConnectionStateMachine:()=>Be.DeviceConnectionStateMachine,DeviceLockedError:()=>r.DeviceLockedError,DeviceManagementKit:()=>ye.DeviceManagementKit,DeviceManagementKitBuilder:()=>Se.DeviceManagementKitBuilder,DeviceModel:()=>s.DeviceModel,DeviceModelId:()=>s.DeviceModelId,DeviceNotOnboardedError:()=>r.DeviceNotOnboardedError,DeviceSessionStateType:()=>Ae.DeviceSessionStateType,DeviceStatus:()=>w.DeviceStatus,DmkNetworkClient:()=>Ee.DmkNetworkClient,DmkNetworkClientError:()=>Ie.DmkNetworkClientError,DmkResultFactory:()=>i.DmkResultFactory,DmkResultStatus:()=>i.DmkResultStatus,FramerUtils:()=>le.FramerUtils,GLOBAL_ERRORS:()=>n.GLOBAL_ERRORS,GenuineCheckDeviceAction:()=>ce.GenuineCheckDeviceAction,GetAppAndVersionCommand:()=>O.GetAppAndVersionCommand,GetAppStorageInfoCommand:()=>F.GetAppStorageInfoCommand,GetApplicationsMetadataTaskError:()=>R.GetApplicationsMetadataTaskError,GetBackgroundImageSizeCommand:()=>D.GetBackgroundImageSizeCommand,GetBackgroundImageSizeCommandError:()=>D.GetBackgroundImageSizeCommandError,GetBatteryStatusCommand:()=>C.GetBatteryStatusCommand,GetDeviceMetadataDeviceAction:()=>Q.GetDeviceMetadataDeviceAction,GetDeviceStatusDeviceAction:()=>X.GetDeviceStatusDeviceAction,GetOsVersionCommand:()=>M.GetOsVersionCommand,GlobalCommandError:()=>n.GlobalCommandError,GlobalCommandErrorHandler:()=>n.GlobalCommandErrorHandler,GoToDashboardDeviceAction:()=>Y.GoToDashboardDeviceAction,InitRestoreAppStorageCommand:()=>l.InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError:()=>l.InitRestoreAppStorageCommandError,InstallAppDeviceAction:()=>fe.InstallAppDeviceAction,InstallLanguagePackageDeviceAction:()=>j.InstallLanguagePackageDeviceAction,InstallOrUpdateAppsDeviceAction:()=>J.InstallOrUpdateAppsDeviceAction,InvalidGetFirmwareMetadataResponseError:()=>R.InvalidGetFirmwareMetadataResponseError,InvalidResponseFormatError:()=>g.InvalidResponseFormatError,InvalidStatusWordError:()=>g.InvalidStatusWordError,LEDGER_VENDOR_ID:()=>s.LEDGER_VENDOR_ID,ListAppsCommand:()=>V.ListAppsCommand,ListAppsDeviceAction:()=>Z.ListAppsDeviceAction,ListAppsWithMetadataDeviceAction:()=>$.ListAppsWithMetadataDeviceAction,ListInstalledAppsDeviceAction:()=>ge.ListInstalledAppsDeviceAction,ListLanguagePackCommand:()=>y.ListLanguagePackCommand,ListLanguagePackCommandError:()=>y.ListLanguagePackCommandError,LoadCertificateCommand:()=>U.LoadCertificateCommand,LogLevel:()=>Re.LogLevel,OpenAppCommand:()=>W.OpenAppCommand,OpenAppDeviceAction:()=>ee.OpenAppDeviceAction,OpenAppWithDependenciesDeviceAction:()=>oe.OpenAppWithDependenciesDeviceAction,OutOfMemoryDAError:()=>r.OutOfMemoryDAError,RefusedByUserDAError:()=>r.RefusedByUserDAError,RestoreAppStorageCommand:()=>S.RestoreAppStorageCommand,RestoreAppStorageCommandError:()=>S.RestoreAppStorageCommandError,RestoreAppStorageTask:()=>ae.RestoreAppStorageTask,SecureChannelError:()=>xe.SecureChannelError,SendCommandInAppDeviceAction:()=>re.SendCommandInAppDeviceAction,StaticDeviceModelDataSource:()=>ne.StaticDeviceModelDataSource,TransportConnectedDevice:()=>Te.TransportConnectedDevice,TransportDeviceModel:()=>ie.TransportDeviceModel,UninstallAppDeviceAction:()=>ue.UninstallAppDeviceAction,UnknownDAError:()=>r.UnknownDAError,UnsupportedFirmwareDAError:()=>r.UnsupportedFirmwareDAError,UserInteractionRequired:()=>q.UserInteractionRequired,WaitForAppAndVersionDeviceAction:()=>te.WaitForAppAndVersionDeviceAction,WebLogsExporterLogger:()=>Le.WebLogsExporterLogger,XStateDeviceAction:()=>me.XStateDeviceAction,base64StringToBuffer:()=>d.base64StringToBuffer,bufferToBase64String:()=>d.bufferToBase64String,bufferToHexaString:()=>A.bufferToHexaString,connectedDeviceStubBuilder:()=>Pe.connectedDeviceStubBuilder,defaultApduReceiverServiceStubBuilder:()=>De.defaultApduReceiverServiceStubBuilder,defaultApduSenderServiceStubBuilder:()=>Ce.defaultApduSenderServiceStubBuilder,formatApduReceivedLog:()=>k.formatApduReceivedLog,formatApduSentLog:()=>k.formatApduSentLog,hexaStringToBuffer:()=>A.hexaStringToBuffer,isBase64String:()=>d.isBase64String,isCommandErrorCode:()=>N.isCommandErrorCode,isDashboardName:()=>he.isDashboardName,isHexaString:()=>A.isHexaString,isSuccessCommandResult:()=>m.isSuccessCommandResult,isSuccessDmkResult:()=>i.isSuccessDmkResult,noopLogger:()=>v.noopLogger,noopLoggerFactory:()=>v.noopLoggerFactory});module.exports=Ue(e);var G=require("./apdu/model/Apdu"),f=require("./apdu/utils/ApduBuilder"),B=require("./apdu/utils/ApduParser");o(e,require("./apdu/utils/AppBuilderError"),module.exports);var T=require("./apdu/utils/ByteArrayBuilder"),P=require("./apdu/utils/ByteArrayParser"),g=require("./command/Errors"),m=require("./command/model/CommandResult"),b=require("./command/os/BackupAppStorageCommand"),h=require("./command/os/CloseAppCommand"),u=require("./command/os/CommitRestoreAppStorageCommand"),x=require("./command/os/DeleteLanguagePackCommand"),O=require("./command/os/GetAppAndVersionCommand"),F=require("./command/os/GetAppStorageInfoCommand"),D=require("./command/os/GetBackgroundImageSizeCommand"),C=require("./command/os/GetBatteryStatusCommand"),M=require("./command/os/GetOsVersionCommand"),l=require("./command/os/InitRestoreAppStorageCommand"),V=require("./command/os/ListAppsCommand"),y=require("./command/os/ListLanguagePackCommand"),U=require("./command/os/LoadCertificateCommand"),W=require("./command/os/OpenAppCommand"),S=require("./command/os/RestoreAppStorageCommand"),N=require("./command/utils/CommandErrors"),_=require("./command/utils/CommandUtils"),n=require("./command/utils/GlobalCommandError"),s=require("./device/DeviceModel"),w=require("./device/DeviceStatus"),z=require("./device-action/model/DeviceActionState"),q=require("./device-action/model/UserInteractionRequired"),H=require("./device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction"),K=require("./device-action/os/Const"),r=require("./device-action/os/Errors"),Q=require("./device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction"),X=require("./device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction"),Y=require("./device-action/os/GoToDashboard/GoToDashboardDeviceAction"),j=require("./device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction"),J=require("./device-action/os/InstallOrUpdateApps/InstallOrUpdateAppsDeviceAction"),Z=require("./device-action/os/ListApps/ListAppsDeviceAction"),$=require("./device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction"),ee=require("./device-action/os/OpenAppDeviceAction/OpenAppDeviceAction"),oe=require("./device-action/os/OpenAppWithDependencies/OpenAppWithDependenciesDeviceAction"),re=require("./device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction"),te=require("./device-action/os/WaitForAppAndVersion/WaitForAppAndVersionDeviceAction"),pe=require("./device-action/task/BackupAppStorageTask"),R=require("./device-action/task/Errors"),ae=require("./device-action/task/RestoreAppStorageTask"),me=require("./device-action/xstate-utils/XStateDeviceAction"),ne=require("./device-model/data/StaticDeviceModelDataSource"),se=require("./device-model/model/BleDeviceInfos"),ie=require("./device-model/model/DeviceModel"),de=require("./device-session/ApduResponse");o(e,require("./device-session/data/FramerConst"),module.exports);var Ae=require("./device-session/DeviceSessionState"),i=require("./model/DmkResult"),ce=require("./secure-channel/device-action/GenuineCheck/GenuineCheckDeviceAction"),fe=require("./secure-channel/device-action/InstallApp/InstallAppDeviceAction"),ge=require("./secure-channel/device-action/ListInstalledApps/ListInstalledAppsDeviceAction"),ue=require("./secure-channel/device-action/UninstallApp/UninstallAppDeviceAction"),xe=require("../internal/secure-channel/model/Errors"),De=require("./device-session/service/DefaultApduReceiverService.stub"),Ce=require("./device-session/service/DefaultApduSenderService.stub"),le=require("./device-session/utils/FramerUtils"),ye=require("./DeviceManagementKit"),Se=require("./DeviceManagementKitBuilder");o(e,require("./Error"),module.exports);var v=require("./logger-publisher/utils/noopLoggerFactory"),Re=require("./logger-subscriber/model/LogLevel"),ve=require("./logger-subscriber/service/ConsoleLogger"),ke=require("./logger-subscriber/service/DefaultLogTagFormatter"),Le=require("./logger-subscriber/service/WebLogsExporterLogger"),Ee=require("./network/DmkNetworkClient"),Ie=require("./network/DmkNetworkClientError"),Ge=require("./transport/model/ConnectedDevice"),Be=require("./transport/model/DeviceConnectionStateMachine");o(e,require("./transport/model/Errors"),module.exports);var Te=require("./transport/model/TransportConnectedDevice"),Pe=require("./transport/model/TransportConnectedDevice.stub");o(e,require("./types"),module.exports);var k=require("./utils/apduLogs"),be=require("./utils/ApplicationChecker"),he=require("./utils/AppName"),d=require("./utils/Base64String"),A=require("./utils/HexaString");0&&(module.exports={APDU_MAX_PAYLOAD,Apdu,ApduBuilder,ApduParser,ApduResponse,AppAlreadyInstalledDAError,ApplicationChecker,BackupAppStorageCommand,BackupAppStorageTask,BatteryStatusType,BleDeviceInfos,ByteArrayBuilder,ByteArrayParser,CallTaskInAppDeviceAction,CloseAppCommand,CommandResultFactory,CommandResultStatus,CommandUtils,CommitRestoreAppStorageCommand,CommitRestoreAppStorageCommandError,ConnectedDevice,ConsoleLogger,DEFAULT_UNLOCK_TIMEOUT_MS,DefaultLogTagFormatter,DeleteLanguagePackCommand,DeleteLanguagePackCommandError,DeleteLanguagePackDAError,DeviceActionStatus,DeviceConnectionStateMachine,DeviceLockedError,DeviceManagementKit,DeviceManagementKitBuilder,DeviceModel,DeviceModelId,DeviceNotOnboardedError,DeviceSessionStateType,DeviceStatus,DmkNetworkClient,DmkNetworkClientError,DmkResultFactory,DmkResultStatus,FramerUtils,GLOBAL_ERRORS,GenuineCheckDeviceAction,GetAppAndVersionCommand,GetAppStorageInfoCommand,GetApplicationsMetadataTaskError,GetBackgroundImageSizeCommand,GetBackgroundImageSizeCommandError,GetBatteryStatusCommand,GetDeviceMetadataDeviceAction,GetDeviceStatusDeviceAction,GetOsVersionCommand,GlobalCommandError,GlobalCommandErrorHandler,GoToDashboardDeviceAction,InitRestoreAppStorageCommand,InitRestoreAppStorageCommandError,InstallAppDeviceAction,InstallLanguagePackageDeviceAction,InstallOrUpdateAppsDeviceAction,InvalidGetFirmwareMetadataResponseError,InvalidResponseFormatError,InvalidStatusWordError,LEDGER_VENDOR_ID,ListAppsCommand,ListAppsDeviceAction,ListAppsWithMetadataDeviceAction,ListInstalledAppsDeviceAction,ListLanguagePackCommand,ListLanguagePackCommandError,LoadCertificateCommand,LogLevel,OpenAppCommand,OpenAppDeviceAction,OpenAppWithDependenciesDeviceAction,OutOfMemoryDAError,RefusedByUserDAError,RestoreAppStorageCommand,RestoreAppStorageCommandError,RestoreAppStorageTask,SecureChannelError,SendCommandInAppDeviceAction,StaticDeviceModelDataSource,TransportConnectedDevice,TransportDeviceModel,UninstallAppDeviceAction,UnknownDAError,UnsupportedFirmwareDAError,UserInteractionRequired,WaitForAppAndVersionDeviceAction,WebLogsExporterLogger,XStateDeviceAction,base64StringToBuffer,bufferToBase64String,bufferToHexaString,connectedDeviceStubBuilder,defaultApduReceiverServiceStubBuilder,defaultApduSenderServiceStubBuilder,formatApduReceivedLog,formatApduSentLog,hexaStringToBuffer,isBase64String,isCommandErrorCode,isDashboardName,isHexaString,isSuccessCommandResult,isSuccessDmkResult,noopLogger,noopLoggerFactory,...require("./apdu/utils/AppBuilderError"),...require("./device-session/data/FramerConst"),...require("./Error"),...require("./transport/model/Errors"),...require("./types")});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|