@onekeyfe/hd-web-sdk 0.0.6 → 0.0.9
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/build/data/version.ts +1 -1
- package/build/iframe.html +1 -1
- package/build/js/iframe.1a13e0dba05bc9240b0d.js +3 -0
- package/build/js/{iframe.13ee8a5c642bac0a8ede.js.LICENSE.txt → iframe.1a13e0dba05bc9240b0d.js.LICENSE.txt} +0 -0
- package/build/js/iframe.1a13e0dba05bc9240b0d.js.map +1 -0
- package/build/onekey-js-sdk.js +1056 -75
- package/build/onekey-js-sdk.js.map +1 -1
- package/build/onekey-js-sdk.min.js +1 -1
- package/build/onekey-js-sdk.min.js.map +1 -1
- package/package.json +4 -4
- package/build/js/iframe.13ee8a5c642bac0a8ede.js +0 -3
- package/build/js/iframe.13ee8a5c642bac0a8ede.js.map +0 -1
package/build/onekey-js-sdk.js
CHANGED
|
@@ -4023,12 +4023,12 @@ __webpack_unused_export__ = ({
|
|
|
4023
4023
|
value: true
|
|
4024
4024
|
});
|
|
4025
4025
|
|
|
4026
|
+
var semver = __webpack_require__(7699);
|
|
4027
|
+
|
|
4026
4028
|
var hdTransport = __webpack_require__(7495);
|
|
4027
4029
|
|
|
4028
4030
|
var axios = __webpack_require__(9644);
|
|
4029
4031
|
|
|
4030
|
-
var semver = __webpack_require__(7699);
|
|
4031
|
-
|
|
4032
4032
|
var BigNumber = __webpack_require__(6391);
|
|
4033
4033
|
|
|
4034
4034
|
function _interopDefaultLegacy(e) {
|
|
@@ -4037,10 +4037,10 @@ function _interopDefaultLegacy(e) {
|
|
|
4037
4037
|
};
|
|
4038
4038
|
}
|
|
4039
4039
|
|
|
4040
|
-
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
4041
|
-
|
|
4042
4040
|
var semver__default = /*#__PURE__*/_interopDefaultLegacy(semver);
|
|
4043
4041
|
|
|
4042
|
+
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
4043
|
+
|
|
4044
4044
|
var BigNumber__default = /*#__PURE__*/_interopDefaultLegacy(BigNumber);
|
|
4045
4045
|
|
|
4046
4046
|
const inject = ({
|
|
@@ -4084,6 +4084,10 @@ const inject = ({
|
|
|
4084
4084
|
checkTransportRelease: () => call({
|
|
4085
4085
|
method: 'checkTransportRelease'
|
|
4086
4086
|
}),
|
|
4087
|
+
cipherKeyValue: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4088
|
+
connectId,
|
|
4089
|
+
method: 'cipherKeyValue'
|
|
4090
|
+
})),
|
|
4087
4091
|
deviceBackup: connectId => call({
|
|
4088
4092
|
connectId,
|
|
4089
4093
|
method: 'deviceBackup'
|
|
@@ -4187,6 +4191,30 @@ const inject = ({
|
|
|
4187
4191
|
starcoinVerifyMessage: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4188
4192
|
connectId,
|
|
4189
4193
|
method: 'starcoinVerifyMessage'
|
|
4194
|
+
})),
|
|
4195
|
+
nemGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4196
|
+
connectId,
|
|
4197
|
+
method: 'nemGetAddress'
|
|
4198
|
+
})),
|
|
4199
|
+
nemSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4200
|
+
connectId,
|
|
4201
|
+
method: 'nemSignTransaction'
|
|
4202
|
+
})),
|
|
4203
|
+
solGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4204
|
+
connectId,
|
|
4205
|
+
method: 'solGetAddress'
|
|
4206
|
+
})),
|
|
4207
|
+
solSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4208
|
+
connectId,
|
|
4209
|
+
method: 'solSignTransaction'
|
|
4210
|
+
})),
|
|
4211
|
+
stellarGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4212
|
+
connectId,
|
|
4213
|
+
method: 'stellarGetAddress'
|
|
4214
|
+
})),
|
|
4215
|
+
stellarSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), {
|
|
4216
|
+
connectId,
|
|
4217
|
+
method: 'stellarSignTransaction'
|
|
4190
4218
|
}))
|
|
4191
4219
|
};
|
|
4192
4220
|
return api;
|
|
@@ -4207,6 +4235,17 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
4207
4235
|
***************************************************************************** */
|
|
4208
4236
|
|
|
4209
4237
|
|
|
4238
|
+
function __rest(s, e) {
|
|
4239
|
+
var t = {};
|
|
4240
|
+
|
|
4241
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
4242
|
+
|
|
4243
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
4244
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
4245
|
+
}
|
|
4246
|
+
return t;
|
|
4247
|
+
}
|
|
4248
|
+
|
|
4210
4249
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
4211
4250
|
function adopt(value) {
|
|
4212
4251
|
return value instanceof P ? value : new P(function (resolve) {
|
|
@@ -4998,6 +5037,18 @@ function create(arg, data) {
|
|
|
4998
5037
|
};
|
|
4999
5038
|
}
|
|
5000
5039
|
|
|
5040
|
+
const getDeviceModel = features => {
|
|
5041
|
+
if (!features || typeof features !== 'object') {
|
|
5042
|
+
return 'model_mini';
|
|
5043
|
+
}
|
|
5044
|
+
|
|
5045
|
+
if (features.model === '1') {
|
|
5046
|
+
return 'model_mini';
|
|
5047
|
+
}
|
|
5048
|
+
|
|
5049
|
+
return 'model_touch';
|
|
5050
|
+
};
|
|
5051
|
+
|
|
5001
5052
|
const getDeviceType = features => {
|
|
5002
5053
|
if (!features || typeof features !== 'object' || !features.serial_no) {
|
|
5003
5054
|
return 'classic';
|
|
@@ -5006,6 +5057,24 @@ const getDeviceType = features => {
|
|
|
5006
5057
|
const serialNo = features.serial_no;
|
|
5007
5058
|
const miniFlag = serialNo.slice(0, 2);
|
|
5008
5059
|
if (miniFlag.toLowerCase() === 'mi') return 'mini';
|
|
5060
|
+
if (miniFlag.toLowerCase() === 'tc') return 'touch';
|
|
5061
|
+
return 'classic';
|
|
5062
|
+
};
|
|
5063
|
+
|
|
5064
|
+
const getDeviceTypeByBleName = name => {
|
|
5065
|
+
if (!name) return 'classic';
|
|
5066
|
+
if (name.startsWith('MI')) return 'mini';
|
|
5067
|
+
if (name.startsWith('T')) return 'touch';
|
|
5068
|
+
return 'classic';
|
|
5069
|
+
};
|
|
5070
|
+
|
|
5071
|
+
const getDeviceTypeByDeviceId = deviceId => {
|
|
5072
|
+
if (!deviceId) {
|
|
5073
|
+
return 'classic';
|
|
5074
|
+
}
|
|
5075
|
+
|
|
5076
|
+
const miniFlag = deviceId.slice(0, 2);
|
|
5077
|
+
if (miniFlag.toLowerCase() === 'mi') return 'mini';
|
|
5009
5078
|
return 'classic';
|
|
5010
5079
|
};
|
|
5011
5080
|
|
|
@@ -5030,6 +5099,8 @@ const getDeviceLabel = features => {
|
|
|
5030
5099
|
};
|
|
5031
5100
|
|
|
5032
5101
|
const getDeviceFirmwareVersion = features => {
|
|
5102
|
+
if (!features) return [0, 0, 0];
|
|
5103
|
+
|
|
5033
5104
|
if (features.onekey_version) {
|
|
5034
5105
|
return features.onekey_version.split('.');
|
|
5035
5106
|
}
|
|
@@ -14295,7 +14366,7 @@ const UI_REQUEST = {
|
|
|
14295
14366
|
NOT_USE_ONEKEY_DEVICE: 'ui-device_please_use_onekey_device'
|
|
14296
14367
|
};
|
|
14297
14368
|
const VERSION = '1.0.0-alpha.1';
|
|
14298
|
-
const DEFAULT_DOMAIN = `https://
|
|
14369
|
+
const DEFAULT_DOMAIN = `https://hardware-sdk.onekey.so/`;
|
|
14299
14370
|
const DEFAULT_PRIORITY = 2;
|
|
14300
14371
|
const initialSettings = {
|
|
14301
14372
|
configSrc: './data/config.json',
|
|
@@ -14811,6 +14882,10 @@ class BaseMethod {
|
|
|
14811
14882
|
this.requireDeviceMode = [];
|
|
14812
14883
|
}
|
|
14813
14884
|
|
|
14885
|
+
getVersionRange() {
|
|
14886
|
+
return {};
|
|
14887
|
+
}
|
|
14888
|
+
|
|
14814
14889
|
setDevice(device) {
|
|
14815
14890
|
this.device = device;
|
|
14816
14891
|
this.connectId = device.originalDescriptor.path;
|
|
@@ -14837,10 +14912,14 @@ class SearchDevices extends BaseMethod {
|
|
|
14837
14912
|
const env = DataManager.getSettings('env');
|
|
14838
14913
|
|
|
14839
14914
|
if (env === 'react-native') {
|
|
14840
|
-
return devicesDescriptor.map(device =>
|
|
14841
|
-
|
|
14842
|
-
|
|
14843
|
-
|
|
14915
|
+
return devicesDescriptor.map(device => {
|
|
14916
|
+
var _a;
|
|
14917
|
+
|
|
14918
|
+
return Object.assign(Object.assign({}, device), {
|
|
14919
|
+
connectId: device.id,
|
|
14920
|
+
deviceType: getDeviceTypeByBleName((_a = device.name) !== null && _a !== void 0 ? _a : '')
|
|
14921
|
+
});
|
|
14922
|
+
});
|
|
14844
14923
|
}
|
|
14845
14924
|
|
|
14846
14925
|
const devices = [];
|
|
@@ -14931,7 +15010,6 @@ const formatAnyHex = value => {
|
|
|
14931
15010
|
return modifyValues(value, value => formatAnyHex(value));
|
|
14932
15011
|
}
|
|
14933
15012
|
|
|
14934
|
-
console.log('unexpected value', value);
|
|
14935
15013
|
return value;
|
|
14936
15014
|
};
|
|
14937
15015
|
|
|
@@ -15000,6 +15078,79 @@ const validateParams = (values, fields) => {
|
|
|
15000
15078
|
});
|
|
15001
15079
|
};
|
|
15002
15080
|
|
|
15081
|
+
class CipherKeyValue extends BaseMethod {
|
|
15082
|
+
constructor() {
|
|
15083
|
+
super(...arguments);
|
|
15084
|
+
this.hasBundle = false;
|
|
15085
|
+
}
|
|
15086
|
+
|
|
15087
|
+
init() {
|
|
15088
|
+
var _a;
|
|
15089
|
+
|
|
15090
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
15091
|
+
this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);
|
|
15092
|
+
const payload = this.hasBundle ? this.payload : {
|
|
15093
|
+
bundle: [this.payload]
|
|
15094
|
+
};
|
|
15095
|
+
validateParams(payload, [{
|
|
15096
|
+
name: 'bundle',
|
|
15097
|
+
type: 'array'
|
|
15098
|
+
}]);
|
|
15099
|
+
this.params = [];
|
|
15100
|
+
payload.bundle.forEach(batch => {
|
|
15101
|
+
const addressN = validatePath(batch.path);
|
|
15102
|
+
validateParams(batch, [{
|
|
15103
|
+
name: 'path',
|
|
15104
|
+
required: true
|
|
15105
|
+
}, {
|
|
15106
|
+
name: 'key',
|
|
15107
|
+
type: 'string'
|
|
15108
|
+
}, {
|
|
15109
|
+
name: 'value',
|
|
15110
|
+
type: 'hexString'
|
|
15111
|
+
}, {
|
|
15112
|
+
name: 'encrypt',
|
|
15113
|
+
type: 'boolean'
|
|
15114
|
+
}, {
|
|
15115
|
+
name: 'askOnEncrypt',
|
|
15116
|
+
type: 'boolean'
|
|
15117
|
+
}, {
|
|
15118
|
+
name: 'askOnDecrypt',
|
|
15119
|
+
type: 'boolean'
|
|
15120
|
+
}, {
|
|
15121
|
+
name: 'iv',
|
|
15122
|
+
type: 'hexString'
|
|
15123
|
+
}]);
|
|
15124
|
+
this.params.push({
|
|
15125
|
+
address_n: addressN,
|
|
15126
|
+
key: batch.key,
|
|
15127
|
+
value: formatAnyHex(batch.value),
|
|
15128
|
+
encrypt: batch.encrypt,
|
|
15129
|
+
ask_on_encrypt: batch.askOnEncrypt,
|
|
15130
|
+
ask_on_decrypt: batch.askOnDecrypt,
|
|
15131
|
+
iv: formatAnyHex(batch.iv)
|
|
15132
|
+
});
|
|
15133
|
+
});
|
|
15134
|
+
}
|
|
15135
|
+
|
|
15136
|
+
run() {
|
|
15137
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15138
|
+
const responses = [];
|
|
15139
|
+
|
|
15140
|
+
for (let i = 0; i < this.params.length; i++) {
|
|
15141
|
+
const param = this.params[i];
|
|
15142
|
+
const res = yield this.device.commands.typedCall('CipherKeyValue', 'CipheredKeyValue', Object.assign({}, param));
|
|
15143
|
+
responses.push(Object.assign({
|
|
15144
|
+
path: serializedPath(param.address_n)
|
|
15145
|
+
}, res.message));
|
|
15146
|
+
}
|
|
15147
|
+
|
|
15148
|
+
return Promise.resolve(this.hasBundle ? responses : responses[0]);
|
|
15149
|
+
});
|
|
15150
|
+
}
|
|
15151
|
+
|
|
15152
|
+
}
|
|
15153
|
+
|
|
15003
15154
|
var bitcoin = [{
|
|
15004
15155
|
name: "Bitcoin",
|
|
15005
15156
|
label: "BTC",
|
|
@@ -16165,6 +16316,17 @@ class DeviceFlags extends BaseMethod {
|
|
|
16165
16316
|
class DeviceRebootToBootloader extends BaseMethod {
|
|
16166
16317
|
init() {}
|
|
16167
16318
|
|
|
16319
|
+
getVersionRange() {
|
|
16320
|
+
return {
|
|
16321
|
+
classic: {
|
|
16322
|
+
min: '2.1.11'
|
|
16323
|
+
},
|
|
16324
|
+
mini: {
|
|
16325
|
+
min: '2.1.11'
|
|
16326
|
+
}
|
|
16327
|
+
};
|
|
16328
|
+
}
|
|
16329
|
+
|
|
16168
16330
|
run() {
|
|
16169
16331
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16170
16332
|
const res = yield this.device.commands.typedCall('RebootToBootloader', 'Success');
|
|
@@ -16509,7 +16671,7 @@ class EVMSignMessage$2 extends BaseMethod {
|
|
|
16509
16671
|
|
|
16510
16672
|
}
|
|
16511
16673
|
|
|
16512
|
-
class EVMSignMessageEIP712
|
|
16674
|
+
class EVMSignMessageEIP712 extends BaseMethod {
|
|
16513
16675
|
init() {
|
|
16514
16676
|
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
16515
16677
|
validateParams(this.payload, [{
|
|
@@ -16537,6 +16699,14 @@ class EVMSignMessageEIP712$1 extends BaseMethod {
|
|
|
16537
16699
|
};
|
|
16538
16700
|
}
|
|
16539
16701
|
|
|
16702
|
+
getVersionRange() {
|
|
16703
|
+
return {
|
|
16704
|
+
model_mini: {
|
|
16705
|
+
min: '2.1.9'
|
|
16706
|
+
}
|
|
16707
|
+
};
|
|
16708
|
+
}
|
|
16709
|
+
|
|
16540
16710
|
run() {
|
|
16541
16711
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16542
16712
|
const res = yield this.device.commands.typedCall('EthereumSignMessageEIP712', 'EthereumMessageSignature', Object.assign({}, this.params));
|
|
@@ -16734,6 +16904,22 @@ class EVMSignTransaction extends BaseMethod {
|
|
|
16734
16904
|
this.formattedTx = formatAnyHex(tx);
|
|
16735
16905
|
}
|
|
16736
16906
|
|
|
16907
|
+
getVersionRange() {
|
|
16908
|
+
if (this.isEIP1559) {
|
|
16909
|
+
return {
|
|
16910
|
+
model_mini: {
|
|
16911
|
+
min: '2.1.11'
|
|
16912
|
+
}
|
|
16913
|
+
};
|
|
16914
|
+
}
|
|
16915
|
+
|
|
16916
|
+
return {
|
|
16917
|
+
model_mini: {
|
|
16918
|
+
min: '1.0.0'
|
|
16919
|
+
}
|
|
16920
|
+
};
|
|
16921
|
+
}
|
|
16922
|
+
|
|
16737
16923
|
run() {
|
|
16738
16924
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16739
16925
|
const {
|
|
@@ -16748,7 +16934,7 @@ class EVMSignTransaction extends BaseMethod {
|
|
|
16748
16934
|
|
|
16749
16935
|
}
|
|
16750
16936
|
|
|
16751
|
-
class
|
|
16937
|
+
class EVMSignTypedData extends BaseMethod {
|
|
16752
16938
|
init() {
|
|
16753
16939
|
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
16754
16940
|
validateParams(this.payload, [{
|
|
@@ -16756,12 +16942,10 @@ class EVMSignMessageEIP712 extends BaseMethod {
|
|
|
16756
16942
|
required: true
|
|
16757
16943
|
}, {
|
|
16758
16944
|
name: 'metamaskV4Compat',
|
|
16759
|
-
type: 'boolean'
|
|
16760
|
-
required: true
|
|
16945
|
+
type: 'boolean'
|
|
16761
16946
|
}, {
|
|
16762
16947
|
name: 'data',
|
|
16763
|
-
type: 'object'
|
|
16764
|
-
required: true
|
|
16948
|
+
type: 'object'
|
|
16765
16949
|
}, {
|
|
16766
16950
|
name: 'domainHash',
|
|
16767
16951
|
type: 'hexString'
|
|
@@ -16788,12 +16972,35 @@ class EVMSignMessageEIP712 extends BaseMethod {
|
|
|
16788
16972
|
|
|
16789
16973
|
if (messageHash) {
|
|
16790
16974
|
this.params.messageHash = formatAnyHex(messageHash);
|
|
16791
|
-
} else if (!data.primaryType || data.primaryType !== 'EIP712Domain') {
|
|
16975
|
+
} else if (!!data && (!data.primaryType || data.primaryType !== 'EIP712Domain')) {
|
|
16792
16976
|
throw TypedError('Method_InvalidParameter', 'message_hash should only be empty when data.primaryType=EIP712Domain');
|
|
16793
16977
|
}
|
|
16794
16978
|
}
|
|
16795
16979
|
}
|
|
16796
16980
|
|
|
16981
|
+
getVersionRange() {
|
|
16982
|
+
return {
|
|
16983
|
+
model_mini: {
|
|
16984
|
+
min: '2.1.9'
|
|
16985
|
+
}
|
|
16986
|
+
};
|
|
16987
|
+
}
|
|
16988
|
+
|
|
16989
|
+
supportSignTyped() {
|
|
16990
|
+
const deviceType = getDeviceType(this.device.features);
|
|
16991
|
+
|
|
16992
|
+
if (deviceType === 'classic' || deviceType === 'mini') {
|
|
16993
|
+
const currentVersion = getDeviceFirmwareVersion(this.device.features).join('.');
|
|
16994
|
+
const supportSignTypedVersion = '2.2.0';
|
|
16995
|
+
|
|
16996
|
+
if (semver__default["default"].lt(currentVersion, supportSignTypedVersion)) {
|
|
16997
|
+
return false;
|
|
16998
|
+
}
|
|
16999
|
+
}
|
|
17000
|
+
|
|
17001
|
+
return true;
|
|
17002
|
+
}
|
|
17003
|
+
|
|
16797
17004
|
run() {
|
|
16798
17005
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16799
17006
|
if (!this.device.features) {
|
|
@@ -16803,25 +17010,38 @@ class EVMSignMessageEIP712 extends BaseMethod {
|
|
|
16803
17010
|
const {
|
|
16804
17011
|
addressN
|
|
16805
17012
|
} = this.params;
|
|
17013
|
+
const deviceType = getDeviceType(this.device.features);
|
|
16806
17014
|
|
|
16807
|
-
if (
|
|
17015
|
+
if (deviceType === 'classic' || deviceType === 'mini') {
|
|
16808
17016
|
validateParams(this.params, [{
|
|
16809
17017
|
name: 'domainHash',
|
|
16810
17018
|
type: 'hexString',
|
|
16811
17019
|
required: true
|
|
16812
17020
|
}, {
|
|
16813
17021
|
name: 'messageHash',
|
|
16814
|
-
type: 'hexString'
|
|
17022
|
+
type: 'hexString',
|
|
17023
|
+
required: true
|
|
16815
17024
|
}]);
|
|
16816
17025
|
const {
|
|
16817
17026
|
domainHash,
|
|
16818
17027
|
messageHash
|
|
16819
17028
|
} = this.params;
|
|
16820
|
-
|
|
16821
|
-
|
|
16822
|
-
|
|
16823
|
-
|
|
16824
|
-
|
|
17029
|
+
let response;
|
|
17030
|
+
|
|
17031
|
+
if (this.supportSignTyped()) {
|
|
17032
|
+
response = yield this.device.commands.typedCall('EthereumSignTypedHash', 'EthereumTypedDataSignature', {
|
|
17033
|
+
address_n: addressN,
|
|
17034
|
+
domain_separator_hash: domainHash !== null && domainHash !== void 0 ? domainHash : '',
|
|
17035
|
+
message_hash: messageHash
|
|
17036
|
+
});
|
|
17037
|
+
} else {
|
|
17038
|
+
response = yield this.device.commands.typedCall('EthereumSignMessageEIP712', 'EthereumMessageSignature', {
|
|
17039
|
+
address_n: addressN,
|
|
17040
|
+
domain_hash: domainHash !== null && domainHash !== void 0 ? domainHash : '',
|
|
17041
|
+
message_hash: messageHash !== null && messageHash !== void 0 ? messageHash : ''
|
|
17042
|
+
});
|
|
17043
|
+
}
|
|
17044
|
+
|
|
16825
17045
|
return Promise.resolve(response.message);
|
|
16826
17046
|
}
|
|
16827
17047
|
|
|
@@ -17079,64 +17299,794 @@ class EVMSignMessage extends BaseMethod {
|
|
|
17079
17299
|
|
|
17080
17300
|
}
|
|
17081
17301
|
|
|
17082
|
-
|
|
17083
|
-
__proto__: null,
|
|
17084
|
-
searchDevices: SearchDevices,
|
|
17085
|
-
getFeatures: GetFeatures,
|
|
17086
|
-
btcGetAddress: BTCGetAddress,
|
|
17087
|
-
btcGetPublicKey: BTCGetPublicKey,
|
|
17088
|
-
btcSignMessage: BTCSignMessage,
|
|
17089
|
-
btcSignTransaction: BTCSignTransaction,
|
|
17090
|
-
btcVerifyMessage: BTCVerifyMessage,
|
|
17091
|
-
checkFirmwareRelease: CheckFirmwareRelease,
|
|
17092
|
-
checkBLEFirmwareRelease: CheckBLEFirmwareRelease,
|
|
17093
|
-
checkTransportRelease: CheckTransportRelease,
|
|
17094
|
-
deviceBackup: DeviceBackup,
|
|
17095
|
-
deviceChangePin: DeviceChangePin,
|
|
17096
|
-
deviceFlags: DeviceFlags,
|
|
17097
|
-
deviceRebootToBootloader: DeviceRebootToBootloader,
|
|
17098
|
-
deviceRecovery: DeviceRecovery,
|
|
17099
|
-
deviceReset: DeviceReset,
|
|
17100
|
-
deviceSettings: DeviceSettings,
|
|
17101
|
-
deviceUpdateReboot: DeviceUpdateReboot,
|
|
17102
|
-
deviceWipe: DeviceWipe,
|
|
17103
|
-
evmGetAddress: EvmGetAddress,
|
|
17104
|
-
evmGetPublicKey: EVMGetPublicKey,
|
|
17105
|
-
evmSignMessage: EVMSignMessage$2,
|
|
17106
|
-
evmSignMessageEIP712: EVMSignMessageEIP712$1,
|
|
17107
|
-
evmSignTransaction: EVMSignTransaction,
|
|
17108
|
-
evmSignTypedData: EVMSignMessageEIP712,
|
|
17109
|
-
evmVerifyMessage: EVMSignMessage$1,
|
|
17110
|
-
starcoinGetAddress: StarcoinGetAddress,
|
|
17111
|
-
starcoinGetPublicKey: StarcoinGetPublicKey,
|
|
17112
|
-
starcoinSignMessage: StarcoinSignMessage,
|
|
17113
|
-
starcoinSignTransaction: StarcoinSignTransaction,
|
|
17114
|
-
starcoinVerifyMessage: EVMSignMessage
|
|
17115
|
-
});
|
|
17302
|
+
const MAINNET = 0x68;
|
|
17116
17303
|
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
|
|
17120
|
-
|
|
17304
|
+
class NEMGetAddress extends BaseMethod {
|
|
17305
|
+
constructor() {
|
|
17306
|
+
super(...arguments);
|
|
17307
|
+
this.hasBundle = false;
|
|
17308
|
+
}
|
|
17121
17309
|
|
|
17122
|
-
|
|
17123
|
-
|
|
17310
|
+
init() {
|
|
17311
|
+
var _a;
|
|
17312
|
+
|
|
17313
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
17314
|
+
this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);
|
|
17315
|
+
const payload = this.hasBundle ? this.payload : {
|
|
17316
|
+
bundle: [this.payload]
|
|
17317
|
+
};
|
|
17318
|
+
validateParams(payload, [{
|
|
17319
|
+
name: 'bundle',
|
|
17320
|
+
type: 'array'
|
|
17321
|
+
}]);
|
|
17322
|
+
this.params = [];
|
|
17323
|
+
payload.bundle.forEach(batch => {
|
|
17324
|
+
var _a;
|
|
17325
|
+
|
|
17326
|
+
const addressN = validatePath(batch.path, 3);
|
|
17327
|
+
validateParams(batch, [{
|
|
17328
|
+
name: 'path',
|
|
17329
|
+
required: true
|
|
17330
|
+
}, {
|
|
17331
|
+
name: 'network',
|
|
17332
|
+
type: 'number'
|
|
17333
|
+
}, {
|
|
17334
|
+
name: 'showOnOneKey',
|
|
17335
|
+
type: 'boolean'
|
|
17336
|
+
}]);
|
|
17337
|
+
const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;
|
|
17338
|
+
this.params.push({
|
|
17339
|
+
address_n: addressN,
|
|
17340
|
+
network: batch.network || MAINNET,
|
|
17341
|
+
show_display: showOnOneKey
|
|
17342
|
+
});
|
|
17343
|
+
});
|
|
17124
17344
|
}
|
|
17125
17345
|
|
|
17126
|
-
|
|
17346
|
+
run() {
|
|
17347
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17348
|
+
const responses = [];
|
|
17127
17349
|
|
|
17128
|
-
|
|
17129
|
-
|
|
17350
|
+
for (let i = 0; i < this.params.length; i++) {
|
|
17351
|
+
const param = this.params[i];
|
|
17352
|
+
const res = yield this.device.commands.typedCall('NEMGetAddress', 'NEMAddress', Object.assign({}, param));
|
|
17353
|
+
responses.push(Object.assign({
|
|
17354
|
+
path: serializedPath(param.address_n)
|
|
17355
|
+
}, res.message));
|
|
17356
|
+
}
|
|
17357
|
+
|
|
17358
|
+
return Promise.resolve(this.hasBundle ? responses : responses[0]);
|
|
17359
|
+
});
|
|
17130
17360
|
}
|
|
17131
17361
|
|
|
17132
|
-
throw TypedError('Method_InvalidParameter', `Method ${method} is not set`);
|
|
17133
17362
|
}
|
|
17134
17363
|
|
|
17135
|
-
const
|
|
17136
|
-
|
|
17137
|
-
|
|
17364
|
+
const NEM_TRANSFER = 0x0101;
|
|
17365
|
+
const NEM_COSIGNING = 0x0102;
|
|
17366
|
+
const NEM_IMPORTANCE_TRANSFER = 0x0801;
|
|
17367
|
+
const NEM_AGGREGATE_MODIFICATION = 0x1001;
|
|
17368
|
+
const NEM_MULTISIG_SIGNATURE = 0x1002;
|
|
17369
|
+
const NEM_MULTISIG = 0x1004;
|
|
17370
|
+
const NEM_PROVISION_NAMESPACE = 0x2001;
|
|
17371
|
+
const NEM_MOSAIC_CREATION = 0x4001;
|
|
17372
|
+
const NEM_SUPPLY_CHANGE = 0x4002;
|
|
17138
17373
|
|
|
17139
|
-
|
|
17374
|
+
class NEMSignTransaction extends BaseMethod {
|
|
17375
|
+
constructor() {
|
|
17376
|
+
super(...arguments);
|
|
17377
|
+
this.NEM_MOSAIC_LEVY_TYPES = {
|
|
17378
|
+
1: 'MosaicLevy_Absolute',
|
|
17379
|
+
2: 'MosaicLevy_Percentile'
|
|
17380
|
+
};
|
|
17381
|
+
this.NEM_SUPPLY_CHANGE_TYPES = {
|
|
17382
|
+
1: 'SupplyChange_Increase',
|
|
17383
|
+
2: 'SupplyChange_Decrease'
|
|
17384
|
+
};
|
|
17385
|
+
this.NEM_AGGREGATE_MODIFICATION_TYPES = {
|
|
17386
|
+
1: 'CosignatoryModification_Add',
|
|
17387
|
+
2: 'CosignatoryModification_Delete'
|
|
17388
|
+
};
|
|
17389
|
+
this.NEM_IMPORTANCE_TRANSFER_MODES = {
|
|
17390
|
+
1: 'ImportanceTransfer_Activate',
|
|
17391
|
+
2: 'ImportanceTransfer_Deactivate'
|
|
17392
|
+
};
|
|
17393
|
+
|
|
17394
|
+
this.getCommon = (tx, address_n) => {
|
|
17395
|
+
var _a;
|
|
17396
|
+
|
|
17397
|
+
return {
|
|
17398
|
+
address_n,
|
|
17399
|
+
network: tx.version >> 24 & 0xff,
|
|
17400
|
+
timestamp: tx.timeStamp,
|
|
17401
|
+
fee: tx.fee,
|
|
17402
|
+
deadline: (_a = tx.deadline) !== null && _a !== void 0 ? _a : 0,
|
|
17403
|
+
signer: address_n ? undefined : tx.signer
|
|
17404
|
+
};
|
|
17405
|
+
};
|
|
17406
|
+
|
|
17407
|
+
this.transferMessage = tx => {
|
|
17408
|
+
const mosaics = tx.mosaics ? tx.mosaics.map(mosaic => ({
|
|
17409
|
+
namespace: mosaic.mosaicId.namespaceId,
|
|
17410
|
+
mosaic: mosaic.mosaicId.name,
|
|
17411
|
+
quantity: mosaic.quantity
|
|
17412
|
+
})) : undefined;
|
|
17413
|
+
return {
|
|
17414
|
+
recipient: tx.recipient,
|
|
17415
|
+
amount: tx.amount,
|
|
17416
|
+
payload: tx.message ? tx.message.payload : undefined,
|
|
17417
|
+
public_key: tx.message && tx.message.type === 0x02 ? tx.message.publicKey : undefined,
|
|
17418
|
+
mosaics
|
|
17419
|
+
};
|
|
17420
|
+
};
|
|
17421
|
+
|
|
17422
|
+
this.importanceTransferMessage = tx => ({
|
|
17423
|
+
mode: this.NEM_IMPORTANCE_TRANSFER_MODES[tx.importanceTransfer.mode],
|
|
17424
|
+
public_key: tx.importanceTransfer.publicKey
|
|
17425
|
+
});
|
|
17426
|
+
|
|
17427
|
+
this.aggregateModificationMessage = tx => {
|
|
17428
|
+
const modifications = tx.modifications ? tx.modifications.map(modification => ({
|
|
17429
|
+
type: this.NEM_AGGREGATE_MODIFICATION_TYPES[modification.modificationType],
|
|
17430
|
+
public_key: modification.cosignatoryAccount
|
|
17431
|
+
})) : undefined;
|
|
17432
|
+
return {
|
|
17433
|
+
modifications,
|
|
17434
|
+
relative_change: tx.minCosignatories.relativeChange
|
|
17435
|
+
};
|
|
17436
|
+
};
|
|
17437
|
+
|
|
17438
|
+
this.provisionNamespaceMessage = tx => {
|
|
17439
|
+
var _a, _b, _c;
|
|
17440
|
+
|
|
17441
|
+
return {
|
|
17442
|
+
namespace: (_a = tx.newPart) !== null && _a !== void 0 ? _a : '',
|
|
17443
|
+
parent: tx.parent || undefined,
|
|
17444
|
+
sink: (_b = tx.rentalFeeSink) !== null && _b !== void 0 ? _b : '',
|
|
17445
|
+
fee: (_c = tx.rentalFee) !== null && _c !== void 0 ? _c : 0
|
|
17446
|
+
};
|
|
17447
|
+
};
|
|
17448
|
+
|
|
17449
|
+
this.mosaicCreationMessage = tx => {
|
|
17450
|
+
var _a, _b;
|
|
17451
|
+
|
|
17452
|
+
const {
|
|
17453
|
+
levy
|
|
17454
|
+
} = tx.mosaicDefinition;
|
|
17455
|
+
const definition = {
|
|
17456
|
+
namespace: tx.mosaicDefinition.id.namespaceId,
|
|
17457
|
+
mosaic: tx.mosaicDefinition.id.name,
|
|
17458
|
+
levy: levy && levy.type ? this.NEM_MOSAIC_LEVY_TYPES[levy.type] : undefined,
|
|
17459
|
+
fee: levy && levy.fee,
|
|
17460
|
+
levy_address: levy && levy.recipient,
|
|
17461
|
+
levy_namespace: levy && levy.mosaicId && levy.mosaicId.namespaceId,
|
|
17462
|
+
levy_mosaic: levy && levy.mosaicId && levy.mosaicId.name,
|
|
17463
|
+
description: tx.mosaicDefinition.description
|
|
17464
|
+
};
|
|
17465
|
+
const {
|
|
17466
|
+
properties
|
|
17467
|
+
} = tx.mosaicDefinition;
|
|
17468
|
+
|
|
17469
|
+
if (Array.isArray(properties)) {
|
|
17470
|
+
properties.forEach(property => {
|
|
17471
|
+
const {
|
|
17472
|
+
name,
|
|
17473
|
+
value
|
|
17474
|
+
} = property;
|
|
17475
|
+
|
|
17476
|
+
switch (name) {
|
|
17477
|
+
case 'divisibility':
|
|
17478
|
+
definition.divisibility = parseInt(value);
|
|
17479
|
+
break;
|
|
17480
|
+
|
|
17481
|
+
case 'initialSupply':
|
|
17482
|
+
definition.supply = parseInt(value);
|
|
17483
|
+
break;
|
|
17484
|
+
|
|
17485
|
+
case 'supplyMutable':
|
|
17486
|
+
definition.mutable_supply = value === 'true';
|
|
17487
|
+
break;
|
|
17488
|
+
|
|
17489
|
+
case 'transferable':
|
|
17490
|
+
definition.transferable = value === 'true';
|
|
17491
|
+
break;
|
|
17492
|
+
}
|
|
17493
|
+
});
|
|
17494
|
+
}
|
|
17495
|
+
|
|
17496
|
+
return {
|
|
17497
|
+
definition,
|
|
17498
|
+
sink: (_a = tx.creationFeeSink) !== null && _a !== void 0 ? _a : '',
|
|
17499
|
+
fee: (_b = tx.creationFee) !== null && _b !== void 0 ? _b : 0
|
|
17500
|
+
};
|
|
17501
|
+
};
|
|
17502
|
+
|
|
17503
|
+
this.supplyChangeMessage = tx => {
|
|
17504
|
+
var _a;
|
|
17505
|
+
|
|
17506
|
+
return {
|
|
17507
|
+
namespace: tx.mosaicId.namespaceId,
|
|
17508
|
+
mosaic: tx.mosaicId.name,
|
|
17509
|
+
type: this.NEM_SUPPLY_CHANGE_TYPES[tx.supplyType],
|
|
17510
|
+
delta: (_a = tx.delta) !== null && _a !== void 0 ? _a : 0
|
|
17511
|
+
};
|
|
17512
|
+
};
|
|
17513
|
+
|
|
17514
|
+
this.parseTx = (tx, address_n) => {
|
|
17515
|
+
let transaction = tx;
|
|
17516
|
+
const message = {
|
|
17517
|
+
transaction: this.getCommon(tx, address_n),
|
|
17518
|
+
transfer: undefined,
|
|
17519
|
+
importance_transfer: undefined,
|
|
17520
|
+
aggregate_modification: undefined,
|
|
17521
|
+
provision_namespace: undefined,
|
|
17522
|
+
mosaic_creation: undefined,
|
|
17523
|
+
supply_change: undefined
|
|
17524
|
+
};
|
|
17525
|
+
|
|
17526
|
+
if (tx.type === NEM_COSIGNING || tx.type === NEM_MULTISIG || tx.type === NEM_MULTISIG_SIGNATURE) {
|
|
17527
|
+
message.cosigning = tx.type === NEM_COSIGNING || tx.type === NEM_MULTISIG_SIGNATURE;
|
|
17528
|
+
transaction = tx.otherTrans;
|
|
17529
|
+
message.multisig = this.getCommon(transaction);
|
|
17530
|
+
}
|
|
17531
|
+
|
|
17532
|
+
switch (transaction.type) {
|
|
17533
|
+
case NEM_TRANSFER:
|
|
17534
|
+
message.transfer = this.transferMessage(transaction);
|
|
17535
|
+
break;
|
|
17536
|
+
|
|
17537
|
+
case NEM_IMPORTANCE_TRANSFER:
|
|
17538
|
+
message.importance_transfer = this.importanceTransferMessage(transaction);
|
|
17539
|
+
break;
|
|
17540
|
+
|
|
17541
|
+
case NEM_AGGREGATE_MODIFICATION:
|
|
17542
|
+
message.aggregate_modification = this.aggregateModificationMessage(transaction);
|
|
17543
|
+
break;
|
|
17544
|
+
|
|
17545
|
+
case NEM_PROVISION_NAMESPACE:
|
|
17546
|
+
message.provision_namespace = this.provisionNamespaceMessage(transaction);
|
|
17547
|
+
break;
|
|
17548
|
+
|
|
17549
|
+
case NEM_MOSAIC_CREATION:
|
|
17550
|
+
message.mosaic_creation = this.mosaicCreationMessage(transaction);
|
|
17551
|
+
break;
|
|
17552
|
+
|
|
17553
|
+
case NEM_SUPPLY_CHANGE:
|
|
17554
|
+
message.supply_change = this.supplyChangeMessage(transaction);
|
|
17555
|
+
break;
|
|
17556
|
+
|
|
17557
|
+
default:
|
|
17558
|
+
throw TypedError('Method_InvalidParameter', 'Unknown transaction type');
|
|
17559
|
+
}
|
|
17560
|
+
|
|
17561
|
+
return message;
|
|
17562
|
+
};
|
|
17563
|
+
}
|
|
17564
|
+
|
|
17565
|
+
init() {
|
|
17566
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
17567
|
+
validateParams(this.payload, [{
|
|
17568
|
+
name: 'path',
|
|
17569
|
+
required: true
|
|
17570
|
+
}, {
|
|
17571
|
+
name: 'transaction',
|
|
17572
|
+
type: 'object',
|
|
17573
|
+
required: true
|
|
17574
|
+
}]);
|
|
17575
|
+
const {
|
|
17576
|
+
path,
|
|
17577
|
+
transaction
|
|
17578
|
+
} = this.payload;
|
|
17579
|
+
const addressN = validatePath(path, 3);
|
|
17580
|
+
this.params = this.parseTx(transaction, addressN);
|
|
17581
|
+
}
|
|
17582
|
+
|
|
17583
|
+
run() {
|
|
17584
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17585
|
+
const res = yield this.device.commands.typedCall('NEMSignTx', 'NEMSignedTx', Object.assign({}, this.params));
|
|
17586
|
+
return Promise.resolve(res);
|
|
17587
|
+
});
|
|
17588
|
+
}
|
|
17589
|
+
|
|
17590
|
+
}
|
|
17591
|
+
|
|
17592
|
+
class SolGetAddress extends BaseMethod {
|
|
17593
|
+
constructor() {
|
|
17594
|
+
super(...arguments);
|
|
17595
|
+
this.hasBundle = false;
|
|
17596
|
+
}
|
|
17597
|
+
|
|
17598
|
+
init() {
|
|
17599
|
+
var _a;
|
|
17600
|
+
|
|
17601
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
17602
|
+
this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);
|
|
17603
|
+
const payload = this.hasBundle ? this.payload : {
|
|
17604
|
+
bundle: [this.payload]
|
|
17605
|
+
};
|
|
17606
|
+
validateParams(payload, [{
|
|
17607
|
+
name: 'bundle',
|
|
17608
|
+
type: 'array'
|
|
17609
|
+
}]);
|
|
17610
|
+
this.params = [];
|
|
17611
|
+
payload.bundle.forEach(batch => {
|
|
17612
|
+
var _a;
|
|
17613
|
+
|
|
17614
|
+
const addressN = validatePath(batch.path, 3);
|
|
17615
|
+
validateParams(batch, [{
|
|
17616
|
+
name: 'path',
|
|
17617
|
+
required: true
|
|
17618
|
+
}, {
|
|
17619
|
+
name: 'showOnOneKey',
|
|
17620
|
+
type: 'boolean'
|
|
17621
|
+
}]);
|
|
17622
|
+
const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;
|
|
17623
|
+
this.params.push({
|
|
17624
|
+
address_n: addressN,
|
|
17625
|
+
show_display: showOnOneKey
|
|
17626
|
+
});
|
|
17627
|
+
});
|
|
17628
|
+
}
|
|
17629
|
+
|
|
17630
|
+
run() {
|
|
17631
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17632
|
+
const responses = [];
|
|
17633
|
+
|
|
17634
|
+
for (let i = 0; i < this.params.length; i++) {
|
|
17635
|
+
const param = this.params[i];
|
|
17636
|
+
const res = yield this.device.commands.typedCall('SolanaGetAddress', 'SolanaAddress', Object.assign({}, param));
|
|
17637
|
+
const {
|
|
17638
|
+
address
|
|
17639
|
+
} = res.message;
|
|
17640
|
+
responses.push({
|
|
17641
|
+
path: serializedPath(param.address_n),
|
|
17642
|
+
address
|
|
17643
|
+
});
|
|
17644
|
+
}
|
|
17645
|
+
|
|
17646
|
+
return Promise.resolve(this.hasBundle ? responses : responses[0]);
|
|
17647
|
+
});
|
|
17648
|
+
}
|
|
17649
|
+
|
|
17650
|
+
}
|
|
17651
|
+
|
|
17652
|
+
class SolSignTransaction extends BaseMethod {
|
|
17653
|
+
constructor() {
|
|
17654
|
+
super(...arguments);
|
|
17655
|
+
this.hasBundle = false;
|
|
17656
|
+
}
|
|
17657
|
+
|
|
17658
|
+
init() {
|
|
17659
|
+
var _a;
|
|
17660
|
+
|
|
17661
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
17662
|
+
this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);
|
|
17663
|
+
const payload = this.hasBundle ? this.payload : {
|
|
17664
|
+
bundle: [this.payload]
|
|
17665
|
+
};
|
|
17666
|
+
validateParams(payload, [{
|
|
17667
|
+
name: 'bundle',
|
|
17668
|
+
type: 'array'
|
|
17669
|
+
}]);
|
|
17670
|
+
this.params = [];
|
|
17671
|
+
payload.bundle.forEach(batch => {
|
|
17672
|
+
const addressN = validatePath(batch.path, 3);
|
|
17673
|
+
validateParams(batch, [{
|
|
17674
|
+
name: 'path',
|
|
17675
|
+
required: true
|
|
17676
|
+
}, {
|
|
17677
|
+
name: 'rawTx',
|
|
17678
|
+
type: 'hexString',
|
|
17679
|
+
required: true
|
|
17680
|
+
}]);
|
|
17681
|
+
this.params.push({
|
|
17682
|
+
address_n: addressN,
|
|
17683
|
+
raw_tx: formatAnyHex(batch.rawTx)
|
|
17684
|
+
});
|
|
17685
|
+
});
|
|
17686
|
+
}
|
|
17687
|
+
|
|
17688
|
+
getVersionRange() {
|
|
17689
|
+
return {
|
|
17690
|
+
classic: {
|
|
17691
|
+
min: '2.1.9'
|
|
17692
|
+
},
|
|
17693
|
+
mini: {
|
|
17694
|
+
min: '2.1.9'
|
|
17695
|
+
}
|
|
17696
|
+
};
|
|
17697
|
+
}
|
|
17698
|
+
|
|
17699
|
+
run() {
|
|
17700
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17701
|
+
const responses = [];
|
|
17702
|
+
|
|
17703
|
+
for (let i = 0; i < this.params.length; i++) {
|
|
17704
|
+
const param = this.params[i];
|
|
17705
|
+
const res = yield this.device.commands.typedCall('SolanaSignTx', 'SolanaSignedTx', Object.assign({}, param));
|
|
17706
|
+
const {
|
|
17707
|
+
signature
|
|
17708
|
+
} = res.message;
|
|
17709
|
+
responses.push({
|
|
17710
|
+
path: serializedPath(param.address_n),
|
|
17711
|
+
signature
|
|
17712
|
+
});
|
|
17713
|
+
}
|
|
17714
|
+
|
|
17715
|
+
return Promise.resolve(this.hasBundle ? responses : responses[0]);
|
|
17716
|
+
});
|
|
17717
|
+
}
|
|
17718
|
+
|
|
17719
|
+
}
|
|
17720
|
+
|
|
17721
|
+
class StellarGetAddress extends BaseMethod {
|
|
17722
|
+
constructor() {
|
|
17723
|
+
super(...arguments);
|
|
17724
|
+
this.hasBundle = false;
|
|
17725
|
+
}
|
|
17726
|
+
|
|
17727
|
+
init() {
|
|
17728
|
+
var _a;
|
|
17729
|
+
|
|
17730
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
17731
|
+
this.hasBundle = !!((_a = this.payload) === null || _a === void 0 ? void 0 : _a.bundle);
|
|
17732
|
+
const payload = this.hasBundle ? this.payload : {
|
|
17733
|
+
bundle: [this.payload]
|
|
17734
|
+
};
|
|
17735
|
+
validateParams(payload, [{
|
|
17736
|
+
name: 'bundle',
|
|
17737
|
+
type: 'array'
|
|
17738
|
+
}]);
|
|
17739
|
+
this.params = [];
|
|
17740
|
+
payload.bundle.forEach(batch => {
|
|
17741
|
+
var _a;
|
|
17742
|
+
|
|
17743
|
+
const addressN = validatePath(batch.path, 3);
|
|
17744
|
+
validateParams(batch, [{
|
|
17745
|
+
name: 'path',
|
|
17746
|
+
required: true
|
|
17747
|
+
}, {
|
|
17748
|
+
name: 'showOnOneKey',
|
|
17749
|
+
type: 'boolean'
|
|
17750
|
+
}]);
|
|
17751
|
+
const showOnOneKey = (_a = batch.showOnOneKey) !== null && _a !== void 0 ? _a : true;
|
|
17752
|
+
this.params.push({
|
|
17753
|
+
address_n: addressN,
|
|
17754
|
+
show_display: showOnOneKey
|
|
17755
|
+
});
|
|
17756
|
+
});
|
|
17757
|
+
}
|
|
17758
|
+
|
|
17759
|
+
run() {
|
|
17760
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
17761
|
+
const responses = [];
|
|
17762
|
+
|
|
17763
|
+
for (let i = 0; i < this.params.length; i++) {
|
|
17764
|
+
const param = this.params[i];
|
|
17765
|
+
const res = yield this.device.commands.typedCall('StellarGetAddress', 'StellarAddress', Object.assign({}, param));
|
|
17766
|
+
const {
|
|
17767
|
+
address
|
|
17768
|
+
} = res.message;
|
|
17769
|
+
responses.push({
|
|
17770
|
+
path: serializedPath(param.address_n),
|
|
17771
|
+
address
|
|
17772
|
+
});
|
|
17773
|
+
}
|
|
17774
|
+
|
|
17775
|
+
return Promise.resolve(this.hasBundle ? responses : responses[0]);
|
|
17776
|
+
});
|
|
17777
|
+
}
|
|
17778
|
+
|
|
17779
|
+
}
|
|
17780
|
+
|
|
17781
|
+
class StellarSignTransaction extends BaseMethod {
|
|
17782
|
+
constructor() {
|
|
17783
|
+
super(...arguments);
|
|
17784
|
+
this.operations = [];
|
|
17785
|
+
|
|
17786
|
+
this.parseOperation = op => {
|
|
17787
|
+
switch (op.type) {
|
|
17788
|
+
case 'createAccount':
|
|
17789
|
+
validateParams(op, [{
|
|
17790
|
+
name: 'destination',
|
|
17791
|
+
type: 'string',
|
|
17792
|
+
required: true
|
|
17793
|
+
}, {
|
|
17794
|
+
name: 'startingBalance',
|
|
17795
|
+
type: 'bigNumber',
|
|
17796
|
+
required: true
|
|
17797
|
+
}]);
|
|
17798
|
+
return {
|
|
17799
|
+
type: 'StellarCreateAccountOp',
|
|
17800
|
+
source_account: op.source,
|
|
17801
|
+
new_account: op.destination,
|
|
17802
|
+
starting_balance: op.startingBalance
|
|
17803
|
+
};
|
|
17804
|
+
|
|
17805
|
+
case 'payment':
|
|
17806
|
+
validateParams(op, [{
|
|
17807
|
+
name: 'destination',
|
|
17808
|
+
type: 'string',
|
|
17809
|
+
required: true
|
|
17810
|
+
}, {
|
|
17811
|
+
name: 'amount',
|
|
17812
|
+
type: 'bigNumber',
|
|
17813
|
+
required: true
|
|
17814
|
+
}, {
|
|
17815
|
+
name: 'asset',
|
|
17816
|
+
required: true
|
|
17817
|
+
}]);
|
|
17818
|
+
return {
|
|
17819
|
+
type: 'StellarPaymentOp',
|
|
17820
|
+
source_account: op.source,
|
|
17821
|
+
destination_account: op.destination,
|
|
17822
|
+
asset: op.asset,
|
|
17823
|
+
amount: op.amount
|
|
17824
|
+
};
|
|
17825
|
+
|
|
17826
|
+
case 'pathPayment':
|
|
17827
|
+
validateParams(op, [{
|
|
17828
|
+
name: 'destAmount',
|
|
17829
|
+
type: 'bigNumber',
|
|
17830
|
+
required: true
|
|
17831
|
+
}]);
|
|
17832
|
+
return {
|
|
17833
|
+
type: 'StellarPathPaymentOp',
|
|
17834
|
+
source_account: op.source,
|
|
17835
|
+
send_asset: op.sendAsset,
|
|
17836
|
+
send_max: op.sendMax,
|
|
17837
|
+
destination_account: op.destination,
|
|
17838
|
+
destination_asset: op.destAsset,
|
|
17839
|
+
destination_amount: op.destAmount,
|
|
17840
|
+
paths: op.path
|
|
17841
|
+
};
|
|
17842
|
+
|
|
17843
|
+
case 'createPassiveOffer':
|
|
17844
|
+
validateParams(op, [{
|
|
17845
|
+
name: 'amount',
|
|
17846
|
+
type: 'bigNumber',
|
|
17847
|
+
required: true
|
|
17848
|
+
}]);
|
|
17849
|
+
return {
|
|
17850
|
+
type: 'StellarCreatePassiveOfferOp',
|
|
17851
|
+
source_account: op.source,
|
|
17852
|
+
buying_asset: op.buying,
|
|
17853
|
+
selling_asset: op.selling,
|
|
17854
|
+
amount: op.amount,
|
|
17855
|
+
price_n: op.price.n,
|
|
17856
|
+
price_d: op.price.d
|
|
17857
|
+
};
|
|
17858
|
+
|
|
17859
|
+
case 'manageOffer':
|
|
17860
|
+
validateParams(op, [{
|
|
17861
|
+
name: 'amount',
|
|
17862
|
+
type: 'bigNumber',
|
|
17863
|
+
required: true
|
|
17864
|
+
}]);
|
|
17865
|
+
return {
|
|
17866
|
+
type: 'StellarManageOfferOp',
|
|
17867
|
+
source_account: op.source,
|
|
17868
|
+
buying_asset: op.buying,
|
|
17869
|
+
selling_asset: op.selling,
|
|
17870
|
+
amount: op.amount,
|
|
17871
|
+
offer_id: op.offerId,
|
|
17872
|
+
price_n: op.price.n,
|
|
17873
|
+
price_d: op.price.d
|
|
17874
|
+
};
|
|
17875
|
+
|
|
17876
|
+
case 'setOptions':
|
|
17877
|
+
{
|
|
17878
|
+
const signer = op.signer ? {
|
|
17879
|
+
signer_type: op.signer.type,
|
|
17880
|
+
signer_key: op.signer.key,
|
|
17881
|
+
signer_weight: op.signer.weight
|
|
17882
|
+
} : undefined;
|
|
17883
|
+
return Object.assign({
|
|
17884
|
+
type: 'StellarSetOptionsOp',
|
|
17885
|
+
source_account: op.source,
|
|
17886
|
+
clear_flags: op.clearFlags,
|
|
17887
|
+
set_flags: op.setFlags,
|
|
17888
|
+
master_weight: op.masterWeight,
|
|
17889
|
+
low_threshold: op.lowThreshold,
|
|
17890
|
+
medium_threshold: op.medThreshold,
|
|
17891
|
+
high_threshold: op.highThreshold,
|
|
17892
|
+
home_domain: op.homeDomain,
|
|
17893
|
+
inflation_destination_account: op.inflationDest
|
|
17894
|
+
}, signer);
|
|
17895
|
+
}
|
|
17896
|
+
|
|
17897
|
+
case 'changeTrust':
|
|
17898
|
+
validateParams(op, [{
|
|
17899
|
+
name: 'limit',
|
|
17900
|
+
type: 'bigNumber'
|
|
17901
|
+
}]);
|
|
17902
|
+
return {
|
|
17903
|
+
type: 'StellarChangeTrustOp',
|
|
17904
|
+
source_account: op.source,
|
|
17905
|
+
asset: op.line,
|
|
17906
|
+
limit: op.limit
|
|
17907
|
+
};
|
|
17908
|
+
|
|
17909
|
+
case 'allowTrust':
|
|
17910
|
+
return {
|
|
17911
|
+
type: 'StellarAllowTrustOp',
|
|
17912
|
+
source_account: op.source,
|
|
17913
|
+
trusted_account: op.trustor,
|
|
17914
|
+
asset_type: op.assetType,
|
|
17915
|
+
asset_code: op.assetCode,
|
|
17916
|
+
is_authorized: op.authorize ? 1 : 0
|
|
17917
|
+
};
|
|
17918
|
+
|
|
17919
|
+
case 'accountMerge':
|
|
17920
|
+
return {
|
|
17921
|
+
type: 'StellarAccountMergeOp',
|
|
17922
|
+
source_account: op.source,
|
|
17923
|
+
destination_account: op.destination
|
|
17924
|
+
};
|
|
17925
|
+
|
|
17926
|
+
case 'manageData':
|
|
17927
|
+
return {
|
|
17928
|
+
type: 'StellarManageDataOp',
|
|
17929
|
+
source_account: op.source,
|
|
17930
|
+
key: op.name,
|
|
17931
|
+
value: op.value
|
|
17932
|
+
};
|
|
17933
|
+
|
|
17934
|
+
case 'bumpSequence':
|
|
17935
|
+
return {
|
|
17936
|
+
type: 'StellarBumpSequenceOp',
|
|
17937
|
+
source_account: op.source,
|
|
17938
|
+
bump_to: op.bumpTo
|
|
17939
|
+
};
|
|
17940
|
+
|
|
17941
|
+
default:
|
|
17942
|
+
return {};
|
|
17943
|
+
}
|
|
17944
|
+
};
|
|
17945
|
+
|
|
17946
|
+
this.processTxRequest = (operations, index) => __awaiter(this, void 0, void 0, function* () {
|
|
17947
|
+
const isLastOp = index + 1 >= operations.length;
|
|
17948
|
+
|
|
17949
|
+
const _a = operations[index],
|
|
17950
|
+
{
|
|
17951
|
+
type
|
|
17952
|
+
} = _a,
|
|
17953
|
+
op = __rest(_a, ["type"]);
|
|
17954
|
+
|
|
17955
|
+
if (isLastOp) {
|
|
17956
|
+
const response = yield this.device.commands.typedCall(type, 'StellarSignedTx', op);
|
|
17957
|
+
return response.message;
|
|
17958
|
+
}
|
|
17959
|
+
|
|
17960
|
+
yield this.device.commands.typedCall(type, 'StellarTxOpRequest', op);
|
|
17961
|
+
return this.processTxRequest(operations, index + 1);
|
|
17962
|
+
});
|
|
17963
|
+
}
|
|
17964
|
+
|
|
17965
|
+
init() {
|
|
17966
|
+
this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
|
|
17967
|
+
validateParams(this.payload, [{
|
|
17968
|
+
name: 'path',
|
|
17969
|
+
required: true
|
|
17970
|
+
}, {
|
|
17971
|
+
name: 'networkPassphrase',
|
|
17972
|
+
type: 'string',
|
|
17973
|
+
required: true
|
|
17974
|
+
}, {
|
|
17975
|
+
name: 'transaction',
|
|
17976
|
+
type: 'object',
|
|
17977
|
+
required: true
|
|
17978
|
+
}]);
|
|
17979
|
+
const addressN = validatePath(this.payload.path, 3);
|
|
17980
|
+
const {
|
|
17981
|
+
transaction,
|
|
17982
|
+
networkPassphrase
|
|
17983
|
+
} = this.payload;
|
|
17984
|
+
this.params = {
|
|
17985
|
+
address_n: addressN,
|
|
17986
|
+
network_passphrase: networkPassphrase,
|
|
17987
|
+
source_account: transaction.source,
|
|
17988
|
+
fee: transaction.fee,
|
|
17989
|
+
sequence_number: transaction.sequence,
|
|
17990
|
+
num_operations: transaction.operations.length
|
|
17991
|
+
};
|
|
17992
|
+
|
|
17993
|
+
if (transaction.timebounds) {
|
|
17994
|
+
this.params.timebounds_start = transaction.timebounds.minTime;
|
|
17995
|
+
this.params.timebounds_end = transaction.timebounds.maxTime;
|
|
17996
|
+
}
|
|
17997
|
+
|
|
17998
|
+
if (transaction.memo) {
|
|
17999
|
+
this.params.memo_type = transaction.memo.type;
|
|
18000
|
+
this.params.memo_text = transaction.memo.text;
|
|
18001
|
+
this.params.memo_id = transaction.memo.id;
|
|
18002
|
+
this.params.memo_hash = transaction.memo.hash;
|
|
18003
|
+
}
|
|
18004
|
+
|
|
18005
|
+
transaction.operations.forEach(op => {
|
|
18006
|
+
const transformed = this.parseOperation(op);
|
|
18007
|
+
|
|
18008
|
+
if (transformed) {
|
|
18009
|
+
this.operations.push(transformed);
|
|
18010
|
+
}
|
|
18011
|
+
});
|
|
18012
|
+
console.log('StellarSignTransactionParams', this.params);
|
|
18013
|
+
console.log('StellarSignTransactionOperations', this.operations);
|
|
18014
|
+
}
|
|
18015
|
+
|
|
18016
|
+
run() {
|
|
18017
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18018
|
+
yield this.device.commands.typedCall('StellarSignTx', 'StellarTxOpRequest', Object.assign({}, this.params));
|
|
18019
|
+
return this.processTxRequest(this.operations, 0);
|
|
18020
|
+
});
|
|
18021
|
+
}
|
|
18022
|
+
|
|
18023
|
+
}
|
|
18024
|
+
|
|
18025
|
+
var ApiMethods = /*#__PURE__*/Object.freeze({
|
|
18026
|
+
__proto__: null,
|
|
18027
|
+
searchDevices: SearchDevices,
|
|
18028
|
+
getFeatures: GetFeatures,
|
|
18029
|
+
cipherKeyValue: CipherKeyValue,
|
|
18030
|
+
btcGetAddress: BTCGetAddress,
|
|
18031
|
+
btcGetPublicKey: BTCGetPublicKey,
|
|
18032
|
+
btcSignMessage: BTCSignMessage,
|
|
18033
|
+
btcSignTransaction: BTCSignTransaction,
|
|
18034
|
+
btcVerifyMessage: BTCVerifyMessage,
|
|
18035
|
+
checkFirmwareRelease: CheckFirmwareRelease,
|
|
18036
|
+
checkBLEFirmwareRelease: CheckBLEFirmwareRelease,
|
|
18037
|
+
checkTransportRelease: CheckTransportRelease,
|
|
18038
|
+
deviceBackup: DeviceBackup,
|
|
18039
|
+
deviceChangePin: DeviceChangePin,
|
|
18040
|
+
deviceFlags: DeviceFlags,
|
|
18041
|
+
deviceRebootToBootloader: DeviceRebootToBootloader,
|
|
18042
|
+
deviceRecovery: DeviceRecovery,
|
|
18043
|
+
deviceReset: DeviceReset,
|
|
18044
|
+
deviceSettings: DeviceSettings,
|
|
18045
|
+
deviceUpdateReboot: DeviceUpdateReboot,
|
|
18046
|
+
deviceWipe: DeviceWipe,
|
|
18047
|
+
evmGetAddress: EvmGetAddress,
|
|
18048
|
+
evmGetPublicKey: EVMGetPublicKey,
|
|
18049
|
+
evmSignMessage: EVMSignMessage$2,
|
|
18050
|
+
evmSignMessageEIP712: EVMSignMessageEIP712,
|
|
18051
|
+
evmSignTransaction: EVMSignTransaction,
|
|
18052
|
+
evmSignTypedData: EVMSignTypedData,
|
|
18053
|
+
evmVerifyMessage: EVMSignMessage$1,
|
|
18054
|
+
starcoinGetAddress: StarcoinGetAddress,
|
|
18055
|
+
starcoinGetPublicKey: StarcoinGetPublicKey,
|
|
18056
|
+
starcoinSignMessage: StarcoinSignMessage,
|
|
18057
|
+
starcoinSignTransaction: StarcoinSignTransaction,
|
|
18058
|
+
starcoinVerifyMessage: EVMSignMessage,
|
|
18059
|
+
nemGetAddress: NEMGetAddress,
|
|
18060
|
+
nemSignTransaction: NEMSignTransaction,
|
|
18061
|
+
solGetAddress: SolGetAddress,
|
|
18062
|
+
solSignTransaction: SolSignTransaction,
|
|
18063
|
+
stellarGetAddress: StellarGetAddress,
|
|
18064
|
+
stellarSignTransaction: StellarSignTransaction
|
|
18065
|
+
});
|
|
18066
|
+
|
|
18067
|
+
function findMethod(message) {
|
|
18068
|
+
const {
|
|
18069
|
+
method
|
|
18070
|
+
} = message.payload;
|
|
18071
|
+
|
|
18072
|
+
if (typeof method !== 'string') {
|
|
18073
|
+
throw TypedError('Method_InvalidParameter', 'Method is not set');
|
|
18074
|
+
}
|
|
18075
|
+
|
|
18076
|
+
const MethodConstructor = ApiMethods[method];
|
|
18077
|
+
|
|
18078
|
+
if (MethodConstructor) {
|
|
18079
|
+
return new MethodConstructor(message);
|
|
18080
|
+
}
|
|
18081
|
+
|
|
18082
|
+
throw TypedError('Method_InvalidParameter', `Method ${method} is not set`);
|
|
18083
|
+
}
|
|
18084
|
+
|
|
18085
|
+
const resolveAfter = (msec, value) => new Promise(resolve => {
|
|
18086
|
+
setTimeout(resolve, msec, value);
|
|
18087
|
+
});
|
|
18088
|
+
|
|
18089
|
+
const Log$1 = initLog('DeviceConnector');
|
|
17140
18090
|
|
|
17141
18091
|
const getDiff = (current, descriptors) => {
|
|
17142
18092
|
const env = DataManager.getSettings('env');
|
|
@@ -17362,6 +18312,24 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
17362
18312
|
|
|
17363
18313
|
try {
|
|
17364
18314
|
const inner = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18315
|
+
const deviceType = getDeviceType(device.features);
|
|
18316
|
+
const deviceModel = getDeviceModel(device.features);
|
|
18317
|
+
const versionRangeType = method.getVersionRange()[deviceType];
|
|
18318
|
+
const versionRangeModel = method.getVersionRange()[deviceModel];
|
|
18319
|
+
const versionRange = versionRangeType !== null && versionRangeType !== void 0 ? versionRangeType : versionRangeModel;
|
|
18320
|
+
|
|
18321
|
+
if (versionRange && device.features) {
|
|
18322
|
+
const currentVersion = getDeviceFirmwareVersion(device.features).join('.');
|
|
18323
|
+
|
|
18324
|
+
if (semver__default["default"].valid(versionRange.min) && semver__default["default"].lt(currentVersion, versionRange.min)) {
|
|
18325
|
+
return Promise.reject(TypedError('Device_FwException', `Device firmware version is too low, please update to ${versionRange.min}`));
|
|
18326
|
+
}
|
|
18327
|
+
|
|
18328
|
+
if (versionRange.max && semver__default["default"].valid(versionRange.max) && semver__default["default"].gt(currentVersion, versionRange.max)) {
|
|
18329
|
+
return Promise.reject(TypedError('Device_FwException', `Device firmware version is too high, this method has been deprecated in ${versionRange.max}`));
|
|
18330
|
+
}
|
|
18331
|
+
}
|
|
18332
|
+
|
|
17365
18333
|
const unexpectedMode = device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode);
|
|
17366
18334
|
|
|
17367
18335
|
if (unexpectedMode) {
|
|
@@ -17399,6 +18367,7 @@ const callAPI = message => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
17399
18367
|
} catch (error) {
|
|
17400
18368
|
messageResponse = createResponseMessage(method.responseID, false, error);
|
|
17401
18369
|
_callPromise === null || _callPromise === void 0 ? void 0 : _callPromise.reject(TypedError('Call_API', error));
|
|
18370
|
+
Log.debug('Call API - Run Error: ', error);
|
|
17402
18371
|
} finally {
|
|
17403
18372
|
const response = messageResponse;
|
|
17404
18373
|
|
|
@@ -17497,9 +18466,17 @@ const onDeviceButtonHandler = (...[device, request]) => {
|
|
|
17497
18466
|
postMessage(createDeviceMessage(DEVICE.BUTTON, Object.assign(Object.assign({}, request), {
|
|
17498
18467
|
device: device.toMessageObject()
|
|
17499
18468
|
})));
|
|
17500
|
-
|
|
17501
|
-
|
|
17502
|
-
|
|
18469
|
+
|
|
18470
|
+
if (request.code === 'ButtonRequest_PinEntry') {
|
|
18471
|
+
postMessage(createUiMessage(UI_REQUEST$1.REQUEST_PIN, {
|
|
18472
|
+
device: device.toMessageObject(),
|
|
18473
|
+
type: 'ButtonRequest_PinEntry'
|
|
18474
|
+
}));
|
|
18475
|
+
} else {
|
|
18476
|
+
postMessage(createUiMessage(UI_REQUEST$1.REQUEST_BUTTON, {
|
|
18477
|
+
device: device.toMessageObject()
|
|
18478
|
+
}));
|
|
18479
|
+
}
|
|
17503
18480
|
};
|
|
17504
18481
|
|
|
17505
18482
|
const postMessage = message => {
|
|
@@ -17636,6 +18613,8 @@ exports.ZP = HardwareSdk;
|
|
|
17636
18613
|
exports.yI = enableLog;
|
|
17637
18614
|
__webpack_unused_export__ = getDeviceLabel;
|
|
17638
18615
|
__webpack_unused_export__ = getDeviceType;
|
|
18616
|
+
__webpack_unused_export__ = getDeviceTypeByBleName;
|
|
18617
|
+
__webpack_unused_export__ = getDeviceTypeByDeviceId;
|
|
17639
18618
|
__webpack_unused_export__ = getDeviceUUID;
|
|
17640
18619
|
__webpack_unused_export__ = getEnv;
|
|
17641
18620
|
__webpack_unused_export__ = getHDPath;
|
|
@@ -17895,6 +18874,7 @@ const MESSAGE_TOP_CHAR = 0x003f;
|
|
|
17895
18874
|
const MESSAGE_HEADER_BYTE = 0x23;
|
|
17896
18875
|
const HEADER_SIZE = 1 + 1 + 4 + 2;
|
|
17897
18876
|
const BUFFER_SIZE = 63;
|
|
18877
|
+
const COMMON_HEADER_SIZE = 6;
|
|
17898
18878
|
|
|
17899
18879
|
const readHeader = buffer => {
|
|
17900
18880
|
const typeId = buffer.readUint16();
|
|
@@ -18663,6 +19643,7 @@ var index = {
|
|
|
18663
19643
|
parseConfigure
|
|
18664
19644
|
};
|
|
18665
19645
|
exports.BUFFER_SIZE = BUFFER_SIZE;
|
|
19646
|
+
exports.COMMON_HEADER_SIZE = COMMON_HEADER_SIZE;
|
|
18666
19647
|
exports.HEADER_SIZE = HEADER_SIZE;
|
|
18667
19648
|
exports.MESSAGE_HEADER_BYTE = MESSAGE_HEADER_BYTE;
|
|
18668
19649
|
exports.MESSAGE_TOP_CHAR = MESSAGE_TOP_CHAR;
|