@onekeyfe/hd-core 0.1.39 → 0.1.42

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "0.1.39",
3
+ "version": "0.1.42",
4
4
  "description": "> TODO: description",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -15,7 +15,6 @@
15
15
  "access": "public"
16
16
  },
17
17
  "scripts": {
18
- "test": "echo \"Error: run tests from root\" && exit 1",
19
18
  "dev": "rimraf dist && rollup -c ../../build/rollup.config.js -w",
20
19
  "build": "rimraf dist && rollup -c ../../build/rollup.config.js",
21
20
  "lint": "eslint .",
@@ -25,8 +24,8 @@
25
24
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
25
  },
27
26
  "dependencies": {
28
- "@onekeyfe/hd-shared": "^0.1.39",
29
- "@onekeyfe/hd-transport": "^0.1.39",
27
+ "@onekeyfe/hd-shared": "^0.1.42",
28
+ "@onekeyfe/hd-transport": "^0.1.42",
30
29
  "axios": "^0.27.2",
31
30
  "bignumber.js": "^9.0.2",
32
31
  "js-sha256": "^0.9.0",
@@ -37,5 +36,5 @@
37
36
  "@types/parse-uri": "^1.0.0",
38
37
  "@types/semver": "^7.3.9"
39
38
  },
40
- "gitHead": "abaee3140debec0a263b2b87c5ffcddfa534b443"
39
+ "gitHead": "fa65f27f4d043ebf89f03bd98393a9cb3a010199"
41
40
  }
@@ -1,4 +1,4 @@
1
- import { supportInputPinOnSoftware } from '../utils/deviceFeaturesUtils';
1
+ import { supportInputPinOnSoftware, getDeviceType } from '../utils/deviceFeaturesUtils';
2
2
  import { createDeviceMessage } from '../events/device';
3
3
  import { UI_REQUEST } from '../constants/ui-request';
4
4
  import { Device } from '../device/Device';
@@ -6,6 +6,9 @@ import DeviceConnector from '../device/DeviceConnector';
6
6
  import { DeviceFirmwareRange } from '../types';
7
7
  import { CoreMessage, createFirmwareMessage, DEVICE, FIRMWARE } from '../events';
8
8
  import { getBleFirmwareReleaseInfo, getFirmwareReleaseInfo } from './firmware/releaseHelper';
9
+ import { getLogger, LoggerNames } from '../utils';
10
+
11
+ const Log = getLogger(LoggerNames.Method);
9
12
 
10
13
  export abstract class BaseMethod<Params = undefined> {
11
14
  responseID: number;
@@ -129,5 +132,24 @@ export abstract class BaseMethod<Params = undefined> {
129
132
  );
130
133
  }
131
134
 
135
+ /**
136
+ * Check the level of safety_check when performing transactions on the test network on touch
137
+ * @returns {void}
138
+ */
139
+ async checkSafetyLevelOnTestNet() {
140
+ const deviceType = getDeviceType(this.device.features);
141
+ if (deviceType !== 'touch') return;
142
+ let checkFlag = false;
143
+ if (this.name === 'evmSignTransaction' && Number(this.payload?.transaction?.chainId) !== 1) {
144
+ checkFlag = true;
145
+ }
146
+ if (checkFlag && this.device.features?.safety_checks === 'Strict') {
147
+ Log.debug('will change safety_checks level');
148
+ await this.device.commands.typedCall('ApplySettings', 'Success', {
149
+ safety_checks: 'PromptTemporarily',
150
+ });
151
+ }
152
+ }
153
+
132
154
  dispose() {}
133
155
  }
@@ -16,7 +16,7 @@ export default class DeviceSettings extends BaseMethod<ApplySettings> {
16
16
  { name: 'autoLockDelayMs', type: 'number' },
17
17
  { name: 'displayRotation', type: 'number' },
18
18
  { name: 'passphraseAlwaysOnDevice', type: 'boolean' },
19
- { name: 'safetyChecks', type: 'object' },
19
+ { name: 'safetyChecks', type: 'number' },
20
20
  { name: 'experimentalFeatures', type: 'boolean' },
21
21
  ]);
22
22
 
package/src/core/index.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  import semver from 'semver';
2
2
  import EventEmitter from 'events';
3
3
  import { Features, OneKeyDeviceInfo } from '@onekeyfe/hd-transport';
4
- import { createDeferred, Deferred, ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
4
+ import {
5
+ createDeferred,
6
+ Deferred,
7
+ ERRORS,
8
+ HardwareError,
9
+ HardwareErrorCode,
10
+ } from '@onekeyfe/hd-shared';
5
11
  import {
6
12
  getDeviceFirmwareVersion,
7
13
  getDeviceModel,
@@ -236,6 +242,19 @@ export const callAPI = async (message: CoreMessage) => {
236
242
  }
237
243
  }
238
244
 
245
+ // Check the level of safety_check when performing transactions on the test network on touch
246
+ try {
247
+ await method.checkSafetyLevelOnTestNet();
248
+ } catch (e) {
249
+ const error =
250
+ e instanceof HardwareError
251
+ ? e
252
+ : ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
253
+ messageResponse = createResponseMessage(method.responseID, false, { error });
254
+ _callPromise?.resolve(messageResponse);
255
+ return;
256
+ }
257
+
239
258
  try {
240
259
  const response: object = await method.run();
241
260
  Log.debug('Call API - Inner Method Run: ');
@@ -19,7 +19,7 @@ const initialSettings: ConnectSettings = {
19
19
  trustedHost: false,
20
20
  connectSrc: DEFAULT_DOMAIN,
21
21
  iframeSrc: `${DEFAULT_DOMAIN}iframe.html`,
22
- parentOrigin: window.location ? window.location.origin : '',
22
+ parentOrigin: window && window.location ? window.location.origin : '',
23
23
  supportedBrowser:
24
24
  typeof navigator !== 'undefined' ? !/Trident|MSIE|Edge/.test(navigator.userAgent) : true,
25
25
  env: 'web',
@@ -261,12 +261,18 @@ export class Device extends EventEmitter {
261
261
 
262
262
  const deviceId = _deviceId || this.features?.device_id;
263
263
  if (!deviceId) return undefined;
264
+ if (!this.passphraseState) return undefined;
264
265
 
265
- const key = `${deviceId}`;
266
266
  const usePassKey = `${deviceId}@${this.passphraseState}`;
267
- // When creating a wallet, use device_id as the key
268
- const session = deviceSessionCache[key] ?? deviceSessionCache[usePassKey];
269
- return this.passphraseState ? session : undefined;
267
+
268
+ if (!deviceSessionCache[usePassKey]) {
269
+ const key = `${deviceId}`;
270
+ if (deviceSessionCache[key]) {
271
+ deviceSessionCache[usePassKey] = deviceSessionCache[key];
272
+ }
273
+ }
274
+
275
+ return deviceSessionCache[usePassKey];
270
276
  }
271
277
 
272
278
  setInternalState(state: string, initSession?: boolean) {