@onekeyfe/hd-core 1.0.12-alpha.2 → 1.0.13
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/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddress.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetPublicKey.d.ts +2 -7
- package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts +2 -7
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts +2 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
- package/dist/api/lightning/LnurlAuth.d.ts +6 -1
- package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
- package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +2 -7
- package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
- package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
- package/dist/api/ton/TonSignMessage.d.ts +8 -0
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/api/xrp/XrpGetAddress.d.ts +5 -1
- package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
- package/dist/constants/ui-request.d.ts +1 -0
- package/dist/constants/ui-request.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +8 -1
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +44 -19
- package/dist/index.js +222 -95
- package/dist/types/api/alephiumGetAddress.d.ts +1 -0
- package/dist/types/api/alephiumGetAddress.d.ts.map +1 -1
- package/dist/types/api/allNetworkGetAddress.d.ts +9 -3
- package/dist/types/api/allNetworkGetAddress.d.ts.map +1 -1
- package/dist/types/api/aptosGetAddress.d.ts +1 -0
- package/dist/types/api/aptosGetAddress.d.ts.map +1 -1
- package/dist/types/api/aptosGetPublicKey.d.ts +2 -1
- package/dist/types/api/aptosGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/cardanoGetPublicKey.d.ts +1 -1
- package/dist/types/api/cardanoGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/cosmosGetPublicKey.d.ts +2 -1
- package/dist/types/api/cosmosGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/evmGetPublicKey.d.ts +2 -1
- package/dist/types/api/evmGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/lnurlAuth.d.ts +1 -0
- package/dist/types/api/lnurlAuth.d.ts.map +1 -1
- package/dist/types/api/nostrGetPublicKey.d.ts +2 -1
- package/dist/types/api/nostrGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/polkadotGetAddress.d.ts +2 -1
- package/dist/types/api/polkadotGetAddress.d.ts.map +1 -1
- package/dist/types/api/suiGetAddress.d.ts +1 -0
- package/dist/types/api/suiGetAddress.d.ts.map +1 -1
- package/dist/types/api/suiGetPublicKey.d.ts +2 -1
- package/dist/types/api/suiGetPublicKey.d.ts.map +1 -1
- package/dist/types/api/tonGetAddress.d.ts +2 -1
- package/dist/types/api/tonGetAddress.d.ts.map +1 -1
- package/dist/types/api/tonSignMessage.d.ts +6 -6
- package/dist/types/api/tonSignMessage.d.ts.map +1 -1
- package/dist/types/api/tonSignProof.d.ts +2 -2
- package/dist/types/api/tonSignProof.d.ts.map +1 -1
- package/dist/types/api/xrpGetAddress.d.ts +1 -0
- package/dist/types/api/xrpGetAddress.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/alephium/AlephiumGetAddress.ts +2 -1
- package/src/api/allnetwork/AllNetworkGetAddress.ts +54 -30
- package/src/api/aptos/AptosGetAddress.ts +63 -38
- package/src/api/aptos/AptosGetPublicKey.ts +9 -6
- package/src/api/cardano/CardanoGetPublicKey.ts +2 -2
- package/src/api/cosmos/CosmosGetPublicKey.ts +9 -6
- package/src/api/evm/EVMGetPublicKey.ts +4 -2
- package/src/api/lightning/LnurlAuth.ts +4 -1
- package/src/api/nostr/NostrGetPublicKey.ts +3 -1
- package/src/api/polkadot/PolkadotGetAddress.ts +2 -1
- package/src/api/sui/SuiGetAddress.ts +58 -38
- package/src/api/sui/SuiGetPublicKey.ts +9 -6
- package/src/api/ton/TonGetAddress.ts +2 -1
- package/src/api/ton/TonSignMessage.ts +91 -8
- package/src/api/ton/TonSignProof.ts +1 -1
- package/src/api/xrp/XrpGetAddress.ts +2 -1
- package/src/constants/ui-request.ts +1 -0
- package/src/data/messages/messages.json +4 -0
- package/src/events/ui-request.ts +9 -0
- package/src/types/api/alephiumGetAddress.ts +4 -0
- package/src/types/api/allNetworkGetAddress.ts +16 -4
- package/src/types/api/aptosGetAddress.ts +4 -0
- package/src/types/api/aptosGetPublicKey.ts +5 -1
- package/src/types/api/cardanoGetPublicKey.ts +1 -1
- package/src/types/api/cosmosGetPublicKey.ts +5 -1
- package/src/types/api/evmGetPublicKey.ts +5 -1
- package/src/types/api/lnurlAuth.ts +4 -0
- package/src/types/api/nostrGetPublicKey.ts +5 -1
- package/src/types/api/polkadotGetAddress.ts +5 -1
- package/src/types/api/suiGetAddress.ts +4 -0
- package/src/types/api/suiGetPublicKey.ts +5 -1
- package/src/types/api/tonGetAddress.ts +5 -1
- package/src/types/api/tonSignMessage.ts +11 -6
- package/src/types/api/tonSignProof.ts +7 -2
- package/src/types/api/xrpGetAddress.ts +4 -0
|
@@ -57,12 +57,12 @@ export default class CardanoGetPublicKey extends BaseMethod<CardanoPublicKeyPara
|
|
|
57
57
|
responses.push({
|
|
58
58
|
path: batch.address_n,
|
|
59
59
|
serializedPath: serializedPath(batch.address_n),
|
|
60
|
-
|
|
60
|
+
xpub: message.xpub,
|
|
61
61
|
node: message.node,
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
validateResult(responses, ['
|
|
65
|
+
validateResult(responses, ['xpub'], {
|
|
66
66
|
expectedLength: this.params.length,
|
|
67
67
|
});
|
|
68
68
|
|
|
@@ -2,7 +2,7 @@ import { UI_REQUEST } from '../../constants/ui-request';
|
|
|
2
2
|
import { serializedPath, validatePath } from '../helpers/pathUtils';
|
|
3
3
|
import { BaseMethod } from '../BaseMethod';
|
|
4
4
|
import { validateParams, validateResult } from '../helpers/paramsValidator';
|
|
5
|
-
import { CosmosGetPublicKeyParams } from '../../types';
|
|
5
|
+
import { CosmosAddress, CosmosGetPublicKeyParams } from '../../types';
|
|
6
6
|
|
|
7
7
|
export default class CosmosGetPublicKey extends BaseMethod<any> {
|
|
8
8
|
hasBundle = false;
|
|
@@ -64,12 +64,15 @@ export default class CosmosGetPublicKey extends BaseMethod<any> {
|
|
|
64
64
|
ecdsa_curve_name: this.params[0].curve,
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
const responses = res.message.public_keys.map(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
const responses: CosmosAddress[] = res.message.public_keys.map(
|
|
68
|
+
(publicKey: string, index: number) => ({
|
|
69
|
+
path: serializedPath((this.params as unknown as any[])[index].address_n),
|
|
70
|
+
pub: publicKey,
|
|
71
|
+
publicKey,
|
|
72
|
+
})
|
|
73
|
+
);
|
|
71
74
|
|
|
72
|
-
validateResult(responses, ['
|
|
75
|
+
validateResult(responses, ['pub'], {
|
|
73
76
|
expectedLength: this.params.length,
|
|
74
77
|
});
|
|
75
78
|
|
|
@@ -70,10 +70,11 @@ export default class EVMGetPublicKey extends BaseMethod<EthereumGetPublicKeyOneK
|
|
|
70
70
|
});
|
|
71
71
|
const result = res.message.public_keys.map((publicKey: string, index: number) => ({
|
|
72
72
|
path: serializedPath((this.params as unknown as any[])[index].address_n),
|
|
73
|
+
pub: publicKey,
|
|
73
74
|
publicKey,
|
|
74
75
|
}));
|
|
75
76
|
|
|
76
|
-
validateResult(responses, ['
|
|
77
|
+
validateResult(responses, ['pub'], {
|
|
77
78
|
expectedLength: this.params.length,
|
|
78
79
|
});
|
|
79
80
|
return Promise.resolve(result);
|
|
@@ -86,12 +87,13 @@ export default class EVMGetPublicKey extends BaseMethod<EthereumGetPublicKeyOneK
|
|
|
86
87
|
|
|
87
88
|
responses.push({
|
|
88
89
|
path: serializedPath(param.address_n),
|
|
90
|
+
pub: res.message.node.public_key,
|
|
89
91
|
publicKey: res.message.node.public_key,
|
|
90
92
|
...res.message,
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
validateResult(responses, ['
|
|
96
|
+
validateResult(responses, ['pub'], {
|
|
95
97
|
expectedLength: this.params.length,
|
|
96
98
|
});
|
|
97
99
|
|
|
@@ -60,7 +60,9 @@ export default class NostrGetPublicKey extends BaseMethod<GetPublicKey[]> {
|
|
|
60
60
|
|
|
61
61
|
const response = {
|
|
62
62
|
path: serializedPath(param.address_n),
|
|
63
|
-
|
|
63
|
+
npub: res.message.npub,
|
|
64
|
+
pub: res.message.publickey,
|
|
65
|
+
publickey: res.message.publickey,
|
|
64
66
|
};
|
|
65
67
|
|
|
66
68
|
responses.push(response);
|
|
@@ -64,6 +64,7 @@ export default class PolkadotGetAddress extends BaseMethod<HardwarePolkadotGetAd
|
|
|
64
64
|
responses.push({
|
|
65
65
|
path,
|
|
66
66
|
address,
|
|
67
|
+
pub: public_key ?? '',
|
|
67
68
|
publicKey: public_key ?? '',
|
|
68
69
|
});
|
|
69
70
|
|
|
@@ -73,7 +74,7 @@ export default class PolkadotGetAddress extends BaseMethod<HardwarePolkadotGetAd
|
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
validateResult(responses, ['address', '
|
|
77
|
+
validateResult(responses, ['address', 'pub'], {
|
|
77
78
|
expectedLength: this.params.length,
|
|
78
79
|
});
|
|
79
80
|
|
|
@@ -20,9 +20,9 @@ export default class SuiGetAddress extends BaseMethod<HardwareSuiGetAddress[]> {
|
|
|
20
20
|
this.hasBundle = !!this.payload?.bundle;
|
|
21
21
|
const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };
|
|
22
22
|
|
|
23
|
-
this.shouldConfirm =
|
|
24
|
-
|
|
25
|
-
:
|
|
23
|
+
this.shouldConfirm =
|
|
24
|
+
this.payload.showOnOneKey ||
|
|
25
|
+
this.payload.bundle?.some((i: SuiGetAddressParams) => !!i.showOnOneKey);
|
|
26
26
|
|
|
27
27
|
// check payload
|
|
28
28
|
validateParams(payload, [{ name: 'bundle', type: 'array' }]);
|
|
@@ -58,46 +58,66 @@ export default class SuiGetAddress extends BaseMethod<HardwareSuiGetAddress[]> {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
async run() {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
61
|
+
const supportsBatchPublicKey = supportBatchPublicKey(this.device?.features);
|
|
62
|
+
let responses: SuiAddress[] = [];
|
|
63
|
+
if (supportsBatchPublicKey) {
|
|
64
|
+
const publicKeyRes = await this.device.commands.typedCall(
|
|
65
|
+
'BatchGetPublickeys',
|
|
66
|
+
'EcdsaPublicKeys',
|
|
67
|
+
{
|
|
68
|
+
paths: this.params,
|
|
69
|
+
ecdsa_curve_name: 'ed25519',
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
for (let i = 0; i < this.params.length; i++) {
|
|
73
|
+
const param = this.params[i];
|
|
74
|
+
const publicKey = publicKeyRes.message.public_keys[i];
|
|
75
|
+
let address: string;
|
|
76
|
+
|
|
77
|
+
if (this.shouldConfirm) {
|
|
78
|
+
const addressRes = await this.device.commands.typedCall(
|
|
79
|
+
'SuiGetAddress',
|
|
80
|
+
'SuiAddress',
|
|
81
|
+
param
|
|
82
|
+
);
|
|
83
|
+
address = addressRes.message.address?.toLowerCase() ?? '';
|
|
84
|
+
} else {
|
|
85
|
+
address = publicKeyToAddress(publicKey);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const result: SuiAddress = {
|
|
89
|
+
path: serializedPath(param.address_n),
|
|
90
|
+
address,
|
|
91
|
+
publicKey,
|
|
92
|
+
pub: publicKey,
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
if (this.shouldConfirm) {
|
|
96
|
+
this.postPreviousAddressMessage(result);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
responses.push(result);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
responses = await Promise.all(
|
|
103
|
+
this.params.map(async param => {
|
|
104
|
+
const res = await this.device.commands.typedCall('SuiGetAddress', 'SuiAddress', param);
|
|
105
|
+
const result = {
|
|
106
|
+
path: serializedPath(param.address_n),
|
|
107
|
+
address: res.message.address?.toLowerCase() ?? '',
|
|
108
|
+
};
|
|
109
|
+
if (this.shouldConfirm) {
|
|
110
|
+
this.postPreviousAddressMessage(result);
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
})
|
|
114
|
+
);
|
|
95
115
|
}
|
|
96
116
|
|
|
97
117
|
validateResult(responses, ['address'], {
|
|
98
118
|
expectedLength: this.params.length,
|
|
99
119
|
});
|
|
100
120
|
|
|
101
|
-
return
|
|
121
|
+
return this.hasBundle ? responses : responses[0];
|
|
102
122
|
}
|
|
103
123
|
}
|
|
@@ -2,7 +2,7 @@ import { UI_REQUEST } from '../../constants/ui-request';
|
|
|
2
2
|
import { serializedPath, validatePath } from '../helpers/pathUtils';
|
|
3
3
|
import { BaseMethod } from '../BaseMethod';
|
|
4
4
|
import { validateParams, validateResult } from '../helpers/paramsValidator';
|
|
5
|
-
import { SuiGetAddressParams } from '../../types';
|
|
5
|
+
import { SuiGetAddressParams, SuiPublicKey } from '../../types';
|
|
6
6
|
|
|
7
7
|
export default class SuiGetPublicKey extends BaseMethod<any> {
|
|
8
8
|
hasBundle = false;
|
|
@@ -53,12 +53,15 @@ export default class SuiGetPublicKey extends BaseMethod<any> {
|
|
|
53
53
|
ecdsa_curve_name: 'ed25519',
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
-
const responses = res.message.public_keys.map(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
const responses: SuiPublicKey[] = res.message.public_keys.map(
|
|
57
|
+
(publicKey: string, index: number) => ({
|
|
58
|
+
path: serializedPath((this.params as unknown as any[])[index].address_n),
|
|
59
|
+
publicKey,
|
|
60
|
+
pub: publicKey,
|
|
61
|
+
})
|
|
62
|
+
);
|
|
60
63
|
|
|
61
|
-
validateResult(responses, ['
|
|
64
|
+
validateResult(responses, ['pub'], {
|
|
62
65
|
expectedLength: this.params.length,
|
|
63
66
|
});
|
|
64
67
|
|
|
@@ -76,13 +76,14 @@ export default class TonGetAddress extends BaseMethod<HardwareTonGetAddress[]> {
|
|
|
76
76
|
const result = {
|
|
77
77
|
path: serializedPath(param.address_n),
|
|
78
78
|
publicKey: public_key,
|
|
79
|
+
pub: public_key,
|
|
79
80
|
address,
|
|
80
81
|
};
|
|
81
82
|
responses.push(result);
|
|
82
83
|
this.postPreviousAddressMessage(result);
|
|
83
84
|
}
|
|
84
85
|
|
|
85
|
-
validateResult(responses, ['address', '
|
|
86
|
+
validateResult(responses, ['address', 'pub'], {
|
|
86
87
|
expectedLength: this.params.length,
|
|
87
88
|
});
|
|
88
89
|
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { TonSignMessage as HardwareTonSignMessage } from '@onekeyfe/hd-transport';
|
|
2
|
-
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
4
|
+
import { isEmpty } from 'lodash';
|
|
5
|
+
import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
3
6
|
import { UI_REQUEST } from '../../constants/ui-request';
|
|
4
7
|
import { validatePath } from '../helpers/pathUtils';
|
|
5
8
|
import { BaseMethod } from '../BaseMethod';
|
|
6
9
|
import { validateParams } from '../helpers/paramsValidator';
|
|
7
|
-
import { DeviceModelToTypes, TonSignMessageParams } from '../../types';
|
|
8
|
-
import { getDeviceType } from '../../utils';
|
|
10
|
+
import { DeviceFirmwareRange, DeviceModelToTypes, TonSignMessageParams } from '../../types';
|
|
11
|
+
import { getDeviceFirmwareVersion, getDeviceType, getMethodVersionRange } from '../../utils';
|
|
12
|
+
import { formatAnyHex, stripHexStartZeroes } from '../helpers/hexUtils';
|
|
9
13
|
|
|
10
14
|
export default class TonSignMessage extends BaseMethod<HardwareTonSignMessage> {
|
|
11
15
|
init() {
|
|
@@ -18,14 +22,14 @@ export default class TonSignMessage extends BaseMethod<HardwareTonSignMessage> {
|
|
|
18
22
|
{ name: 'destination', type: 'string' },
|
|
19
23
|
{ name: 'jettonMasterAddress', type: 'string' },
|
|
20
24
|
{ name: 'jettonWalletAddress', type: 'string' },
|
|
21
|
-
{ name: 'tonAmount'
|
|
22
|
-
{ name: 'jettonAmount'
|
|
23
|
-
{ name: 'fwdFee'
|
|
25
|
+
{ name: 'tonAmount' },
|
|
26
|
+
{ name: 'jettonAmount' },
|
|
27
|
+
{ name: 'fwdFee' },
|
|
24
28
|
{ name: 'comment', type: 'string' },
|
|
25
29
|
{ name: 'isRawData', type: 'boolean' },
|
|
26
30
|
{ name: 'mode', type: 'number' },
|
|
27
31
|
{ name: 'seqno', type: 'number' },
|
|
28
|
-
{ name: 'expireAt'
|
|
32
|
+
{ name: 'expireAt' },
|
|
29
33
|
{ name: 'walletVersion' },
|
|
30
34
|
{ name: 'walletId', type: 'number' },
|
|
31
35
|
{ name: 'workchain' },
|
|
@@ -45,7 +49,6 @@ export default class TonSignMessage extends BaseMethod<HardwareTonSignMessage> {
|
|
|
45
49
|
jetton_master_address: this.payload.jettonMasterAddress,
|
|
46
50
|
jetton_wallet_address: this.payload.jettonWalletAddress,
|
|
47
51
|
ton_amount: this.payload.tonAmount,
|
|
48
|
-
jetton_amount: this.payload.jettonAmount,
|
|
49
52
|
fwd_fee: this.payload.fwdFee,
|
|
50
53
|
comment: this.payload.comment,
|
|
51
54
|
mode: this.payload.mode,
|
|
@@ -68,10 +71,90 @@ export default class TonSignMessage extends BaseMethod<HardwareTonSignMessage> {
|
|
|
68
71
|
model_touch: {
|
|
69
72
|
min: '4.10.0',
|
|
70
73
|
},
|
|
74
|
+
classic1s: {
|
|
75
|
+
min: '3.10.0',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getSupportJettonAmountBytesVersionRange(): DeviceFirmwareRange {
|
|
81
|
+
return {
|
|
82
|
+
pro: {
|
|
83
|
+
min: '4.10.2',
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
checkSupportJettonAmountBytes() {
|
|
89
|
+
const firmwareVersion = getDeviceFirmwareVersion(this.device.features)?.join('.');
|
|
90
|
+
const versionRange = getMethodVersionRange(
|
|
91
|
+
this.device.features,
|
|
92
|
+
type => this.getSupportJettonAmountBytesVersionRange()[type]
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
if (!versionRange) {
|
|
96
|
+
// Equipment that does not need to be repaired
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (semver.valid(firmwareVersion) && semver.gte(firmwareVersion, versionRange.min)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
getFixCommentErrorVersionRange(): DeviceFirmwareRange {
|
|
107
|
+
return {
|
|
108
|
+
pro: {
|
|
109
|
+
min: '4.10.1',
|
|
110
|
+
},
|
|
71
111
|
};
|
|
72
112
|
}
|
|
73
113
|
|
|
114
|
+
checkFixCommentError() {
|
|
115
|
+
// The issue of missing comments when transferring tokens.
|
|
116
|
+
const { comment, jettonAmount } = this.payload;
|
|
117
|
+
|
|
118
|
+
if (isEmpty(comment) || jettonAmount === null || jettonAmount === undefined) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const firmwareVersion = getDeviceFirmwareVersion(this.device.features)?.join('.');
|
|
123
|
+
const versionRange = getMethodVersionRange(
|
|
124
|
+
this.device.features,
|
|
125
|
+
type => this.getFixCommentErrorVersionRange()[type]
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
if (!versionRange) {
|
|
129
|
+
// Equipment that does not need to be repaired
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (semver.valid(firmwareVersion) && semver.lt(firmwareVersion, versionRange.min)) {
|
|
134
|
+
throw ERRORS.TypedError(
|
|
135
|
+
HardwareErrorCode.CallMethodNeedUpgradeFirmware,
|
|
136
|
+
`Device firmware version is too low, please update to ${versionRange.min}`,
|
|
137
|
+
{ current: firmwareVersion, require: versionRange.min }
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
74
142
|
async run() {
|
|
143
|
+
// checkFixCommentError
|
|
144
|
+
this.checkFixCommentError();
|
|
145
|
+
|
|
146
|
+
// check jettonAmount
|
|
147
|
+
const { jettonAmount } = this.payload;
|
|
148
|
+
if (jettonAmount) {
|
|
149
|
+
if (this.checkSupportJettonAmountBytes()) {
|
|
150
|
+
this.params.jetton_amount_bytes = stripHexStartZeroes(
|
|
151
|
+
formatAnyHex(new BigNumber(jettonAmount).toString(16))
|
|
152
|
+
);
|
|
153
|
+
} else {
|
|
154
|
+
this.params.jetton_amount = jettonAmount;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
75
158
|
const deviceType = getDeviceType(this.device.features);
|
|
76
159
|
const res = await this.device.commands.typedCall('TonSignMessage', 'TonSignedMessage', {
|
|
77
160
|
...this.params,
|
|
@@ -16,7 +16,7 @@ export default class TonSignProof extends BaseMethod<HardwareTonSignProof> {
|
|
|
16
16
|
{ name: 'path', required: true },
|
|
17
17
|
{ name: 'appdomain', type: 'string' },
|
|
18
18
|
{ name: 'comment', type: 'string' },
|
|
19
|
-
{ name: 'expireAt'
|
|
19
|
+
{ name: 'expireAt' },
|
|
20
20
|
{ name: 'walletVersion' },
|
|
21
21
|
{ name: 'walletId', type: 'number' },
|
|
22
22
|
{ name: 'workchain' },
|
|
@@ -97,6 +97,7 @@ export default class XrpGetAddress extends BaseMethod<
|
|
|
97
97
|
path,
|
|
98
98
|
address,
|
|
99
99
|
publicKey: publicKey.message?.public_keys?.[0],
|
|
100
|
+
pub: publicKey.message?.public_keys?.[0],
|
|
100
101
|
});
|
|
101
102
|
|
|
102
103
|
this.postPreviousAddressMessage({
|
|
@@ -105,7 +106,7 @@ export default class XrpGetAddress extends BaseMethod<
|
|
|
105
106
|
});
|
|
106
107
|
}
|
|
107
108
|
|
|
108
|
-
validateResult(responses, ['address', '
|
|
109
|
+
validateResult(responses, ['address', 'pub'], {
|
|
109
110
|
expectedLength: this.params.length,
|
|
110
111
|
});
|
|
111
112
|
|
|
@@ -10628,6 +10628,10 @@
|
|
|
10628
10628
|
"rule": "repeated",
|
|
10629
10629
|
"type": "string",
|
|
10630
10630
|
"id": 20
|
|
10631
|
+
},
|
|
10632
|
+
"jetton_amount_bytes": {
|
|
10633
|
+
"type": "bytes",
|
|
10634
|
+
"id": 21
|
|
10631
10635
|
}
|
|
10632
10636
|
}
|
|
10633
10637
|
},
|
package/src/events/ui-request.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const UI_REQUEST = {
|
|
|
13
13
|
REQUEST_PASSPHRASE_ON_DEVICE: 'ui-request_passphrase_on_device',
|
|
14
14
|
|
|
15
15
|
CLOSE_UI_WINDOW: 'ui-close_window',
|
|
16
|
+
DEVICE_PROGRESS: 'ui-device_progress',
|
|
16
17
|
|
|
17
18
|
BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
|
|
18
19
|
BLUETOOTH_CHARACTERISTIC_NOTIFY_CHANGE_FAILURE:
|
|
@@ -81,6 +82,13 @@ export interface FirmwareTip {
|
|
|
81
82
|
};
|
|
82
83
|
}
|
|
83
84
|
|
|
85
|
+
export interface DeviceProgress {
|
|
86
|
+
type: typeof UI_REQUEST.DEVICE_PROGRESS;
|
|
87
|
+
payload: {
|
|
88
|
+
progress?: number;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
84
92
|
export interface PreviousAddressResult {
|
|
85
93
|
type: typeof UI_REQUEST.PREVIOUS_ADDRESS_RESULT;
|
|
86
94
|
payload: {
|
|
@@ -100,6 +108,7 @@ export type UiEvent =
|
|
|
100
108
|
| UiRequestPassphrase
|
|
101
109
|
| FirmwareProgress
|
|
102
110
|
| FirmwareTip
|
|
111
|
+
| DeviceProgress
|
|
103
112
|
| PreviousAddressResult;
|
|
104
113
|
|
|
105
114
|
export type UiEventMessage = UiEvent & { event: typeof UI_EVENT };
|
|
@@ -46,13 +46,19 @@ export type AllNetworkAddressParams = {
|
|
|
46
46
|
chainName?: string;
|
|
47
47
|
prefix?: string;
|
|
48
48
|
showOnOneKey?: boolean;
|
|
49
|
+
|
|
50
|
+
includePublicKey?: boolean;
|
|
51
|
+
group?: string;
|
|
49
52
|
};
|
|
50
53
|
|
|
51
54
|
type AllNetworkAddressPayload =
|
|
52
55
|
| {
|
|
53
56
|
address: string;
|
|
54
|
-
publicKey?: string;
|
|
55
57
|
pub?: string;
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated Use `pub` instead.
|
|
60
|
+
*/
|
|
61
|
+
publicKey?: string;
|
|
56
62
|
// Nostr public key (bech32)
|
|
57
63
|
npub?: string;
|
|
58
64
|
}
|
|
@@ -84,8 +90,14 @@ type AllNetworkAddressPayload =
|
|
|
84
90
|
|
|
85
91
|
export type AllNetworkAddress = CommonResponseParams & {
|
|
86
92
|
success: boolean;
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
payload?:
|
|
94
|
+
| AllNetworkAddressPayload
|
|
95
|
+
| {
|
|
96
|
+
error: string;
|
|
97
|
+
code: number;
|
|
98
|
+
connectId: string;
|
|
99
|
+
deviceId: string;
|
|
100
|
+
};
|
|
89
101
|
};
|
|
90
102
|
|
|
91
103
|
export type AllNetworkGetAddressParams = {
|
|
@@ -95,5 +107,5 @@ export type AllNetworkGetAddressParams = {
|
|
|
95
107
|
export declare function allNetworkGetAddress(
|
|
96
108
|
connectId: string,
|
|
97
109
|
deviceId: string,
|
|
98
|
-
params: CommonParams & AllNetworkGetAddressParams
|
|
110
|
+
params: CommonParams & AllNetworkGetAddressParams,
|
|
99
111
|
): Response<AllNetworkAddress[]>;
|
|
@@ -2,7 +2,11 @@ import type { CommonParams, Response } from '../params';
|
|
|
2
2
|
|
|
3
3
|
export type AptosPublicKey = {
|
|
4
4
|
path: string;
|
|
5
|
-
|
|
5
|
+
pub: string;
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Use `pub` instead.
|
|
8
|
+
*/
|
|
9
|
+
publicKey?: string;
|
|
6
10
|
};
|
|
7
11
|
|
|
8
12
|
export type AptosGetPublicKeyParams = {
|
|
@@ -2,7 +2,11 @@ import type { CommonParams, Response } from '../params';
|
|
|
2
2
|
|
|
3
3
|
export type CosmosPublicKey = {
|
|
4
4
|
path: string;
|
|
5
|
-
|
|
5
|
+
pub: string;
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Use `pub` instead.
|
|
8
|
+
*/
|
|
9
|
+
publicKey?: string;
|
|
6
10
|
};
|
|
7
11
|
|
|
8
12
|
export type CosmosGetPublicKeyParams = {
|
|
@@ -3,7 +3,11 @@ import type { CommonParams, Response } from '../params';
|
|
|
3
3
|
|
|
4
4
|
export type EVMPublicKey = {
|
|
5
5
|
path: string;
|
|
6
|
-
|
|
6
|
+
pub: string;
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Use `pub` instead.
|
|
9
|
+
*/
|
|
10
|
+
publicKey?: string;
|
|
7
11
|
} & EthereumPublicKey;
|
|
8
12
|
|
|
9
13
|
export type EVMGetPublicKeyParams = {
|
|
@@ -3,7 +3,11 @@ import type { CommonParams, Response } from '../params';
|
|
|
3
3
|
|
|
4
4
|
export type PolkadotAddress = {
|
|
5
5
|
path: string;
|
|
6
|
-
|
|
6
|
+
pub: string;
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Use `pub` instead.
|
|
9
|
+
*/
|
|
10
|
+
publicKey?: string;
|
|
7
11
|
} & HardwarePolkadotAddress;
|
|
8
12
|
|
|
9
13
|
export type PolkadotGetAddressParams = {
|