@ledgerhq/device-signer-kit-tron 0.0.0-develop-20260811001235 → 0.0.0-develop-20260812001624
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/README.md +45 -0
- package/lib/cjs/api/SignerTrx.js +1 -1
- package/lib/cjs/api/SignerTrx.js.map +1 -1
- package/lib/cjs/api/app-binder/GetECDHSecretDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetECDHSecretDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +2 -2
- package/lib/cjs/api/model/EcdhOptions.js +2 -0
- package/lib/cjs/api/model/EcdhOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerTrx.js +1 -1
- package/lib/cjs/internal/DefaultSignerTrx.js.map +3 -3
- package/lib/cjs/internal/app-binder/TronAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/TronAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/TronAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/TronAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetECDHSecretCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetECDHSecretCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetECDHSecretCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetECDHSecretCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/constants.js +1 -1
- package/lib/cjs/internal/app-binder/constants.js.map +3 -3
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/use-cases/ecdh/GetECDHSecretUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/ecdh/GetECDHSecretUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/ecdh/GetECDHSecretUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/ecdh/GetECDHSecretUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/ecdh/di/ecdhModule.js +2 -0
- package/lib/cjs/internal/use-cases/ecdh/di/ecdhModule.js.map +7 -0
- package/lib/cjs/internal/use-cases/ecdh/di/ecdhTypes.js +2 -0
- package/lib/cjs/internal/use-cases/ecdh/di/ecdhTypes.js.map +7 -0
- package/lib/cjs/package.json +1 -1
- package/lib/esm/api/app-binder/GetECDHSecretDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GetECDHSecretDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/EcdhOptions.js +1 -0
- package/lib/esm/api/model/EcdhOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerTrx.js +1 -1
- package/lib/esm/internal/DefaultSignerTrx.js.map +3 -3
- package/lib/esm/internal/app-binder/TronAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/TronAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/TronAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/TronAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetECDHSecretCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/GetECDHSecretCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetECDHSecretCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/GetECDHSecretCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/constants.js +1 -1
- package/lib/esm/internal/app-binder/constants.js.map +3 -3
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/use-cases/ecdh/GetECDHSecretUseCase.js +2 -0
- package/lib/esm/internal/use-cases/ecdh/GetECDHSecretUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/ecdh/GetECDHSecretUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/ecdh/GetECDHSecretUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/ecdh/di/ecdhModule.js +2 -0
- package/lib/esm/internal/use-cases/ecdh/di/ecdhModule.js.map +7 -0
- package/lib/esm/internal/use-cases/ecdh/di/ecdhTypes.js +2 -0
- package/lib/esm/internal/use-cases/ecdh/di/ecdhTypes.js.map +7 -0
- package/lib/esm/package.json +1 -1
- package/lib/types/api/SignerTrx.d.ts +3 -0
- package/lib/types/api/SignerTrx.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetECDHSecretDeviceActionTypes.d.ts +10 -0
- package/lib/types/api/app-binder/GetECDHSecretDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +2 -0
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/EcdhOptions.d.ts +4 -0
- package/lib/types/api/model/EcdhOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerTrx.d.ts +3 -0
- package/lib/types/internal/DefaultSignerTrx.d.ts.map +1 -1
- package/lib/types/internal/app-binder/TronAppBinder.d.ts +6 -0
- package/lib/types/internal/app-binder/TronAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetECDHSecretCommand.d.ts +22 -0
- package/lib/types/internal/app-binder/command/GetECDHSecretCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetECDHSecretCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/GetECDHSecretCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/constants.d.ts +1 -0
- package/lib/types/internal/app-binder/constants.d.ts.map +1 -1
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/use-cases/ecdh/GetECDHSecretUseCase.d.ts +9 -0
- package/lib/types/internal/use-cases/ecdh/GetECDHSecretUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/ecdh/GetECDHSecretUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/ecdh/GetECDHSecretUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/ecdh/di/ecdhModule.d.ts +3 -0
- package/lib/types/internal/use-cases/ecdh/di/ecdhModule.d.ts.map +1 -0
- package/lib/types/internal/use-cases/ecdh/di/ecdhTypes.d.ts +4 -0
- package/lib/types/internal/use-cases/ecdh/di/ecdhTypes.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -40,6 +40,12 @@ const { observable: messageObservable } = signer.signPersonalMessage(
|
|
|
40
40
|
|
|
41
41
|
// Read the Tron app configuration
|
|
42
42
|
const { observable: configObservable } = signer.getAppConfiguration();
|
|
43
|
+
|
|
44
|
+
// Compute an ECDH shared secret with a peer public key
|
|
45
|
+
const { observable: ecdhObservable } = signer.getECDHSecret(
|
|
46
|
+
"44'/195'/0'/0/0",
|
|
47
|
+
peerPublicKey,
|
|
48
|
+
);
|
|
43
49
|
```
|
|
44
50
|
|
|
45
51
|
### Get address
|
|
@@ -244,6 +250,45 @@ observable.subscribe((state) => {
|
|
|
244
250
|
});
|
|
245
251
|
```
|
|
246
252
|
|
|
253
|
+
### Get ECDH secret
|
|
254
|
+
|
|
255
|
+
Computes an ECDH shared secret between the device key (derived from the BIP32
|
|
256
|
+
path) and a peer's uncompressed secp256k1 public key. The operation is shown on
|
|
257
|
+
the device for approval.
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
signer.getECDHSecret(
|
|
261
|
+
derivationPath: string,
|
|
262
|
+
// the peer's uncompressed secp256k1 public key (65 bytes, 0x04 || X || Y)
|
|
263
|
+
publicKey: Uint8Array,
|
|
264
|
+
options?: {
|
|
265
|
+
// Skip the "open app" step if the Tron app is already open (default: false).
|
|
266
|
+
skipOpenApp?: boolean;
|
|
267
|
+
},
|
|
268
|
+
): GetECDHSecretDAReturnType;
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
The returned device action resolves to the 65-byte ECDH shared point
|
|
272
|
+
(`0x04 || X || Y`) as a `Uint8Array`.
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
const { observable, cancel } = signer.getECDHSecret(
|
|
276
|
+
"44'/195'/0'/0/0",
|
|
277
|
+
peerPublicKey,
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
observable.subscribe((state) => {
|
|
281
|
+
switch (state.status) {
|
|
282
|
+
case "completed":
|
|
283
|
+
console.log(state.output); // Uint8Array(65) shared point
|
|
284
|
+
break;
|
|
285
|
+
case "error":
|
|
286
|
+
console.error(state.error);
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
```
|
|
291
|
+
|
|
247
292
|
## Development
|
|
248
293
|
|
|
249
294
|
```bash
|
package/lib/cjs/api/SignerTrx.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var g=(n,t,o,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of p(t))!a.call(n,r)&&r!==o&&i(n,r,{get:()=>t[r],enumerable:!(e=s(t,r))||e.enumerable});return n};var y=n=>g(i({},"__esModule",{value:!0}),n);var A={};module.exports=y(A);
|
|
2
2
|
//# sourceMappingURL=SignerTrx.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/SignerTrx.ts"],
|
|
4
|
-
"sourcesContent": ["import { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\n\nexport interface SignerTrx {\n getAddress: (\n derivationPath: string,\n options?: AddressOptions,\n ) => GetAddressDAReturnType;\n\n signTransaction: (\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ) => SignTransactionDAReturnType;\n\n signTransactionHash: (\n derivationPath: string,\n transactionHash: Uint8Array,\n options?: TransactionOptions,\n ) => SignTransactionHashDAReturnType;\n\n signPersonalMessage: (\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ) => SignPersonalMessageDAReturnType;\n\n getAppConfiguration: () => GetAppConfigurationDAReturnType;\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\n\nexport interface SignerTrx {\n getAddress: (\n derivationPath: string,\n options?: AddressOptions,\n ) => GetAddressDAReturnType;\n\n signTransaction: (\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ) => SignTransactionDAReturnType;\n\n signTransactionHash: (\n derivationPath: string,\n transactionHash: Uint8Array,\n options?: TransactionOptions,\n ) => SignTransactionHashDAReturnType;\n\n signPersonalMessage: (\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ) => SignPersonalMessageDAReturnType;\n\n getAppConfiguration: () => GetAppConfigurationDAReturnType;\n\n getECDHSecret: (\n derivationPath: string,\n publicKey: Uint8Array,\n options?: EcdhOptions,\n ) => GetECDHSecretDAReturnType;\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["SignerTrx_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var u=(t,e,o,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of m(e))!A.call(t,r)&&r!==o&&n(t,r,{get:()=>e[r],enumerable:!(p=D(e,r))||p.enumerable});return t};var a=t=>u(n({},"__esModule",{value:!0}),t);var c={};module.exports=a(c);
|
|
2
|
+
//# sourceMappingURL=GetECDHSecretDeviceActionTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/app-binder/GetECDHSecretDeviceActionTypes.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type CommandErrorResult,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type SendCommandInAppDAIntermediateValue,\n type SendCommandInAppDAOutput,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetECDHSecretCommandResponse } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { type TronAppErrorCodes } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\n\ntype GetECDHSecretDAUserInteractionRequired =\n UserInteractionRequired.SignTransaction;\n\nexport type GetECDHSecretDAOutput =\n SendCommandInAppDAOutput<GetECDHSecretCommandResponse>;\n\nexport type GetECDHSecretDAError =\n | OpenAppDAError\n | CommandErrorResult<TronAppErrorCodes>[\"error\"];\n\nexport type GetECDHSecretDAIntermediateValue =\n SendCommandInAppDAIntermediateValue<GetECDHSecretDAUserInteractionRequired>;\n\nexport type GetECDHSecretDAReturnType = ExecuteDeviceActionReturnType<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["GetECDHSecretDeviceActionTypes_exports", "__toCommonJS"]
|
|
7
|
+
}
|
package/lib/cjs/api/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var p in e)o(t,p,{get:e[p],enumerable:!0})},u=(t,e,p,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!y.call(t,r)&&r!==p&&o(t,r,{get:()=>e[r],enumerable:!(n=i(e,r))||n.enumerable});return t};var D=t=>u(o({},"__esModule",{value:!0}),t);var g={};A(g,{SignerTrxBuilder:()=>a.SignerTrxBuilder});module.exports=D(g);var a=require("./SignerTrxBuilder");0&&(module.exports={SignerTrxBuilder});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/api/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/index.ts"],
|
|
4
|
-
"sourcesContent": ["export {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n type GetAppConfigurationDAReturnType,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n type SignPersonalMessageDAReturnType,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nexport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n type SignTransactionHashDAReturnType,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nexport { type AddressOptions } from \"@api/model/AddressOptions\";\nexport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nexport { type MessageOptions } from \"@api/model/MessageOptions\";\nexport { type Signature } from \"@api/model/Signature\";\nexport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nexport { type SignerTrx } from \"@api/SignerTrx\";\nexport { SignerTrxBuilder } from \"@api/SignerTrxBuilder\";\nexport { type TronAppErrorCodes } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0DAAAE,EAAAF,
|
|
4
|
+
"sourcesContent": ["export {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n type GetAppConfigurationDAReturnType,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport {\n type GetECDHSecretDAError,\n type GetECDHSecretDAIntermediateValue,\n type GetECDHSecretDAOutput,\n type GetECDHSecretDAReturnType,\n} from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nexport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n type SignPersonalMessageDAReturnType,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nexport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n type SignTransactionHashDAReturnType,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nexport { type AddressOptions } from \"@api/model/AddressOptions\";\nexport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nexport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nexport { type MessageOptions } from \"@api/model/MessageOptions\";\nexport { type Signature } from \"@api/model/Signature\";\nexport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nexport { type SignerTrx } from \"@api/SignerTrx\";\nexport { SignerTrxBuilder } from \"@api/SignerTrxBuilder\";\nexport { type TronAppErrorCodes } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0DAAAE,EAAAF,GA2CA,IAAAG,EAAiC",
|
|
6
6
|
"names": ["api_exports", "__export", "__toCommonJS", "import_SignerTrxBuilder"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var b=(e,p,i,n)=>{if(p&&typeof p=="object"||typeof p=="function")for(let o of O(p))!a.call(e,o)&&o!==i&&t(e,o,{get:()=>p[o],enumerable:!(n=s(p,o))||n.enumerable});return e};var c=e=>b(t({},"__esModule",{value:!0}),e);var d={};module.exports=c(d);
|
|
2
|
+
//# sourceMappingURL=EcdhOptions.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var i=Object.defineProperty;var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var C=(n,e)=>{for(var t in e)i(n,t,{get:e[t],enumerable:!0})},f=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of u(e))!T.call(n,s)&&s!==t&&i(n,s,{get:()=>e[s],enumerable:!(r=y(e,s))||r.enumerable});return n};var A=n=>f(i({},"__esModule",{value:!0}),n);var d={};C(d,{DefaultSignerTrx:()=>S});module.exports=A(d);var a=require("./di"),p=require("./use-cases/address/di/addressTypes"),g=require("./use-cases/app-configuration/di/appConfigurationTypes"),m=require("./use-cases/ecdh/di/ecdhTypes"),c=require("./use-cases/message/di/messageTypes"),o=require("./use-cases/transaction/di/transactionTypes");class S{_container;constructor({dmk:e,sessionId:t}){this._container=(0,a.makeContainer)({dmk:e,sessionId:t})}getAddress(e,t){return this._container.get(p.addressTypes.GetAddressUseCase).execute(e,t)}signTransaction(e,t,r){return this._container.get(o.transactionTypes.SignTransactionUseCase).execute(e,t,r)}signTransactionHash(e,t,r){return this._container.get(o.transactionTypes.SignTransactionHashUseCase).execute(e,t,r)}signPersonalMessage(e,t,r){return this._container.get(c.messageTypes.SignPersonalMessageUseCase).execute(e,t,r)}getAppConfiguration(){return this._container.get(g.appConfigurationTypes.GetAppConfigurationUseCase).execute()}getECDHSecret(e,t,r){return this._container.get(m.ecdhTypes.GetECDHSecretUseCase).execute(e,t,r)}}0&&(module.exports={DefaultSignerTrx});
|
|
2
2
|
//# sourceMappingURL=DefaultSignerTrx.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/internal/DefaultSignerTrx.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type SignerTrx } from \"@api/SignerTrx\";\nimport { makeContainer } from \"@internal/di\";\nimport { addressTypes } from \"@internal/use-cases/address/di/addressTypes\";\nimport { type GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { appConfigurationTypes } from \"@internal/use-cases/app-configuration/di/appConfigurationTypes\";\nimport { type GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { messageTypes } from \"@internal/use-cases/message/di/messageTypes\";\nimport { type SignPersonalMessageUseCase } from \"@internal/use-cases/message/SignPersonalMessageUseCase\";\nimport { transactionTypes } from \"@internal/use-cases/transaction/di/transactionTypes\";\nimport { type SignTransactionHashUseCase } from \"@internal/use-cases/transaction/SignTransactionHashUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\ntype DefaultSignerTrxConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerTrx implements SignerTrx {\n private readonly _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerTrxConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(addressTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(transactionTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signTransactionHash(\n derivationPath: string,\n transactionHash: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionHashDAReturnType {\n return this._container\n .get<SignTransactionHashUseCase>(\n transactionTypes.SignTransactionHashUseCase,\n )\n .execute(derivationPath, transactionHash, options);\n }\n\n signPersonalMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignPersonalMessageDAReturnType {\n return this._container\n .get<SignPersonalMessageUseCase>(messageTypes.SignPersonalMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(\n appConfigurationTypes.GetAppConfigurationUseCase,\n )\n .execute();\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,
|
|
6
|
-
"names": ["DefaultSignerTrx_exports", "__export", "DefaultSignerTrx", "__toCommonJS", "import_di", "import_addressTypes", "import_appConfigurationTypes", "import_messageTypes", "import_transactionTypes", "dmk", "sessionId", "derivationPath", "options", "transaction", "transactionHash", "message"]
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type SignerTrx } from \"@api/SignerTrx\";\nimport { makeContainer } from \"@internal/di\";\nimport { addressTypes } from \"@internal/use-cases/address/di/addressTypes\";\nimport { type GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { appConfigurationTypes } from \"@internal/use-cases/app-configuration/di/appConfigurationTypes\";\nimport { type GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { ecdhTypes } from \"@internal/use-cases/ecdh/di/ecdhTypes\";\nimport { type GetECDHSecretUseCase } from \"@internal/use-cases/ecdh/GetECDHSecretUseCase\";\nimport { messageTypes } from \"@internal/use-cases/message/di/messageTypes\";\nimport { type SignPersonalMessageUseCase } from \"@internal/use-cases/message/SignPersonalMessageUseCase\";\nimport { transactionTypes } from \"@internal/use-cases/transaction/di/transactionTypes\";\nimport { type SignTransactionHashUseCase } from \"@internal/use-cases/transaction/SignTransactionHashUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\ntype DefaultSignerTrxConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerTrx implements SignerTrx {\n private readonly _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerTrxConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(addressTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(transactionTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signTransactionHash(\n derivationPath: string,\n transactionHash: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionHashDAReturnType {\n return this._container\n .get<SignTransactionHashUseCase>(\n transactionTypes.SignTransactionHashUseCase,\n )\n .execute(derivationPath, transactionHash, options);\n }\n\n signPersonalMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignPersonalMessageDAReturnType {\n return this._container\n .get<SignPersonalMessageUseCase>(messageTypes.SignPersonalMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(\n appConfigurationTypes.GetAppConfigurationUseCase,\n )\n .execute();\n }\n\n getECDHSecret(\n derivationPath: string,\n publicKey: Uint8Array,\n options?: EcdhOptions,\n ): GetECDHSecretDAReturnType {\n return this._container\n .get<GetECDHSecretUseCase>(ecdhTypes.GetECDHSecretUseCase)\n .execute(derivationPath, publicKey, options);\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAiBA,IAAAI,EAA8B,wBAC9BC,EAA6B,uDAE7BC,EAAsC,0EAEtCC,EAA0B,iDAE1BC,EAA6B,uDAE7BC,EAAiC,+DAS1B,MAAMP,CAAsC,CAChC,WAEjB,YAAY,CAAE,IAAAQ,EAAK,UAAAC,CAAU,EAAoC,CAC/D,KAAK,cAAa,iBAAc,CAAE,IAAAD,EAAK,UAAAC,CAAU,CAAC,CACpD,CAEA,WACEC,EACAC,EACwB,CACxB,OAAO,KAAK,WACT,IAAuB,eAAa,iBAAiB,EACrD,QAAQD,EAAgBC,CAAO,CACpC,CAEA,gBACED,EACAE,EACAD,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4B,mBAAiB,sBAAsB,EACnE,QAAQD,EAAgBE,EAAaD,CAAO,CACjD,CAEA,oBACED,EACAG,EACAF,EACiC,CACjC,OAAO,KAAK,WACT,IACC,mBAAiB,0BACnB,EACC,QAAQD,EAAgBG,EAAiBF,CAAO,CACrD,CAEA,oBACED,EACAI,EACAH,EACiC,CACjC,OAAO,KAAK,WACT,IAAgC,eAAa,0BAA0B,EACvE,QAAQD,EAAgBI,EAASH,CAAO,CAC7C,CAEA,qBAAuD,CACrD,OAAO,KAAK,WACT,IACC,wBAAsB,0BACxB,EACC,QAAQ,CACb,CAEA,cACED,EACAK,EACAJ,EAC2B,CAC3B,OAAO,KAAK,WACT,IAA0B,YAAU,oBAAoB,EACxD,QAAQD,EAAgBK,EAAWJ,CAAO,CAC/C,CACF",
|
|
6
|
+
"names": ["DefaultSignerTrx_exports", "__export", "DefaultSignerTrx", "__toCommonJS", "import_di", "import_addressTypes", "import_appConfigurationTypes", "import_ecdhTypes", "import_messageTypes", "import_transactionTypes", "dmk", "sessionId", "derivationPath", "options", "transaction", "transactionHash", "message", "publicKey"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var c=Object.defineProperty;var
|
|
1
|
+
"use strict";var c=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var I=(t,e)=>{for(var i in e)c(t,i,{get:e[i],enumerable:!0})},P=(t,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of f(e))!S.call(t,r)&&r!==i&&c(t,r,{get:()=>e[r],enumerable:!(o=u(e,r))||o.enumerable});return t};var C=t=>P(c({},"__esModule",{value:!0}),t),h=(t,e,i,o)=>{for(var r=o>1?void 0:o?u(e,i):e,g=t.length-1,A;g>=0;g--)(A=t[g])&&(r=(o?A(e,i,r):A(r))||r);return o&&r&&c(e,i,r),r},m=(t,e)=>(i,o)=>e(i,o,t);var O={};I(O,{TronAppBinder:()=>p});module.exports=C(O);var n=require("@ledgerhq/device-management-kit"),a=require("inversify"),k=require("../app-binder/command/GetAddressCommand"),v=require("../app-binder/command/GetAppConfigurationCommand"),y=require("../app-binder/command/GetECDHSecretCommand"),D=require("../app-binder/command/SignTransactionHashCommand"),s=require("../app-binder/constants"),l=require("../app-binder/task/SignPersonalMessageTask"),T=require("../app-binder/task/SignTransactionTask"),d=require("../externalTypes");let p=class{constructor(e,i,o){this.dmk=e;this.sessionId=i;this.dmkLoggerFactory=o}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new n.SendCommandInAppDeviceAction({input:{command:new k.GetAddressCommand({derivationPath:e.derivationPath,checkOnDevice:e.checkOnDevice}),appName:s.APP_NAME,requiredUserInteraction:e.checkOnDevice?n.UserInteractionRequired.VerifyAddress:n.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("GetAddressCommand")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new n.CallTaskInAppDeviceAction({input:{task:async i=>new T.SignTransactionTask(i,{derivationPath:e.derivationPath,transaction:e.transaction}).run(),appName:s.APP_NAME,requiredUserInteraction:n.UserInteractionRequired.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignTransactionTask")})})}getECDHSecret(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new n.SendCommandInAppDeviceAction({input:{command:new y.GetECDHSecretCommand({derivationPath:e.derivationPath,publicKey:e.publicKey}),appName:s.APP_NAME,requiredUserInteraction:n.UserInteractionRequired.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("GetECDHSecretCommand")})})}signTransactionHash(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new n.SendCommandInAppDeviceAction({input:{command:new D.SignTransactionHashCommand({derivationPath:e.derivationPath,transactionHash:e.transactionHash}),appName:s.APP_NAME,requiredUserInteraction:n.UserInteractionRequired.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignTransactionHashCommand")})})}signPersonalMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new n.CallTaskInAppDeviceAction({input:{task:async i=>new l.SignPersonalMessageTask(i,{derivationPath:e.derivationPath,message:e.message}).run(),appName:s.APP_NAME,requiredUserInteraction:n.UserInteractionRequired.SignPersonalMessage,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignPersonalMessageTask")})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new n.SendCommandInAppDeviceAction({input:{command:new v.GetAppConfigurationCommand,appName:s.APP_NAME,requiredUserInteraction:n.UserInteractionRequired.None,skipOpenApp:!1},logger:this.dmkLoggerFactory("GetAppConfigurationCommand")})})}};p=h([(0,a.injectable)(),m(0,(0,a.inject)(d.externalTypes.Dmk)),m(1,(0,a.inject)(d.externalTypes.SessionId)),m(2,(0,a.inject)(d.externalTypes.DmkLoggerFactory))],p);0&&(module.exports={TronAppBinder});
|
|
2
2
|
//# sourceMappingURL=TronAppBinder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/TronAppBinder.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n type DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\nimport { SignPersonalMessageTask } from \"@internal/app-binder/task/SignPersonalMessageTask\";\nimport { SignTransactionTask } from \"@internal/app-binder/task/SignTransactionTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\n@injectable()\nexport class TronAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n }),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"GetAddressCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignTransactionTask(internalApi, {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionTask\"),\n }),\n });\n }\n\n signTransactionHash(args: {\n derivationPath: string;\n transactionHash: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionHashDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath: args.derivationPath,\n transactionHash: args.transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionHashCommand\"),\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: Uint8Array;\n skipOpenApp?: boolean;\n }): SignPersonalMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignPersonalMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n message: args.message,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignPersonalMessageTask\"),\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAOO,2CACPC,EAAmC,
|
|
6
|
-
"names": ["TronAppBinder_exports", "__export", "TronAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_GetAddressCommand", "import_GetAppConfigurationCommand", "import_SignTransactionHashCommand", "import_constants", "import_SignPersonalMessageTask", "import_SignTransactionTask", "import_externalTypes", "TronAppBinder", "dmk", "sessionId", "dmkLoggerFactory", "args", "internalApi", "__decorateClass", "__decorateParam"]
|
|
4
|
+
"sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n type DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { GetECDHSecretCommand } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\nimport { SignPersonalMessageTask } from \"@internal/app-binder/task/SignPersonalMessageTask\";\nimport { SignTransactionTask } from \"@internal/app-binder/task/SignTransactionTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\n@injectable()\nexport class TronAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n }),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"GetAddressCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignTransactionTask(internalApi, {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionTask\"),\n }),\n });\n }\n\n getECDHSecret(args: {\n derivationPath: string;\n publicKey: Uint8Array;\n skipOpenApp?: boolean;\n }): GetECDHSecretDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath: args.derivationPath,\n publicKey: args.publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"GetECDHSecretCommand\"),\n }),\n });\n }\n\n signTransactionHash(args: {\n derivationPath: string;\n transactionHash: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionHashDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath: args.derivationPath,\n transactionHash: args.transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionHashCommand\"),\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: Uint8Array;\n skipOpenApp?: boolean;\n }): SignPersonalMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignPersonalMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n message: args.message,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignPersonalMessageTask\"),\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["TronAppBinder_exports", "__export", "TronAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_GetAddressCommand", "import_GetAppConfigurationCommand", "import_GetECDHSecretCommand", "import_SignTransactionHashCommand", "import_constants", "import_SignPersonalMessageTask", "import_SignTransactionTask", "import_externalTypes", "TronAppBinder", "dmk", "sessionId", "dmkLoggerFactory", "args", "internalApi", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("@ledgerhq/device-management-kit"),m=require("rxjs"),
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),m=require("rxjs"),D=require("../app-binder/command/GetAddressCommand"),h=require("../app-binder/command/GetAppConfigurationCommand"),v=require("../app-binder/command/GetECDHSecretCommand"),b=require("../app-binder/command/SignTransactionHashCommand"),l=require("../app-binder/constants"),a=require("./TronAppBinder");describe("TronAppBinder",()=>{const t={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},g={debug:vi.fn()},c=vi.fn().mockReturnValue(g);beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const n=new a.TronAppBinder({},{},c);expect(n).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((n,i)=>{const r={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:e.DeviceActionStatus.Completed,output:r}]),cancel:vi.fn()});const s=new a.TronAppBinder(t,"sessionId",c),{observable:o}=s.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),d=[];o.subscribe({next:p=>d.push(p),error:i,complete:()=>{try{expect(d).toEqual([{status:e.DeviceActionStatus.Completed,output:r}]),n()}catch(p){i(p)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const n="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new a.TronAppBinder(t,"sessionId",c).getAddress({derivationPath:n,checkOnDevice:!1,skipOpenApp:!1}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new D.GetAddressCommand({derivationPath:n,checkOnDevice:!1}),appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.None,skipOpenApp:!1},logger:g})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new a.TronAppBinder(t,"sessionId",c).getAddress({derivationPath:n,checkOnDevice:!0,skipOpenApp:!0}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new D.GetAddressCommand({derivationPath:n,checkOnDevice:!0}),appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.VerifyAddress,skipOpenApp:!0},logger:g})}))})})}),describe("signTransaction",()=>{const n="44'/195'/0'/0/0",i=Uint8Array.from([10,1,0]);it("should return the signature",()=>new Promise((r,s)=>{const o=new Uint8Array(65).fill(171);vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:e.DeviceActionStatus.Completed,output:o}]),cancel:vi.fn()});const d=new a.TronAppBinder(t,"sessionId",c),{observable:p}=d.signTransaction({derivationPath:n,transaction:i}),A=[];p.subscribe({next:u=>A.push(u),error:s,complete:()=>{try{expect(A).toEqual([{status:e.DeviceActionStatus.Completed,output:o}]),r()}catch(u){s(u)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const r=()=>{const s=vi.mocked(t.executeDeviceAction).mock.calls[0][0];return expect(s.sessionId).toBe("sessionId"),expect(s.deviceAction).toBeInstanceOf(e.CallTaskInAppDeviceAction),s.deviceAction};it("requires the SignTransaction interaction",()=>{new a.TronAppBinder(t,"sessionId",c).signTransaction({derivationPath:n,transaction:i,skipOpenApp:!0});const o=r();expect(o.input.appName).toBe(l.APP_NAME),expect(o.input.requiredUserInteraction).toBe(e.UserInteractionRequired.SignTransaction),expect(o.input.skipOpenApp).toBe(!0)}),it("defaults skipOpenApp to false",()=>{new a.TronAppBinder(t,"sessionId",c).signTransaction({derivationPath:n,transaction:i}),expect(r().input.skipOpenApp).toBe(!1)})})}),describe("signTransactionHash",()=>{const n="44'/195'/0'/0/0",i=new Uint8Array(32).fill(37);it("should return the signature",()=>new Promise((r,s)=>{const o=new Uint8Array(65).fill(171);vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:e.DeviceActionStatus.Completed,output:o}]),cancel:vi.fn()});const d=new a.TronAppBinder(t,"sessionId",c),{observable:p}=d.signTransactionHash({derivationPath:n,transactionHash:i}),A=[];p.subscribe({next:u=>A.push(u),error:s,complete:()=>{try{expect(A).toEqual([{status:e.DeviceActionStatus.Completed,output:o}]),r()}catch(u){s(u)}}})})),describe("calls executeDeviceAction with the correct params",()=>{it("requires the SignTransaction interaction",()=>{new a.TronAppBinder(t,"sessionId",c).signTransactionHash({derivationPath:n,transactionHash:i,skipOpenApp:!0}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new b.SignTransactionHashCommand({derivationPath:n,transactionHash:i}),appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.SignTransaction,skipOpenApp:!0},logger:g})}))}),it("defaults skipOpenApp to false",()=>{new a.TronAppBinder(t,"sessionId",c).signTransactionHash({derivationPath:n,transactionHash:i}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new b.SignTransactionHashCommand({derivationPath:n,transactionHash:i}),appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.SignTransaction,skipOpenApp:!1},logger:g})}))})})}),describe("signPersonalMessage",()=>{const n="44'/195'/0'/0/0",i=Uint8Array.from([104,101,108,108,111]);it("should return the signature",()=>new Promise((r,s)=>{const o=new Uint8Array(65).fill(171);vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:e.DeviceActionStatus.Completed,output:o}]),cancel:vi.fn()});const d=new a.TronAppBinder(t,"sessionId",c),{observable:p}=d.signPersonalMessage({derivationPath:n,message:i}),A=[];p.subscribe({next:u=>A.push(u),error:s,complete:()=>{try{expect(A).toEqual([{status:e.DeviceActionStatus.Completed,output:o}]),r()}catch(u){s(u)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const r=()=>{const s=vi.mocked(t.executeDeviceAction).mock.calls[0][0];return expect(s.sessionId).toBe("sessionId"),expect(s.deviceAction).toBeInstanceOf(e.CallTaskInAppDeviceAction),s.deviceAction};it("requires the SignPersonalMessage interaction",()=>{new a.TronAppBinder(t,"sessionId",c).signPersonalMessage({derivationPath:n,message:i,skipOpenApp:!0});const o=r();expect(o.input.appName).toBe(l.APP_NAME),expect(o.input.requiredUserInteraction).toBe(e.UserInteractionRequired.SignPersonalMessage),expect(o.input.skipOpenApp).toBe(!0)}),it("defaults skipOpenApp to false",()=>{new a.TronAppBinder(t,"sessionId",c).signPersonalMessage({derivationPath:n,message:i}),expect(r().input.skipOpenApp).toBe(!1)})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((n,i)=>{const r={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:e.DeviceActionStatus.Completed,output:r}]),cancel:vi.fn()});const s=new a.TronAppBinder(t,"sessionId",c),{observable:o}=s.getAppConfiguration(),d=[];o.subscribe({next:p=>d.push(p),error:i,complete:()=>{try{expect(d).toEqual([{status:e.DeviceActionStatus.Completed,output:r}]),n()}catch(p){i(p)}}})})),it("should call executeDeviceAction with the correct params",()=>{new a.TronAppBinder(t,"sessionId",c).getAppConfiguration(),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new h.GetAppConfigurationCommand,appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.None,skipOpenApp:!1},logger:g})}))})}),describe("getECDHSecret",()=>{const n="44'/195'/0'/0/0",i=new Uint8Array(65).fill(4);it("should return the shared secret",()=>new Promise((r,s)=>{const o=new Uint8Array(65).fill(205);vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:e.DeviceActionStatus.Completed,output:o}]),cancel:vi.fn()});const d=new a.TronAppBinder(t,"sessionId",c),{observable:p}=d.getECDHSecret({derivationPath:n,publicKey:i}),A=[];p.subscribe({next:u=>A.push(u),error:s,complete:()=>{try{expect(A).toEqual([{status:e.DeviceActionStatus.Completed,output:o}]),r()}catch(u){s(u)}}})})),describe("calls executeDeviceAction with the correct params",()=>{it("requires the SignTransaction interaction",()=>{new a.TronAppBinder(t,"sessionId",c).getECDHSecret({derivationPath:n,publicKey:i,skipOpenApp:!0}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new v.GetECDHSecretCommand({derivationPath:n,publicKey:i}),appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.SignTransaction,skipOpenApp:!0},logger:g})}))}),it("defaults skipOpenApp to false",()=>{new a.TronAppBinder(t,"sessionId",c).getECDHSecret({derivationPath:n,publicKey:i}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new v.GetECDHSecretCommand({derivationPath:n,publicKey:i}),appName:l.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.SignTransaction,skipOpenApp:!1},logger:g})}))})})})});
|
|
2
2
|
//# sourceMappingURL=TronAppBinder.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/TronAppBinder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { type TronAppCommandError } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transaction = Uint8Array.from([0x0a, 0x01, 0x00]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionDAOutput = new Uint8Array(65).fill(0xab);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signTransaction({\n derivationPath,\n transaction,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignTransactionDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignTransaction\n >;\n };\n\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignTransaction,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransaction({ derivationPath, transaction });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"signTransactionHash\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transactionHash = new Uint8Array(32).fill(0x25);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionHashDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signTransactionHash({\n derivationPath,\n transactionHash,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransactionHash({\n derivationPath,\n transactionHash,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransactionHash({ derivationPath, transactionHash });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signPersonalMessage\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const message = Uint8Array.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignPersonalMessageDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signPersonalMessage({\n derivationPath,\n message,\n });\n\n // THEN\n const states: DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignPersonalMessageDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignPersonalMessage\n >;\n };\n\n it(\"requires the SignPersonalMessage interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signPersonalMessage({\n derivationPath,\n message,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignPersonalMessage,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signPersonalMessage({ derivationPath, message });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EASO,2CACPC,EAAqB,
|
|
6
|
-
"names": ["import_device_management_kit", "import_rxjs", "import_GetAddressCommand", "import_GetAppConfigurationCommand", "import_SignTransactionHashCommand", "import_constants", "import_TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath", "transaction", "executedDeviceAction", "args", "deviceAction", "transactionHash", "message"]
|
|
4
|
+
"sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport {\n type GetECDHSecretDAError,\n type GetECDHSecretDAIntermediateValue,\n type GetECDHSecretDAOutput,\n} from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { GetECDHSecretCommand } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { type TronAppCommandError } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transaction = Uint8Array.from([0x0a, 0x01, 0x00]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionDAOutput = new Uint8Array(65).fill(0xab);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signTransaction({\n derivationPath,\n transaction,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignTransactionDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignTransaction\n >;\n };\n\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignTransaction,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransaction({ derivationPath, transaction });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"signTransactionHash\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transactionHash = new Uint8Array(32).fill(0x25);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionHashDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signTransactionHash({\n derivationPath,\n transactionHash,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransactionHash({\n derivationPath,\n transactionHash,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransactionHash({ derivationPath, transactionHash });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signPersonalMessage\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const message = Uint8Array.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignPersonalMessageDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signPersonalMessage({\n derivationPath,\n message,\n });\n\n // THEN\n const states: DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignPersonalMessageDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignPersonalMessage\n >;\n };\n\n it(\"requires the SignPersonalMessage interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signPersonalMessage({\n derivationPath,\n message,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignPersonalMessage,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signPersonalMessage({ derivationPath, message });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n\n describe(\"getECDHSecret\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const publicKey = new Uint8Array(65).fill(0x04);\n\n it(\"should return the shared secret\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetECDHSecretDAOutput = new Uint8Array(65).fill(0xcd);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getECDHSecret({\n derivationPath,\n publicKey,\n });\n\n // THEN\n const states: DeviceActionState<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getECDHSecret({ derivationPath, publicKey, skipOpenApp: true });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath,\n publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getECDHSecret({ derivationPath, publicKey });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath,\n publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_rxjs", "import_GetAddressCommand", "import_GetAppConfigurationCommand", "import_GetECDHSecretCommand", "import_SignTransactionHashCommand", "import_constants", "import_TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath", "transaction", "executedDeviceAction", "args", "deviceAction", "transactionHash", "message", "publicKey"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(t,r)=>{for(var a in r)p(t,a,{get:r[a],enumerable:!0})},y=(t,r,a,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of c(r))!l.call(t,s)&&s!==a&&p(t,s,{get:()=>r[s],enumerable:!(n=E(r,s))||n.enumerable});return t};var A=t=>y(p({},"__esModule",{value:!0}),t);var H={};u(H,{GetECDHSecretCommand:()=>D});module.exports=A(H);var e=require("@ledgerhq/device-management-kit"),d=require("@ledgerhq/signer-utils"),C=require("purify-ts"),o=require("../../app-binder/constants"),i=require("./utils/encodeDerivationPath"),m=require("./utils/tronApplicationErrors");class D{name="GetECDHSecret";_args;errorHelper=new d.CommandErrorHelper(m.TRON_APP_ERRORS,m.TronAppCommandErrorFactory);constructor(r){this._args=r}get args(){return this._args}getApdu(){return new e.ApduBuilder({cla:o.LEDGER_CLA,ins:o.INS.ECDH_SECRET,p1:0,p2:1}).addBufferToData((0,i.encodeDerivationPath)(this._args.derivationPath)).addBufferToData(this._args.publicKey).build()}parseResponse(r){return C.Maybe.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const n=new e.ApduParser(r).extractFieldByLength(o.ECDH_SECRET_LENGTH);return n===void 0?(0,e.CommandResultFactory)({error:new e.InvalidResponseFormatError("ECDH shared secret is missing")}):(0,e.CommandResultFactory)({data:n})})}}0&&(module.exports={GetECDHSecretCommand});
|
|
2
|
+
//# sourceMappingURL=GetECDHSecretCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/command/GetECDHSecretCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidResponseFormatError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ECDH_SECRET_LENGTH,\n INS,\n LEDGER_CLA,\n} from \"@internal/app-binder/constants\";\n\nimport { encodeDerivationPath } from \"./utils/encodeDerivationPath\";\nimport {\n TRON_APP_ERRORS,\n TronAppCommandErrorFactory,\n type TronAppErrorCodes,\n} from \"./utils/tronApplicationErrors\";\n\nexport type GetECDHSecretCommandArgs = {\n readonly derivationPath: string;\n // The peer's uncompressed secp256k1 public key (65 bytes, 0x04 || X || Y).\n readonly publicKey: Uint8Array;\n};\n\n// The ECDH shared point (0x04 || X || Y), 65 bytes.\nexport type GetECDHSecretCommandResponse = Uint8Array;\n\n/**\n * Computes an ECDH shared secret between the device key (derived from the\n * BIP32 path) and a peer public key (ECDH_SECRET instruction), in a single\n * APDU. The operation is shown on the device for user approval.\n */\nexport class GetECDHSecretCommand\n implements\n Command<\n GetECDHSecretCommandResponse,\n GetECDHSecretCommandArgs,\n TronAppErrorCodes\n >\n{\n readonly name = \"GetECDHSecret\";\n\n private readonly _args: GetECDHSecretCommandArgs;\n\n private readonly errorHelper = new CommandErrorHelper<\n GetECDHSecretCommandResponse,\n TronAppErrorCodes\n >(TRON_APP_ERRORS, TronAppCommandErrorFactory);\n\n constructor(args: GetECDHSecretCommandArgs) {\n this._args = args;\n }\n\n get args(): GetECDHSecretCommandArgs {\n return this._args;\n }\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: LEDGER_CLA,\n ins: INS.ECDH_SECRET,\n p1: 0x00,\n p2: 0x01,\n })\n .addBufferToData(encodeDerivationPath(this._args.derivationPath))\n .addBufferToData(this._args.publicKey)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetECDHSecretCommandResponse, TronAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const secret = parser.extractFieldByLength(ECDH_SECRET_LENGTH);\n if (secret === undefined) {\n return CommandResultFactory({\n error: new InvalidResponseFormatError(\n \"ECDH shared secret is missing\",\n ),\n });\n }\n\n return CommandResultFactory({ data: secret });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,0CAEPC,EAAqC,wCACrCC,EAIO,yCAgBA,MAAMP,CAOb,CACW,KAAO,gBAEC,MAEA,YAAc,IAAI,qBAGjC,kBAAiB,4BAA0B,EAE7C,YAAYQ,EAAgC,CAC1C,KAAK,MAAQA,CACf,CAEA,IAAI,MAAiC,CACnC,OAAO,KAAK,KACd,CAEA,SAAgB,CACd,OAAO,IAAI,cAAY,CACrB,IAAK,aACL,IAAK,MAAI,YACT,GAAI,EACJ,GAAI,CACN,CAAC,EACE,mBAAgB,wBAAqB,KAAK,MAAM,cAAc,CAAC,EAC/D,gBAAgB,KAAK,MAAM,SAAS,EACpC,MAAM,CACX,CAEA,cACEC,EACgE,CAChE,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAY,CACxC,EAAE,cAAc,IAAM,CAGpB,MAAMC,EAFS,IAAI,aAAWD,CAAY,EAEpB,qBAAqB,oBAAkB,EAC7D,OAAIC,IAAW,UACN,wBAAqB,CAC1B,MAAO,IAAI,6BACT,+BACF,CACF,CAAC,KAGI,wBAAqB,CAAE,KAAMA,CAAO,CAAC,CAC9C,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["GetECDHSecretCommand_exports", "__export", "GetECDHSecretCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_constants", "import_encodeDerivationPath", "import_tronApplicationErrors", "args", "apduResponse", "secret"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),n=require("./GetECDHSecretCommand");const c="44'/195'/0'/0/0",p="058000002c800000c3800000000000000000000000",o="04ff21f8e64d3a3c0198edfbb7afdc79be959432e92e2f8a1984bb436a414b8edcec0345aad0c1bf7da04fd036dd7f9f617e30669224283d950fab9dd84831dc83",a=(0,e.hexaStringToBuffer)("04"+"cd".repeat(64));describe("GetECDHSecretCommand",()=>{const t=new n.GetECDHSecretCommand({derivationPath:c,publicKey:(0,e.hexaStringToBuffer)(o)});describe("name",()=>{it("should be 'GetECDHSecret'",()=>{expect(t.name).toBe("GetECDHSecret")})}),describe("getApdu",()=>{it("should build the APDU with CLA=0xe0, INS=0x0a, P1=0, P2=1 and the path + peer pubkey as data",()=>{expect((0,e.bufferToHexaString)(t.getApdu().getRawApdu(),!1)).toBe("e00a000156"+p+o)})}),describe("parseResponse",()=>{it("should return the 65-byte shared secret",()=>{const s=new e.ApduResponse({statusCode:Uint8Array.of(144,0),data:a}),r=t.parseResponse(s);expect((0,e.isSuccessCommandResult)(r)).toBe(!0),expect((0,e.isSuccessCommandResult)(r)&&r.data).toEqual(a)}),it("should return an error when the shared secret is missing",()=>{const s=new e.ApduResponse({statusCode:Uint8Array.of(144,0),data:(0,e.hexaStringToBuffer)("04"+"cd".repeat(63))}),r=t.parseResponse(s);if(expect((0,e.isSuccessCommandResult)(r)).toBe(!1),!(0,e.isSuccessCommandResult)(r)){const d=r.error;expect(d.originalError.message).toBe("ECDH shared secret is missing")}}),it("should return a TronAppCommandError on a device error status",()=>{const s=new e.ApduResponse({statusCode:Uint8Array.of(105,133),data:new Uint8Array}),r=t.parseResponse(s);expect((0,e.isSuccessCommandResult)(r)).toBe(!1),expect(!(0,e.isSuccessCommandResult)(r)&&r.error.errorCode).toBe("6985")})})});
|
|
2
|
+
//# sourceMappingURL=GetECDHSecretCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/command/GetECDHSecretCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n bufferToHexaString,\n hexaStringToBuffer,\n type InvalidResponseFormatError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TronAppCommandError } from \"./utils/tronApplicationErrors\";\nimport { GetECDHSecretCommand } from \"./GetECDHSecretCommand\";\n\nconst PATH = \"44'/195'/0'/0/0\";\n// Encoded \"44'/195'/0'/0/0\": length byte (05) + 5 BE32 path elements.\nconst PATH_HEX = \"058000002c800000c3800000000000000000000000\";\n// The hw-app-trx getECDHPairKey doc vector: uncompressed secp256k1 pubkey.\nconst PUBKEY_HEX =\n \"04ff21f8e64d3a3c0198edfbb7afdc79be959432e92e2f8a1984bb436a414b8edcec0345aad0c1bf7da04fd036dd7f9f617e30669224283d950fab9dd84831dc83\";\n\n// The ECDH shared point (0x04 || X || Y), 65 bytes.\nconst SECRET = hexaStringToBuffer(\"04\" + \"cd\".repeat(64))!;\n\ndescribe(\"GetECDHSecretCommand\", () => {\n const command = new GetECDHSecretCommand({\n derivationPath: PATH,\n publicKey: hexaStringToBuffer(PUBKEY_HEX)!,\n });\n\n describe(\"name\", () => {\n it(\"should be 'GetECDHSecret'\", () => {\n expect(command.name).toBe(\"GetECDHSecret\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should build the APDU with CLA=0xe0, INS=0x0a, P1=0, P2=1 and the path + peer pubkey as data\", () => {\n // 0x56 = 86 bytes of data: 21-byte encoded path + 65-byte pubkey.\n expect(bufferToHexaString(command.getApdu().getRawApdu(), false)).toBe(\n \"e00a000156\" + PATH_HEX + PUBKEY_HEX,\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the 65-byte shared secret\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.of(0x90, 0x00),\n data: SECRET,\n });\n\n const result = command.parseResponse(response);\n\n expect(isSuccessCommandResult(result)).toBe(true);\n expect(isSuccessCommandResult(result) && result.data).toEqual(SECRET);\n });\n\n it(\"should return an error when the shared secret is missing\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.of(0x90, 0x00),\n data: hexaStringToBuffer(\"04\" + \"cd\".repeat(63))!,\n });\n\n const result = command.parseResponse(response);\n\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n const err = result.error as InvalidResponseFormatError;\n expect((err.originalError as { message: string }).message).toBe(\n \"ECDH shared secret is missing\",\n );\n }\n });\n\n it(\"should return a TronAppCommandError on a device error status\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.of(0x69, 0x85),\n data: new Uint8Array(),\n });\n\n const result = command.parseResponse(response);\n\n expect(isSuccessCommandResult(result)).toBe(false);\n expect(\n !isSuccessCommandResult(result) &&\n (result.error as TronAppCommandError).errorCode,\n ).toBe(\"6985\");\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAMO,2CAGPC,EAAqC,kCAErC,MAAMC,EAAO,kBAEPC,EAAW,6CAEXC,EACJ,qIAGIC,KAAS,sBAAmB,KAAO,KAAK,OAAO,EAAE,CAAC,EAExD,SAAS,uBAAwB,IAAM,CACrC,MAAMC,EAAU,IAAI,uBAAqB,CACvC,eAAgBJ,EAChB,aAAW,sBAAmBE,CAAU,CAC1C,CAAC,EAED,SAAS,OAAQ,IAAM,CACrB,GAAG,4BAA6B,IAAM,CACpC,OAAOE,EAAQ,IAAI,EAAE,KAAK,eAAe,CAC3C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,+FAAgG,IAAM,CAEvG,UAAO,sBAAmBA,EAAQ,QAAQ,EAAE,WAAW,EAAG,EAAK,CAAC,EAAE,KAChE,aAAeH,EAAWC,CAC5B,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,0CAA2C,IAAM,CAClD,MAAMG,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,GAAG,IAAM,CAAI,EACpC,KAAMF,CACR,CAAC,EAEKG,EAASF,EAAQ,cAAcC,CAAQ,EAE7C,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,EAChD,UAAO,0BAAuBA,CAAM,GAAKA,EAAO,IAAI,EAAE,QAAQH,CAAM,CACtE,CAAC,EAED,GAAG,2DAA4D,IAAM,CACnE,MAAME,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,GAAG,IAAM,CAAI,EACpC,QAAM,sBAAmB,KAAO,KAAK,OAAO,EAAE,CAAC,CACjD,CAAC,EAEKC,EAASF,EAAQ,cAAcC,CAAQ,EAG7C,GADA,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EAC7C,IAAC,0BAAuBA,CAAM,EAAG,CACnC,MAAMC,EAAMD,EAAO,MACnB,OAAQC,EAAI,cAAsC,OAAO,EAAE,KACzD,+BACF,CACF,CACF,CAAC,EAED,GAAG,+DAAgE,IAAM,CACvE,MAAMF,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,GAAG,IAAM,GAAI,EACpC,KAAM,IAAI,UACZ,CAAC,EAEKC,EAASF,EAAQ,cAAcC,CAAQ,EAE7C,UAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,EACjD,OACE,IAAC,0BAAuBA,CAAM,GAC3BA,EAAO,MAA8B,SAC1C,EAAE,KAAK,MAAM,CACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_GetECDHSecretCommand", "PATH", "PATH_HEX", "PUBKEY_HEX", "SECRET", "command", "response", "result", "err"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var x=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var I=(S,E)=>{for(var o in E)x(S,o,{get:E[o],enumerable:!0})},s=(S,E,o,t)=>{if(E&&typeof E=="object"||typeof E=="function")for(let N of T(E))!A.call(S,N)&&N!==o&&x(S,N,{get:()=>E[N],enumerable:!(t=_(E,N))||t.enumerable});return S};var G=S=>s(x({},"__esModule",{value:!0}),S);var P={};I(P,{APP_NAME:()=>n,CHAIN_CODE_LENGTH:()=>p,CHUNK_SIZE:()=>C,ECDH_SECRET_LENGTH:()=>H,INS:()=>R,LEDGER_CLA:()=>c,P2_NONE:()=>e,SIGNATURE_LENGTH:()=>r,SIGN_PERSONAL_MESSAGE_P1:()=>O,SIGN_TRANSACTION_P1:()=>L});module.exports=G(P);const n="Tron",c=224,R={GET_ADDRESS:2,SIGN_TRANSACTION:4,SIGN_TRANSACTION_HASH:5,GET_APP_CONFIGURATION:6,SIGN_PERSONAL_MESSAGE:8,ECDH_SECRET:10},C=250,e=0,r=65,p=32,H=65,L={SINGLE:16,FIRST:0,SUBSEQUENT:128,LAST:144},O={FIRST:0,SUBSEQUENT:128};0&&(module.exports={APP_NAME,CHAIN_CODE_LENGTH,CHUNK_SIZE,ECDH_SECRET_LENGTH,INS,LEDGER_CLA,P2_NONE,SIGNATURE_LENGTH,SIGN_PERSONAL_MESSAGE_P1,SIGN_TRANSACTION_P1});
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/constants.ts"],
|
|
4
|
-
"sourcesContent": ["export const APP_NAME = \"Tron\";\n\n// Tron application APDU class byte.\nexport const LEDGER_CLA = 0xe0;\n\n// Tron application instruction bytes\nexport const INS = {\n GET_ADDRESS: 0x02,\n SIGN_TRANSACTION: 0x04,\n SIGN_TRANSACTION_HASH: 0x05,\n GET_APP_CONFIGURATION: 0x06,\n SIGN_PERSONAL_MESSAGE: 0x08,\n ECDH_SECRET: 0x0a,\n} as const;\n\n// Maximum APDU payload chunk size used by the Tron application.\nexport const CHUNK_SIZE = 250;\n\n// Common P2 value for the Tron application commands.\nexport const P2_NONE = 0x00;\n\n// Length of a Tron signature (r[32] + s[32] + v[1]).\nexport const SIGNATURE_LENGTH = 65;\n\n// Length of a chain code returned by the GetAddress command.\nexport const CHAIN_CODE_LENGTH = 32;\n\n/**\n * P1 \"start byte\" values for the SIGN_TRANSACTION instruction.\n *\n * The Tron app frames a transaction across several APDUs and encodes the frame\n * position in P1. The multi-frame chunking is orchestrated by\n * `SignTransactionTask`.\n */\nexport const SIGN_TRANSACTION_P1 = {\n // First and only frame (transaction fits in a single APDU).\n SINGLE: 0x10,\n // First frame, more frames to follow.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n // Last continuation frame.\n LAST: 0x90,\n} as const;\n\n/**\n * P1 values for the SIGN_PERSONAL_MESSAGE instruction.\n */\nexport const SIGN_PERSONAL_MESSAGE_P1 = {\n // First frame.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n} as const;\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,sBAAAC,EAAA,eAAAC,EAAA,QAAAC,EAAA,eAAAC,EAAA,YAAAC,EAAA,qBAAAC,EAAA,6BAAAC,EAAA,wBAAAC,IAAA,eAAAC,
|
|
6
|
-
"names": ["constants_exports", "__export", "APP_NAME", "CHAIN_CODE_LENGTH", "CHUNK_SIZE", "INS", "LEDGER_CLA", "P2_NONE", "SIGNATURE_LENGTH", "SIGN_PERSONAL_MESSAGE_P1", "SIGN_TRANSACTION_P1", "__toCommonJS"]
|
|
4
|
+
"sourcesContent": ["export const APP_NAME = \"Tron\";\n\n// Tron application APDU class byte.\nexport const LEDGER_CLA = 0xe0;\n\n// Tron application instruction bytes\nexport const INS = {\n GET_ADDRESS: 0x02,\n SIGN_TRANSACTION: 0x04,\n SIGN_TRANSACTION_HASH: 0x05,\n GET_APP_CONFIGURATION: 0x06,\n SIGN_PERSONAL_MESSAGE: 0x08,\n ECDH_SECRET: 0x0a,\n} as const;\n\n// Maximum APDU payload chunk size used by the Tron application.\nexport const CHUNK_SIZE = 250;\n\n// Common P2 value for the Tron application commands.\nexport const P2_NONE = 0x00;\n\n// Length of a Tron signature (r[32] + s[32] + v[1]).\nexport const SIGNATURE_LENGTH = 65;\n\n// Length of a chain code returned by the GetAddress command.\nexport const CHAIN_CODE_LENGTH = 32;\n\n// Length of the ECDH shared point (0x04 || X || Y) returned by ECDH_SECRET.\nexport const ECDH_SECRET_LENGTH = 65;\n\n/**\n * P1 \"start byte\" values for the SIGN_TRANSACTION instruction.\n *\n * The Tron app frames a transaction across several APDUs and encodes the frame\n * position in P1. The multi-frame chunking is orchestrated by\n * `SignTransactionTask`.\n */\nexport const SIGN_TRANSACTION_P1 = {\n // First and only frame (transaction fits in a single APDU).\n SINGLE: 0x10,\n // First frame, more frames to follow.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n // Last continuation frame.\n LAST: 0x90,\n} as const;\n\n/**\n * P1 values for the SIGN_PERSONAL_MESSAGE instruction.\n */\nexport const SIGN_PERSONAL_MESSAGE_P1 = {\n // First frame.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n} as const;\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,sBAAAC,EAAA,eAAAC,EAAA,uBAAAC,EAAA,QAAAC,EAAA,eAAAC,EAAA,YAAAC,EAAA,qBAAAC,EAAA,6BAAAC,EAAA,wBAAAC,IAAA,eAAAC,EAAAZ,GAAO,MAAME,EAAW,OAGXK,EAAa,IAGbD,EAAM,CACjB,YAAa,EACb,iBAAkB,EAClB,sBAAuB,EACvB,sBAAuB,EACvB,sBAAuB,EACvB,YAAa,EACf,EAGaF,EAAa,IAGbI,EAAU,EAGVC,EAAmB,GAGnBN,EAAoB,GAGpBE,EAAqB,GASrBM,EAAsB,CAEjC,OAAQ,GAER,MAAO,EAEP,WAAY,IAEZ,KAAM,GACR,EAKaD,EAA2B,CAEtC,MAAO,EAEP,WAAY,GACd",
|
|
6
|
+
"names": ["constants_exports", "__export", "APP_NAME", "CHAIN_CODE_LENGTH", "CHUNK_SIZE", "ECDH_SECRET_LENGTH", "INS", "LEDGER_CLA", "P2_NONE", "SIGNATURE_LENGTH", "SIGN_PERSONAL_MESSAGE_P1", "SIGN_TRANSACTION_P1", "__toCommonJS"]
|
|
7
7
|
}
|
package/lib/cjs/internal/di.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var f=(o,e)=>{for(var t in e)a(o,t,{get:e[t],enumerable:!0})},v=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!M.call(o,r)&&r!==t&&a(o,r,{get:()=>e[r],enumerable:!(n=l(e,r))||n.enumerable});return o};var C=o=>v(a({},"__esModule",{value:!0}),o);var F={};f(F,{makeContainer:()=>D});module.exports=C(F);var s=require("inversify"),m=require("./app-binder/di/appBinderModule"),i=require("./externalTypes"),c=require("./use-cases/address/di/addressModule"),p=require("./use-cases/app-configuration/di/appConfigurationModule"),d=require("./use-cases/ecdh/di/ecdhModule"),g=require("./use-cases/message/di/messageModule"),y=require("./use-cases/transaction/di/transactionModule");const D=({dmk:o,sessionId:e})=>{const t=new s.Container;return t.bind(i.externalTypes.Dmk).toConstantValue(o),t.bind(i.externalTypes.SessionId).toConstantValue(e),t.bind(i.externalTypes.DmkLoggerFactory).toConstantValue(n=>o.getLoggerFactory()(["SignerTron",n])),t.loadSync((0,m.appBindingModuleFactory)(),(0,c.addressModuleFactory)(),(0,y.transactionModuleFactory)(),(0,g.messageModuleFactory)(),(0,p.appConfigurationModuleFactory)(),(0,d.ecdhModuleFactory)()),t};0&&(module.exports={makeContainer});
|
|
2
2
|
//# sourceMappingURL=di.js.map
|