@swapkit/wallet-hardware 5.0.1 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/THIRD_PARTY_LICENSES.md +2344 -0
- package/dist/chunk-09e51wma.js +4 -0
- package/dist/chunk-09e51wma.js.map +167 -0
- package/dist/chunk-0arpsm5f.js +4 -0
- package/dist/chunk-0arpsm5f.js.map +10 -0
- package/dist/chunk-1amf58aq.js +4 -0
- package/dist/{chunk-xkh15edk.js.map → chunk-1amf58aq.js.map} +2 -2
- package/dist/chunk-3t17wpjg.js +17 -0
- package/dist/chunk-3t17wpjg.js.map +29 -0
- package/dist/chunk-5c7b7z2d.js +4 -0
- package/dist/{chunk-20wx60bn.js.map → chunk-5c7b7z2d.js.map} +2 -2
- package/dist/chunk-5p3ttw6y.js +4 -0
- package/dist/{chunk-1jpcb30j.js.map → chunk-5p3ttw6y.js.map} +1 -1
- package/dist/chunk-dptbnkzm.js +64 -0
- package/dist/chunk-dptbnkzm.js.map +260 -0
- package/dist/chunk-ds2m83jp.js +5 -0
- package/dist/chunk-ds2m83jp.js.map +11 -0
- package/dist/chunk-eenx3cv6.js +4 -0
- package/dist/chunk-eenx3cv6.js.map +33 -0
- package/dist/chunk-gr3eswf1.js +4 -0
- package/dist/chunk-gr3eswf1.js.map +73 -0
- package/dist/{chunk-7fsaymh4.js → chunk-hg71hp4m.js} +3 -3
- package/dist/{chunk-7fsaymh4.js.map → chunk-hg71hp4m.js.map} +1 -1
- package/dist/chunk-jewm2ag3.js +5 -0
- package/dist/{chunk-4tbtxdxa.js.map → chunk-jewm2ag3.js.map} +2 -2
- package/dist/chunk-jzrytcrf.js +4 -0
- package/dist/chunk-jzrytcrf.js.map +12 -0
- package/dist/chunk-k3thje6a.js +4 -0
- package/dist/chunk-k3thje6a.js.map +9 -0
- package/dist/chunk-nhva847d.js +5 -0
- package/dist/chunk-nhva847d.js.map +9 -0
- package/dist/chunk-tm47brht.js +4 -0
- package/dist/chunk-tm47brht.js.map +140 -0
- package/dist/chunk-xmvg4cds.js +4 -0
- package/dist/chunk-xmvg4cds.js.map +127 -0
- package/dist/chunk-xx7cwpzq.js +4 -0
- package/dist/chunk-xx7cwpzq.js.map +9 -0
- package/dist/chunk-yrxe491r.js +20 -0
- package/dist/chunk-yrxe491r.js.map +17 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/keepkey/index.cjs +2 -2
- package/dist/keepkey/index.cjs.map +2 -2
- package/dist/keepkey/index.js +2 -2
- package/dist/keepkey/index.js.map +2 -2
- package/dist/ledger/index.cjs +90 -2
- package/dist/ledger/index.cjs.map +830 -24
- package/dist/ledger/index.js +2 -2
- package/dist/ledger/index.js.map +21 -19
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +5 -5
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/ledger/clients/bitcoin.d.ts +36 -0
- package/dist/types/ledger/clients/bitcoin.d.ts.map +1 -0
- package/dist/types/ledger/clients/cosmos.d.ts +38 -10
- package/dist/types/ledger/clients/cosmos.d.ts.map +1 -1
- package/dist/types/ledger/clients/evm.d.ts +37 -46
- package/dist/types/ledger/clients/evm.d.ts.map +1 -1
- package/dist/types/ledger/clients/near.d.ts +5 -2
- package/dist/types/ledger/clients/near.d.ts.map +1 -1
- package/dist/types/ledger/clients/sui.d.ts +8 -12
- package/dist/types/ledger/clients/sui.d.ts.map +1 -1
- package/dist/types/ledger/clients/thorchain/index.d.ts +34 -8
- package/dist/types/ledger/clients/thorchain/index.d.ts.map +1 -1
- package/dist/types/ledger/clients/thorchain/protocol.d.ts +58 -0
- package/dist/types/ledger/clients/thorchain/protocol.d.ts.map +1 -0
- package/dist/types/ledger/clients/tron.d.ts +11 -8
- package/dist/types/ledger/clients/tron.d.ts.map +1 -1
- package/dist/types/ledger/clients/utxo-legacy-adapter.d.ts +3 -2
- package/dist/types/ledger/clients/utxo-legacy-adapter.d.ts.map +1 -1
- package/dist/types/ledger/clients/utxo-legacy-outputs.d.ts +18 -0
- package/dist/types/ledger/clients/utxo-legacy-outputs.d.ts.map +1 -0
- package/dist/types/ledger/clients/utxo.d.ts +10 -13
- package/dist/types/ledger/clients/utxo.d.ts.map +1 -1
- package/dist/types/ledger/clients/xrp.d.ts +4 -1
- package/dist/types/ledger/clients/xrp.d.ts.map +1 -1
- package/dist/types/ledger/clients/zcash.d.ts +53 -0
- package/dist/types/ledger/clients/zcash.d.ts.map +1 -0
- package/dist/types/ledger/helpers/dmk.d.ts +24 -0
- package/dist/types/ledger/helpers/dmk.d.ts.map +1 -0
- package/dist/types/ledger/helpers/executeDeviceAction.d.ts +34 -0
- package/dist/types/ledger/helpers/executeDeviceAction.d.ts.map +1 -0
- package/dist/types/ledger/helpers/getLedgerAddress.d.ts +1 -1
- package/dist/types/ledger/helpers/getLedgerAddress.d.ts.map +1 -1
- package/dist/types/ledger/helpers/getLedgerClient.d.ts +10 -3
- package/dist/types/ledger/helpers/getLedgerClient.d.ts.map +1 -1
- package/dist/types/ledger/helpers/index.d.ts +2 -1
- package/dist/types/ledger/helpers/index.d.ts.map +1 -1
- package/dist/types/ledger/helpers/ledgerJsDmkBridge.d.ts +26 -0
- package/dist/types/ledger/helpers/ledgerJsDmkBridge.d.ts.map +1 -0
- package/dist/types/ledger/helpers/ledgerJsDmkTransport.d.ts +13 -0
- package/dist/types/ledger/helpers/ledgerJsDmkTransport.d.ts.map +1 -0
- package/dist/types/ledger/helpers/lowS.d.ts +6 -0
- package/dist/types/ledger/helpers/lowS.d.ts.map +1 -0
- package/dist/types/ledger/helpers/rawTx.d.ts +2 -0
- package/dist/types/ledger/helpers/rawTx.d.ts.map +1 -0
- package/dist/types/ledger/index.d.ts +19 -7
- package/dist/types/ledger/index.d.ts.map +1 -1
- package/dist/types/ledger/types.d.ts +6 -10
- package/dist/types/ledger/types.d.ts.map +1 -1
- package/dist/types/trezor/index.d.ts +2 -2
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +36 -36
- package/src/ledger/clients/bitcoin.ts +575 -0
- package/src/ledger/clients/cosmos.ts +180 -51
- package/src/ledger/clients/evm.ts +238 -195
- package/src/ledger/clients/near.ts +43 -13
- package/src/ledger/clients/sui.ts +55 -68
- package/src/ledger/clients/thorchain/index.ts +210 -86
- package/src/ledger/clients/thorchain/protocol.ts +166 -0
- package/src/ledger/clients/tron.ts +49 -37
- package/src/ledger/clients/utxo-legacy-adapter.ts +35 -32
- package/src/ledger/clients/utxo-legacy-outputs.ts +122 -0
- package/src/ledger/clients/utxo.ts +108 -206
- package/src/ledger/clients/xrp.ts +39 -23
- package/src/ledger/clients/zcash.ts +440 -0
- package/src/ledger/helpers/dmk.ts +231 -0
- package/src/ledger/helpers/executeDeviceAction.ts +201 -0
- package/src/ledger/helpers/getLedgerClient.ts +101 -72
- package/src/ledger/helpers/index.ts +6 -1
- package/src/ledger/helpers/ledgerJsDmkBridge.ts +109 -0
- package/src/ledger/helpers/ledgerJsDmkTransport.ts +88 -0
- package/src/ledger/helpers/lowS.ts +30 -0
- package/src/ledger/helpers/rawTx.ts +12 -0
- package/src/ledger/index.ts +564 -369
- package/src/ledger/types.ts +15 -10
- package/src/trezor/index.ts +183 -68
- package/dist/chunk-1jpcb30j.js +0 -5
- package/dist/chunk-20wx60bn.js +0 -4
- package/dist/chunk-4tbtxdxa.js +0 -5
- package/dist/chunk-7v7cgm69.js +0 -4
- package/dist/chunk-7v7cgm69.js.map +0 -10
- package/dist/chunk-83g13ck6.js +0 -5
- package/dist/chunk-83g13ck6.js.map +0 -10
- package/dist/chunk-h2r568rz.js +0 -4
- package/dist/chunk-h2r568rz.js.map +0 -10
- package/dist/chunk-xkh15edk.js +0 -4
- package/dist/types/ledger/clients/thorchain/common.d.ts +0 -28
- package/dist/types/ledger/clients/thorchain/common.d.ts.map +0 -1
- package/dist/types/ledger/clients/thorchain/helpers.d.ts +0 -7
- package/dist/types/ledger/clients/thorchain/helpers.d.ts.map +0 -1
- package/dist/types/ledger/clients/thorchain/lib.d.ts +0 -22
- package/dist/types/ledger/clients/thorchain/lib.d.ts.map +0 -1
- package/dist/types/ledger/clients/thorchain/utils.d.ts +0 -2
- package/dist/types/ledger/clients/thorchain/utils.d.ts.map +0 -1
- package/dist/types/ledger/clients/utxo-psbt.d.ts +0 -18
- package/dist/types/ledger/clients/utxo-psbt.d.ts.map +0 -1
- package/dist/types/ledger/cosmosTypes.d.ts +0 -40
- package/dist/types/ledger/cosmosTypes.d.ts.map +0 -1
- package/dist/types/ledger/helpers/getLedgerTransport.d.ts +0 -3
- package/dist/types/ledger/helpers/getLedgerTransport.d.ts.map +0 -1
- package/dist/types/ledger/helpers/ledgerNetworkInfo.d.ts +0 -14
- package/dist/types/ledger/helpers/ledgerNetworkInfo.d.ts.map +0 -1
- package/dist/types/ledger/interfaces/CosmosLedgerInterface.d.ts +0 -14
- package/dist/types/ledger/interfaces/CosmosLedgerInterface.d.ts.map +0 -1
- package/src/ledger/clients/thorchain/common.ts +0 -93
- package/src/ledger/clients/thorchain/helpers.ts +0 -120
- package/src/ledger/clients/thorchain/lib.ts +0 -258
- package/src/ledger/clients/thorchain/utils.ts +0 -69
- package/src/ledger/clients/utxo-psbt.ts +0 -204
- package/src/ledger/cosmosTypes.ts +0 -98
- package/src/ledger/helpers/getLedgerTransport.ts +0 -102
- package/src/ledger/helpers/ledgerNetworkInfo.ts +0 -127
- package/src/ledger/interfaces/CosmosLedgerInterface.ts +0 -67
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/ledger/clients/utxo-legacy-adapter.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { hex } from \"@scure/base\";\nimport { SwapKitError, type UTXOChain } from \"@swapkit/helpers\";\nimport type { UTXOType } from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\n\n/**\n * Extract per-input metadata from a V3 PSBT in the shape the legacy\n * `@ledgerhq/hw-app-btc.createPaymentTransaction` adapter expects.\n *\n * The legacy Ledger signer still needs the full previous tx hex for\n * `btcApp.splitTransaction(hex)`. Some V3 PSBTs only include `witnessUtxo`,\n * so we fetch the previous raw tx when `nonWitnessUtxo` is absent.\n *\n * Single-address account assumption: all inputs share our derivation path.\n */\nexport async function extractInputsFromPsbt(tx: Transaction, chain: UTXOChain): Promise<UTXOType[]> {\n const { RawTx } = await import(\"@swapkit/utxo-signer\");\n const { getUtxoApi } = await import(\"@swapkit/toolboxes/utxo\");\n const inputs: UTXOType[] = [];\n\n for (let i = 0; i < tx.inputsLength; i++) {\n const input = tx.getInput(i);\n\n if (!input.txid || input.index === undefined) {\n throw new Error(`PSBT input ${i} is missing txid/index`);\n }\n\n const txid = hex.encode(input.txid);\n const txHex = input.nonWitnessUtxo\n ? hex.encode(RawTx.encode(input.nonWitnessUtxo))\n : await getUtxoApi(chain).getRawTx(txid);\n if (!txHex) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n chain,\n inputIndex: i,\n reason: \"Unable to resolve previous transaction hex for Ledger signing\",\n txid,\n });\n }\n const witnessUtxo = input.witnessUtxo\n ? { script: input.witnessUtxo.script, value: Number(input.witnessUtxo.amount) }\n : undefined;\n const nonWitnessPrevout = input.index !== undefined ? input.nonWitnessUtxo?.outputs?.[input.index] : undefined;\n const value = witnessUtxo?.value ?? (nonWitnessPrevout ? Number(nonWitnessPrevout.amount) : 0);\n\n inputs.push({ hash: txid, index: input.index, txHex, value, witnessUtxo } as UTXOType);\n }\n\n return inputs;\n}\n\nexport async function signLegacyPsbtTransaction({\n legacyClient,\n chain,\n tx,\n}: {\n legacyClient: { signTransaction: (tx: Transaction, inputUtxos: UTXOType[]) => Promise<string> };\n chain: UTXOChain;\n tx: Transaction;\n}): Promise<string> {\n const inputUtxos = await extractInputsFromPsbt(tx, chain);\n return legacyClient.signTransaction(tx, inputUtxos);\n}\n\n/**\n * Build a toolbox-compatible signer from the existing legacy Ledger UTXO\n * client. Callers that need sign-and-broadcast should broadcast the raw hex\n * from `signLegacyPsbtTransaction` directly; the legacy Ledger app returns an\n * already-finalized transaction that should not be passed back to toolbox\n * finalization.\n */\nexport function createLegacyPsbtSigner({\n legacyClient,\n chain,\n address,\n}: {\n legacyClient: { signTransaction: (tx: Transaction, inputUtxos: UTXOType[]) => Promise<string> };\n chain: UTXOChain;\n address: string;\n}) {\n return {\n getAddress: async () => address,\n signTransaction: async (tx: Transaction): Promise<Transaction> => {\n const signedTxHex = await signLegacyPsbtTransaction({ chain, legacyClient, tx });\n\n const { Transaction: TxClass } = await import(\"@swapkit/utxo-signer\");\n // `Transaction.fromRaw` parses a serialised tx (no PSBT envelope) — exactly\n // what `createPaymentTransaction` returns.\n return TxClass.fromRaw(hex.decode(signedTxHex));\n },\n };\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "wCAAA,cAAS,oBACT,uBAAS,yBAcT,eAAsB,CAAqB,CAAC,EAAiB,EAAuC,CAClG,IAAQ,SAAU,KAAa,iCACvB,cAAe,KAAa,mCAC9B,EAAqB,CAAC,EAE5B,QAAS,EAAI,EAAG,EAAI,EAAG,aAAc,IAAK,CACxC,IAAM,EAAQ,EAAG,SAAS,CAAC,EAE3B,GAAI,CAAC,EAAM,MAAQ,EAAM,QAAU,OACjC,MAAU,MAAM,cAAc,yBAAyB,EAGzD,IAAM,EAAO,EAAI,OAAO,EAAM,IAAI,EAC5B,EAAQ,EAAM,eAChB,EAAI,OAAO,EAAM,OAAO,EAAM,cAAc,CAAC,EAC7C,MAAM,EAAW,CAAK,EAAE,SAAS,CAAI,EACzC,GAAI,CAAC,EACH,MAAM,IAAI,EAAa,+BAAgC,CACrD,QACA,WAAY,EACZ,OAAQ,gEACR,MACF,CAAC,EAEH,IAAM,EAAc,EAAM,YACtB,CAAE,OAAQ,EAAM,YAAY,OAAQ,MAAO,OAAO,EAAM,YAAY,MAAM,CAAE,EAC5E,OACE,EAAoB,EAAM,QAAU,OAAY,EAAM,gBAAgB,UAAU,EAAM,OAAS,OAC/F,EAAQ,GAAa,QAAU,EAAoB,OAAO,EAAkB,MAAM,EAAI,GAE5F,EAAO,KAAK,CAAE,KAAM,EAAM,MAAO,EAAM,MAAO,QAAO,QAAO,aAAY,CAAa,EAGvF,OAAO,EAGT,eAAsB,CAAyB,EAC7C,eACA,QACA,MAKkB,CAClB,IAAM,EAAa,MAAM,EAAsB,EAAI,CAAK,EACxD,OAAO,EAAa,gBAAgB,EAAI,CAAU,EAU7C,SAAS,CAAsB,EACpC,eACA,QACA,WAKC,CACD,MAAO,CACL,WAAY,SAAY,EACxB,gBAAiB,MAAO,IAA0C,CAChE,IAAM,EAAc,MAAM,EAA0B,CAAE,QAAO,eAAc,IAAG,CAAC,GAEvE,YAAa,GAAY,KAAa,gCAG9C,OAAO,EAAQ,QAAQ,EAAI,OAAO,CAAW,CAAC,EAElD",
|
|
8
|
-
"debugId": "86FA7B33FF0F340E64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-xkh15edk.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{b as z}from"./chunk-7fsaymh4.js";import"./chunk-1jpcb30j.js";import{Chain as W,DerivationPath as X,derivationPathToString as Y}from"@swapkit/helpers";import{getRippleToolbox as Z}from"@swapkit/toolboxes/ripple";var w=async({sdk:E,derivationPath:F})=>{let G=F?Y(F):`${X[W.Ripple]}/0`,{address:j}=await E.address.xrpGetAddress({address_n:z(G)}),y=await Z({signer:{getAddress:()=>Promise.resolve(j),signTransaction:()=>{throw Error("signTransaction not supported via toolbox")}}});return{...y,address:j,getAddress:()=>j,transfer:async({recipient:I,assetValue:M,memo:q})=>{let f=await y.createTransaction({assetValue:M,memo:q,recipient:I,sender:j}),O={type:"auth/StdTx",value:{fee:{amount:[{amount:"1000",denom:"drop"}],gas:"28000"},memo:q&&q.length>0?q:"",msg:[{type:"ripple-sdk/MsgSend",value:{amount:[{amount:f.Amount,denom:"drop"}],from_address:j,to_address:I}}],signatures:null}},Q={addressNList:z(G),flags:f.Flags===0?void 0:f.Flags,lastLedgerSequence:f.LastLedgerSequence?.toString(),payment:{amount:f.Amount,destination:f.Destination,destinationTag:(f.DestinationTag??"0").toString()},sequence:(f.Sequence??0).toString(),tx:O},J=JSON.parse(await E.xrp.xrpSignTransaction(Q)),K=J.tx_blob??J.value?.signatures?.[0]?.serializedTx;if(!K)throw Error("KeepKey XRP sign failed");let U=Buffer.from(K,"base64").toString("hex");return y.broadcastTransaction(U)}}};export{w as rippleWalletMethods};
|
|
2
|
-
|
|
3
|
-
//# debugId=B9E7C62A7E5CA45F64756E2164756E21
|
|
4
|
-
//# sourceMappingURL=chunk-xkh15edk.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export declare const CLA = 85;
|
|
2
|
-
export declare const CHUNK_SIZE = 250;
|
|
3
|
-
export declare const APP_KEY = "CSM";
|
|
4
|
-
export declare const INS: {
|
|
5
|
-
GET_ADDR_SECP256K1: number;
|
|
6
|
-
GET_VERSION: number;
|
|
7
|
-
INS_PUBLIC_KEY_SECP256K1: number;
|
|
8
|
-
SIGN_SECP256K1: number;
|
|
9
|
-
};
|
|
10
|
-
export declare const PAYLOAD_TYPE: {
|
|
11
|
-
ADD: number;
|
|
12
|
-
INIT: number;
|
|
13
|
-
LAST: number;
|
|
14
|
-
};
|
|
15
|
-
export declare const P1_VALUES: {
|
|
16
|
-
ONLY_RETRIEVE: number;
|
|
17
|
-
SHOW_ADDRESS_IN_DEVICE: number;
|
|
18
|
-
};
|
|
19
|
-
export declare const P2_VALUES: {
|
|
20
|
-
JSON: number;
|
|
21
|
-
};
|
|
22
|
-
export declare const ERROR_CODE: {
|
|
23
|
-
NoError: number;
|
|
24
|
-
};
|
|
25
|
-
export declare function errorCodeToString(statusCode: number): any;
|
|
26
|
-
export declare function processErrorResponse(response: any): any;
|
|
27
|
-
export declare function getVersion(transport: any): any;
|
|
28
|
-
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../src/ledger/clients/thorchain/common.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,KAAO,CAAC;AACxB,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,OAAO,QAAQ,CAAC;AAE7B,eAAO,MAAM,GAAG;;;;;CAKf,CAAC;AAEF,eAAO,MAAM,YAAY;;;;CAAwC,CAAC;AAElE,eAAO,MAAM,SAAS;;;CAAwD,CAAC;AAE/E,eAAO,MAAM,SAAS;;CAAgB,CAAC;AAEvC,eAAO,MAAM,UAAU;;CAAsB,CAAC;AA2B9C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,OAGnD;AAMD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,OAejD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,GAAG,OAsBxC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare function serializePathv1(path: number[]): Buffer<ArrayBuffer>;
|
|
2
|
-
export declare function signSendChunkv1(app: any, chunkIdx: number, _chunkNum: number, chunk: Buffer, txType?: number): any;
|
|
3
|
-
export declare function publicKeyv1(app: any, data: Buffer): any;
|
|
4
|
-
export declare function serializePathv2(path: number[]): Buffer<ArrayBuffer>;
|
|
5
|
-
export declare function signSendChunkv2(app: any, chunkIdx: number, chunkNum: number, chunk: Buffer, txType?: number): any;
|
|
6
|
-
export declare function publicKeyv2(app: any, data: Buffer): any;
|
|
7
|
-
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/ledger/clients/thorchain/helpers.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,uBAkB7C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAiB,OAmBpH;AAeD,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,OAejD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,uBAkB7C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAiB,OAUnH;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,OAajD"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type Transport from "@ledgerhq/hw-transport";
|
|
2
|
-
export declare class THORChainApp {
|
|
3
|
-
transport: Transport;
|
|
4
|
-
versionResponse: any;
|
|
5
|
-
constructor(transport: any);
|
|
6
|
-
static serializeHRP(hrp: string): Buffer<ArrayBuffer>;
|
|
7
|
-
serializePath(path: number[]): Promise<Buffer<ArrayBuffer>>;
|
|
8
|
-
signGetChunks(path: number[], buffer: Buffer): Promise<Buffer<ArrayBuffer>[]>;
|
|
9
|
-
getVersion(): Promise<any>;
|
|
10
|
-
appInfo(): Promise<any>;
|
|
11
|
-
deviceInfo(): Promise<any>;
|
|
12
|
-
publicKey(path: number[]): Promise<any>;
|
|
13
|
-
getAddressAndPubKey(path: number[], hrp: string, showInDevice?: boolean): Promise<any>;
|
|
14
|
-
showAddressAndPubKey(path: number[], hrp: string): Promise<any>;
|
|
15
|
-
signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer, txType?: number): any;
|
|
16
|
-
sign(path: number[], message: string, txType?: number): Promise<{
|
|
17
|
-
error_message: any;
|
|
18
|
-
return_code: any;
|
|
19
|
-
signature: null;
|
|
20
|
-
}>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../../../src/ledger/clients/thorchain/lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAuBpD,qBAAa,YAAY;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;gBAET,SAAS,EAAE,GAAG;IAQ1B,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM;IAUzB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAiB5B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM;IAiB5C,UAAU;IAShB,OAAO;IAyCP,UAAU;IA6CJ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;IAmBxB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ;IA4B3E,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;IAIhD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAiB;IAWlF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAiB;;;;;CAqBpE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/ledger/clients/thorchain/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,gBAAgB,GAAG,WAiE/C,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type Transport from "@ledgerhq/hw-transport";
|
|
2
|
-
import { type DerivationPathArray } from "@swapkit/helpers";
|
|
3
|
-
import type { Transaction } from "@swapkit/utxo-signer";
|
|
4
|
-
export declare const BitcoinPsbtLedger: (derivationPathArray?: DerivationPathArray | string, injectedTransport?: Transport) => {
|
|
5
|
-
connect: () => Promise<void>;
|
|
6
|
-
getAddress: () => Promise<string>;
|
|
7
|
-
getExtendedPublicKey: (path?: string) => Promise<string>;
|
|
8
|
-
getPublicKey: () => Promise<Uint8Array<ArrayBufferLike>>;
|
|
9
|
-
signTransaction: (tx: Transaction) => Promise<Transaction>;
|
|
10
|
-
};
|
|
11
|
-
export declare const LitecoinPsbtLedger: (derivationPathArray?: DerivationPathArray | string, injectedTransport?: Transport) => {
|
|
12
|
-
connect: () => Promise<void>;
|
|
13
|
-
getAddress: () => Promise<string>;
|
|
14
|
-
getExtendedPublicKey: (path?: string) => Promise<string>;
|
|
15
|
-
getPublicKey: () => Promise<Uint8Array<ArrayBufferLike>>;
|
|
16
|
-
signTransaction: (tx: Transaction) => Promise<Transaction>;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=utxo-psbt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utxo-psbt.d.ts","sourceRoot":"","sources":["../../../../src/ledger/clients/utxo-psbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAEL,KAAK,mBAAmB,EAKzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA+LxD,eAAO,MAAM,iBAAiB,yBAlIE,mBAAmB,GAAG,MAAM,sBAAsB,SAAS;;;;;0BAsFzD,WAAW,KAAG,OAAO,CAAC,WAAW,CAAC;CA4CK,CAAC;AAC1E,eAAO,MAAM,kBAAkB,yBAnIC,mBAAmB,GAAG,MAAM,sBAAsB,SAAS;;;;;0BAsFzD,WAAW,KAAG,OAAO,CAAC,WAAW,CAAC;CA6CO,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export interface Coin {
|
|
2
|
-
readonly denom: string;
|
|
3
|
-
readonly amount: string;
|
|
4
|
-
}
|
|
5
|
-
export interface EncodeObject {
|
|
6
|
-
readonly typeUrl: string;
|
|
7
|
-
readonly value: any;
|
|
8
|
-
}
|
|
9
|
-
export interface AminoMsg {
|
|
10
|
-
readonly type: string;
|
|
11
|
-
readonly value: any;
|
|
12
|
-
}
|
|
13
|
-
export interface AminoMsgSend extends AminoMsg {
|
|
14
|
-
readonly type: "cosmos-sdk/MsgSend";
|
|
15
|
-
readonly value: {
|
|
16
|
-
/** Bech32 account address */
|
|
17
|
-
readonly from_address: string;
|
|
18
|
-
/** Bech32 account address */
|
|
19
|
-
readonly to_address: string;
|
|
20
|
-
readonly amount: readonly Coin[];
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export interface AminoConverter {
|
|
24
|
-
readonly aminoType: string;
|
|
25
|
-
readonly toAmino: (value: any) => any;
|
|
26
|
-
readonly fromAmino: (value: any) => any;
|
|
27
|
-
}
|
|
28
|
-
/** A map from protobuf type URL to the AminoConverter implementation if supported on chain */
|
|
29
|
-
export type AminoConverters = Record<string, AminoConverter | "not_supported_by_chain">;
|
|
30
|
-
/**
|
|
31
|
-
* A map from Stargate message types as used in the messages's `Any` type
|
|
32
|
-
* to Amino types.
|
|
33
|
-
*/
|
|
34
|
-
export declare class AminoTypes {
|
|
35
|
-
private readonly register;
|
|
36
|
-
constructor(types: AminoConverters);
|
|
37
|
-
toAmino({ typeUrl, value }: EncodeObject): AminoMsg;
|
|
38
|
-
fromAmino({ type, value }: AminoMsg): EncodeObject;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=cosmosTypes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosTypes.d.ts","sourceRoot":"","sources":["../../../src/ledger/cosmosTypes.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE;QACd,6BAA6B;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,6BAA6B;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;CACzC;AAED,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,wBAAwB,CAAC,CAAC;AAQxF;;;GAGG;AACH,qBAAa,UAAU;IAKrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4D;gBAEzE,KAAK,EAAE,eAAe;IAIlC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG,QAAQ;IAenD,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,YAAY;CAwBnD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getLedgerTransport.d.ts","sourceRoot":"","sources":["../../../../src/ledger/helpers/getLedgerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAwBpD,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,SAAS,CA6E5D,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type Transport from "@ledgerhq/hw-transport";
|
|
2
|
-
export type LedgerNetworkDescriptor = {
|
|
3
|
-
data: string;
|
|
4
|
-
icon?: string;
|
|
5
|
-
signature: string;
|
|
6
|
-
};
|
|
7
|
-
export declare function fetchLedgerNetworkCertificate(deviceModelId: string, fetchFn?: typeof fetch): Promise<string | null>;
|
|
8
|
-
export declare function provideLedgerCertificate(transport: Transport, payloadHex: string): Promise<void>;
|
|
9
|
-
export declare function fetchLedgerNetworkDescriptor(chainId: number, deviceModelId: string, fetchFn?: typeof fetch): Promise<LedgerNetworkDescriptor | null>;
|
|
10
|
-
export declare function encodeNetworkInfoPayload({ data, signature }: LedgerNetworkDescriptor): Buffer<ArrayBuffer>;
|
|
11
|
-
export declare function provideLedgerNetworkInformation(transport: Transport, descriptor: LedgerNetworkDescriptor): Promise<{
|
|
12
|
-
iconAccepted: boolean;
|
|
13
|
-
}>;
|
|
14
|
-
//# sourceMappingURL=ledgerNetworkInfo.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ledgerNetworkInfo.d.ts","sourceRoot":"","sources":["../../../../src/ledger/helpers/ledgerNetworkInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAyBpD,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAQzF,wBAAsB,6BAA6B,CACjD,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AAED,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAQtF;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAgBzC;AAUD,wBAAgB,wBAAwB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,uBAAuB,uBAQpF;AAUD,wBAAsB,+BAA+B,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB;;GAa9G"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type Transport from "@ledgerhq/hw-transport";
|
|
2
|
-
import { type DerivationPathArray, LedgerErrorCode } from "@swapkit/helpers";
|
|
3
|
-
export declare abstract class CosmosLedgerInterface {
|
|
4
|
-
ledgerTimeout: number;
|
|
5
|
-
derivationPath: DerivationPathArray | string;
|
|
6
|
-
transport: any;
|
|
7
|
-
ledgerApp: any;
|
|
8
|
-
chain: "thor" | "cosmos";
|
|
9
|
-
private readonly injectedTransport?;
|
|
10
|
-
constructor(transport?: Transport);
|
|
11
|
-
checkOrCreateTransportAndLedger: (forceReconnect?: boolean) => Promise<any>;
|
|
12
|
-
validateResponse: (errorCode: LedgerErrorCode, message?: string) => void;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=CosmosLedgerInterface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CosmosLedgerInterface.d.ts","sourceRoot":"","sources":["../../../../src/ledger/interfaces/CosmosLedgerInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,mBAAmB,EAAE,eAAe,EAAuC,MAAM,kBAAkB,CAAC;AAKlH,8BAAsB,qBAAqB;IACzC,aAAa,SAAS;IACtB,cAAc,EAAE,mBAAmB,GAAG,MAAM,CAA8B;IAC1E,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAU;IAElC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAY;gBAEnC,SAAS,CAAC,EAAE,SAAS;IAKjC,+BAA+B,GAAU,wBAAsB,kBA4B7D;IAEF,gBAAgB,GAAI,WAAW,eAAe,EAAE,UAAU,MAAM,UAe9D;CACH"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
export const CLA = 0x55;
|
|
2
|
-
export const CHUNK_SIZE = 250;
|
|
3
|
-
export const APP_KEY = "CSM";
|
|
4
|
-
|
|
5
|
-
export const INS = {
|
|
6
|
-
GET_ADDR_SECP256K1: 0x04,
|
|
7
|
-
GET_VERSION: 0x00,
|
|
8
|
-
INS_PUBLIC_KEY_SECP256K1: 0x01, // Obsolete
|
|
9
|
-
SIGN_SECP256K1: 0x02,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const PAYLOAD_TYPE = { ADD: 0x01, INIT: 0x00, LAST: 0x02 };
|
|
13
|
-
|
|
14
|
-
export const P1_VALUES = { ONLY_RETRIEVE: 0x00, SHOW_ADDRESS_IN_DEVICE: 0x01 };
|
|
15
|
-
|
|
16
|
-
export const P2_VALUES = { JSON: 0x0 };
|
|
17
|
-
|
|
18
|
-
export const ERROR_CODE = { NoError: 0x9000 };
|
|
19
|
-
|
|
20
|
-
const ERROR_DESCRIPTION: any = {
|
|
21
|
-
1: "U2F: Unknown",
|
|
22
|
-
2: "U2F: Bad request",
|
|
23
|
-
3: "U2F: Configuration unsupported",
|
|
24
|
-
4: "U2F: Device Ineligible",
|
|
25
|
-
5: "U2F: Timeout",
|
|
26
|
-
14: "Timeout",
|
|
27
|
-
25600: "Execution Error",
|
|
28
|
-
26368: "Wrong Length",
|
|
29
|
-
26626: "Error deriving keys",
|
|
30
|
-
27010: "Empty Buffer",
|
|
31
|
-
27011: "Output buffer too small",
|
|
32
|
-
27012: "Data is invalid",
|
|
33
|
-
27013: "Conditions not satisfied",
|
|
34
|
-
27014: "Transaction rejected",
|
|
35
|
-
27264: "Bad key handle",
|
|
36
|
-
27392: "Invalid P1/P2",
|
|
37
|
-
27904: "Instruction not supported",
|
|
38
|
-
28160: "App does not seem to be open",
|
|
39
|
-
28416: "Unknown error",
|
|
40
|
-
28417: "Sign/verify error",
|
|
41
|
-
36864: "No errors",
|
|
42
|
-
36865: "Device is busy",
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export function errorCodeToString(statusCode: number) {
|
|
46
|
-
if (statusCode in ERROR_DESCRIPTION) return ERROR_DESCRIPTION[statusCode];
|
|
47
|
-
return `Unknown Status Code: ${statusCode}`;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function isDict(v: any) {
|
|
51
|
-
return typeof v === "object" && v !== null && !Array.isArray(v) && !(v instanceof Date);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export function processErrorResponse(response: any) {
|
|
55
|
-
if (response) {
|
|
56
|
-
if (isDict(response)) {
|
|
57
|
-
if (Object.hasOwn(response, "statusCode")) {
|
|
58
|
-
return { error_message: errorCodeToString(response.statusCode), return_code: response.statusCode };
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (Object.hasOwn(response, "return_code") && Object.hasOwn(response, "error_message")) {
|
|
62
|
-
return response;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return { error_message: response.toString(), return_code: 0xffff };
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return { error_message: response.toString(), return_code: 0xffff };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export function getVersion(transport: any) {
|
|
72
|
-
return transport.send(CLA, INS.GET_VERSION, 0, 0).then((response: any) => {
|
|
73
|
-
const errorCodeData = response.slice(-2);
|
|
74
|
-
const returnCode = errorCodeData[0] * 256 + errorCodeData[1];
|
|
75
|
-
|
|
76
|
-
let targetId = 0;
|
|
77
|
-
if (response.length >= 9) {
|
|
78
|
-
targetId = (response[5] << 24) + (response[6] << 16) + (response[7] << 8) + (response[8] << 0);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return {
|
|
82
|
-
device_locked: response[4] === 1,
|
|
83
|
-
error_message: errorCodeToString(returnCode),
|
|
84
|
-
major: response[1],
|
|
85
|
-
minor: response[2],
|
|
86
|
-
patch: response[3],
|
|
87
|
-
return_code: returnCode,
|
|
88
|
-
target_id: targetId.toString(16),
|
|
89
|
-
// ///
|
|
90
|
-
test_mode: response[0] !== 0,
|
|
91
|
-
};
|
|
92
|
-
}, processErrorResponse);
|
|
93
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { SwapKitError } from "@swapkit/helpers";
|
|
2
|
-
import { CLA, ERROR_CODE, errorCodeToString, INS, P2_VALUES, PAYLOAD_TYPE, processErrorResponse } from "./common";
|
|
3
|
-
|
|
4
|
-
export function serializePathv1(path: number[]) {
|
|
5
|
-
if (path == null || path.length < 3) {
|
|
6
|
-
throw new SwapKitError("wallet_ledger_invalid_params", { reason: "Path too short" });
|
|
7
|
-
}
|
|
8
|
-
if (path.length > 10) {
|
|
9
|
-
throw new SwapKitError("wallet_ledger_invalid_params", { reason: "Path too long" });
|
|
10
|
-
}
|
|
11
|
-
const buf = Buffer.alloc(1 + 4 * path.length);
|
|
12
|
-
buf.writeUInt8(path.length, 0);
|
|
13
|
-
for (let i = 0; i < path.length; i += 1) {
|
|
14
|
-
let v = path[i] || 0;
|
|
15
|
-
if (i < 3) {
|
|
16
|
-
// eslint-disable-next-line no-bitwise
|
|
17
|
-
v |= 0x80000000; // Harden
|
|
18
|
-
}
|
|
19
|
-
buf.writeInt32LE(v, 1 + i * 4);
|
|
20
|
-
}
|
|
21
|
-
return buf;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function signSendChunkv1(app: any, chunkIdx: number, _chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {
|
|
25
|
-
return app.transport
|
|
26
|
-
.send(CLA, INS.SIGN_SECP256K1, chunkIdx, txType, chunk, [ERROR_CODE.NoError, 0x6984, 0x6a80])
|
|
27
|
-
.then((response: any) => {
|
|
28
|
-
const errorCodeData = response.slice(-2);
|
|
29
|
-
const returnCode = errorCodeData[0] * 256 + errorCodeData[1];
|
|
30
|
-
let errorMessage = errorCodeToString(returnCode);
|
|
31
|
-
|
|
32
|
-
if (returnCode === 0x6a80 || returnCode === 0x6984) {
|
|
33
|
-
errorMessage = `${errorMessage} : ${response.slice(0, response.length - 2).toString("ascii")}`;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
let signature: any = null;
|
|
37
|
-
if (response.length > 2) {
|
|
38
|
-
signature = response.slice(0, response.length - 2);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return { error_message: errorMessage, return_code: returnCode, signature };
|
|
42
|
-
}, processErrorResponse);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function compressPublicKey(publicKey: Buffer) {
|
|
46
|
-
if (publicKey.length !== 65) {
|
|
47
|
-
throw new SwapKitError("wallet_ledger_invalid_params", {
|
|
48
|
-
reason: "decompressed public key length should be 65 bytes",
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
const y = publicKey.slice(33, 65);
|
|
52
|
-
|
|
53
|
-
// @ts-expect-error
|
|
54
|
-
const z = Buffer.from([2 + (y[y.length - 1] & 1)]);
|
|
55
|
-
return Buffer.concat([z, publicKey.slice(1, 33)]);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export function publicKeyv1(app: any, data: Buffer) {
|
|
59
|
-
return app.transport
|
|
60
|
-
.send(CLA, INS.INS_PUBLIC_KEY_SECP256K1, 0, 0, data, [ERROR_CODE.NoError])
|
|
61
|
-
.then((response: any) => {
|
|
62
|
-
const errorCodeData = response.slice(-2);
|
|
63
|
-
const returnCode = errorCodeData[0] * 256 + errorCodeData[1];
|
|
64
|
-
const pk = Buffer.from(response.slice(0, 65));
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
compressed_pk: compressPublicKey(pk),
|
|
68
|
-
error_message: errorCodeToString(returnCode),
|
|
69
|
-
pk,
|
|
70
|
-
return_code: returnCode,
|
|
71
|
-
};
|
|
72
|
-
}, processErrorResponse);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export function serializePathv2(path: number[]) {
|
|
76
|
-
if (!path || path.length !== 5) {
|
|
77
|
-
throw new SwapKitError("wallet_ledger_invalid_params", { reason: "Path must be exactly 5 elements" });
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const buf = Buffer.alloc(20);
|
|
81
|
-
// @ts-expect-error
|
|
82
|
-
buf.writeUInt32LE(0x80000000 + path[0], 0);
|
|
83
|
-
// @ts-expect-error
|
|
84
|
-
buf.writeUInt32LE(0x80000000 + path[1], 4);
|
|
85
|
-
// @ts-expect-error
|
|
86
|
-
buf.writeUInt32LE(0x80000000 + path[2], 8);
|
|
87
|
-
// @ts-expect-error
|
|
88
|
-
buf.writeUInt32LE(path[3], 12);
|
|
89
|
-
// @ts-expect-error
|
|
90
|
-
buf.writeUInt32LE(path[4], 16);
|
|
91
|
-
|
|
92
|
-
return buf;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export function signSendChunkv2(app: any, chunkIdx: number, chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {
|
|
96
|
-
let payloadType = PAYLOAD_TYPE.ADD;
|
|
97
|
-
if (chunkIdx === 1) {
|
|
98
|
-
payloadType = PAYLOAD_TYPE.INIT;
|
|
99
|
-
}
|
|
100
|
-
if (chunkIdx === chunkNum) {
|
|
101
|
-
payloadType = PAYLOAD_TYPE.LAST;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return signSendChunkv1(app, payloadType, 0, chunk, txType);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export function publicKeyv2(app: any, data: Buffer) {
|
|
108
|
-
return app.transport.send(CLA, INS.GET_ADDR_SECP256K1, 0, 0, data, [ERROR_CODE.NoError]).then((response: any) => {
|
|
109
|
-
const errorCodeData = response.slice(-2);
|
|
110
|
-
const returnCode = errorCodeData[0] * 256 + errorCodeData[1];
|
|
111
|
-
const compressedPk = Buffer.from(response.slice(0, 33));
|
|
112
|
-
|
|
113
|
-
return {
|
|
114
|
-
compressed_pk: compressedPk,
|
|
115
|
-
error_message: errorCodeToString(returnCode),
|
|
116
|
-
pk: "OBSOLETE PROPERTY",
|
|
117
|
-
return_code: returnCode,
|
|
118
|
-
};
|
|
119
|
-
}, processErrorResponse);
|
|
120
|
-
}
|