@onekeyfe/hd-transport-react-native 1.2.3-alpha.1 → 1.2.3-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/BleManager.d.ts +6 -5
- package/dist/BleManager.d.ts.map +1 -1
- package/dist/bleEncryption.d.ts +17 -0
- package/dist/bleEncryption.d.ts.map +1 -0
- package/dist/bleKeyMissing.d.ts +7 -0
- package/dist/bleKeyMissing.d.ts.map +1 -0
- package/dist/bleNativeDisconnect.d.ts +3 -0
- package/dist/bleNativeDisconnect.d.ts.map +1 -0
- package/dist/index.d.ts +69 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +951 -139
- package/package.json +6 -6
- package/src/BleManager.ts +113 -5
- package/src/__tests__/androidEncryption.test.ts +482 -0
- package/src/__tests__/androidKeyMissing.test.ts +307 -0
- package/src/__tests__/bleNativeDisconnect.test.ts +33 -0
- package/src/__tests__/connectTimeout.test.ts +427 -3
- package/src/__tests__/enumerate.test.ts +15 -0
- package/src/__tests__/protocolV2Link.test.ts +991 -62
- package/src/__tests__/staleCallTimeout.test.ts +34 -5
- package/src/bleEncryption.ts +267 -0
- package/src/bleKeyMissing.ts +106 -0
- package/src/bleNativeDisconnect.ts +40 -0
- package/src/index.ts +785 -156
package/README.md
CHANGED
|
@@ -26,4 +26,4 @@ yar update:protobuf to generate new ./messages.json and ./src/types/messages.ts
|
|
|
26
26
|
|
|
27
27
|
## Docs
|
|
28
28
|
|
|
29
|
-
Documentation is available [
|
|
29
|
+
Documentation is available [Hardware SDK Getting Started](https://developer.onekey.so/en/hardware-sdk/getting-started)
|
package/dist/BleManager.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Peripheral } from '@onekeyfe/react-native-ble-utils';
|
|
2
2
|
export declare const getConnectedDeviceIds: (serviceUuids: string[]) => Promise<Peripheral[]>;
|
|
3
3
|
export declare const getBondedDevices: () => Promise<Peripheral[]>;
|
|
4
|
-
export declare const pairDevice: (macAddress: string) => Promise<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export declare const pairDevice: (macAddress: string) => Promise<import("@onekeyfe/react-native-ble-utils").PairDeviceResult>;
|
|
5
|
+
export declare const SYSTEM_BONDING_RESTART_WINDOW_MS = 1500;
|
|
6
|
+
export type DeviceBondStateOptions = {
|
|
7
|
+
systemInitiated?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const onDeviceBondState: (bleMacAddress: string, signal?: AbortSignal, options?: DeviceBondStateOptions) => Promise<Peripheral | undefined>;
|
|
9
10
|
//# sourceMappingURL=BleManager.d.ts.map
|
package/dist/BleManager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleManager.d.ts","sourceRoot":"","sources":["../src/BleManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BleManager.d.ts","sourceRoot":"","sources":["../src/BleManager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAsBnE,eAAO,MAAM,qBAAqB,iBAAkB,MAAM,EAAE,0BACZ,CAAC;AAEjD,eAAO,MAAM,gBAAgB,6BAAwC,CAAC;AAEtE,eAAO,MAAM,UAAU,eAAgB,MAAM,yEAAoC,CAAC;AAMlF,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG;IAMnC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAkCF,eAAO,MAAM,iBAAiB,kBACb,MAAM,WACZ,WAAW,YACV,sBAAsB,KAC/B,QAAQ,UAAU,GAAG,SAAS,CA0E7B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const HCI_PIN_OR_KEY_MISSING = 6;
|
|
2
|
+
export type AndroidLinkEncryption = 'encrypted' | 'already-encrypted' | 're-paired' | 'unresolved';
|
|
3
|
+
export declare const isBleEncryptionTrackingSupported: () => boolean;
|
|
4
|
+
export declare const startBleEncryptionTracking: () => boolean;
|
|
5
|
+
export declare const stopBleEncryptionTracking: () => void;
|
|
6
|
+
export declare const markBleLinkEncrypted: (deviceId: string) => void;
|
|
7
|
+
export type WaitForAndroidLinkEncryptionOptions = {
|
|
8
|
+
deviceId: string;
|
|
9
|
+
linkStartedAt: number;
|
|
10
|
+
resultTimeoutMs: number;
|
|
11
|
+
repairTimeoutMs: number;
|
|
12
|
+
keyMissingGraceMs: number;
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
onRepairStarted?: () => void;
|
|
15
|
+
};
|
|
16
|
+
export declare const waitForAndroidLinkEncryption: ({ deviceId, linkStartedAt, resultTimeoutMs, repairTimeoutMs, keyMissingGraceMs, signal, onRepairStarted, }: WaitForAndroidLinkEncryptionOptions) => Promise<AndroidLinkEncryption>;
|
|
17
|
+
//# sourceMappingURL=bleEncryption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bleEncryption.d.ts","sourceRoot":"","sources":["../src/bleEncryption.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,sBAAsB,IAAO,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAE7B,WAAW,GAEX,mBAAmB,GAEnB,WAAW,GAEX,YAAY,CAAC;AA0CjB,eAAO,MAAM,gCAAgC,eAA2C,CAAC;AAGzF,eAAO,MAAM,0BAA0B,QAAO,OAwB7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAMrC,CAAC;AAMF,eAAO,MAAM,oBAAoB,aAAc,MAAM,SAGpD,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,MAAM,CAAC;IAEtB,eAAe,EAAE,MAAM,CAAC;IAExB,eAAe,EAAE,MAAM,CAAC;IAExB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAOF,eAAO,MAAM,4BAA4B,+GAQtC,mCAAmC,KAAG,QAAQ,qBAAqB,CAuHrE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const isBleKeyMissingSupported: () => boolean;
|
|
2
|
+
export declare const startBleKeyMissingTracking: () => boolean;
|
|
3
|
+
export declare const stopBleKeyMissingTracking: () => void;
|
|
4
|
+
export declare const hasBleKeyMissingSince: (deviceId: string, sinceMs: number) => boolean;
|
|
5
|
+
export declare const onBleKeyMissing: (deviceId: string, callback: () => void) => (() => void);
|
|
6
|
+
export declare const waitForBleKeyMissing: (deviceId: string, sinceMs: number, timeoutMs: number) => Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=bleKeyMissing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bleKeyMissing.d.ts","sourceRoot":"","sources":["../src/bleKeyMissing.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,wBAAwB,eAA2C,CAAC;AAGjF,eAAO,MAAM,0BAA0B,QAAO,OAY7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAKrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,aAAc,MAAM,WAAW,MAAM,KAAG,OAGzE,CAAC;AAGF,eAAO,MAAM,eAAe,aAAc,MAAM,YAAY,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CASnF,CAAC;AAOF,eAAO,MAAM,oBAAoB,aACrB,MAAM,WACP,MAAM,aACJ,MAAM,KAChB,QAAQ,OAAO,CAejB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bleNativeDisconnect.d.ts","sourceRoot":"","sources":["../src/bleNativeDisconnect.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,0BAA0B,UAAW,OAAO,KAAG,OAU3D,CAAC;AAEF,eAAO,MAAM,4BAA4B,UAAW,OAAO,UAU1D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -62,6 +62,24 @@ declare const getFirmwareUploadWriteRetryType: (error: unknown) => FirmwareUploa
|
|
|
62
62
|
*/
|
|
63
63
|
declare const BLE_WRITE_PACKET_TIMEOUT_MS = 10000;
|
|
64
64
|
declare const BLE_NATIVE_TEARDOWN_TIMEOUT_MS = 3000;
|
|
65
|
+
/**
|
|
66
|
+
* Android reports a lost bond (ACTION_KEY_MISSING) while it encrypts a new link, so only
|
|
67
|
+
* a failure this soon after the link started can be explained by it. Later disconnects,
|
|
68
|
+
* such as a firmware-update reboot, must keep their own meaning.
|
|
69
|
+
*/
|
|
70
|
+
declare const ANDROID_KEY_MISSING_LINK_WINDOW_MS = 10000;
|
|
71
|
+
/** The broadcast and the GATT disconnect it explains travel separately; either can land first. */
|
|
72
|
+
declare const ANDROID_KEY_MISSING_GRACE_MS = 500;
|
|
73
|
+
/**
|
|
74
|
+
* Android reports a bonded link's first encryption result within about half a second of
|
|
75
|
+
* connecting. Past this, the result is treated as unknown and the link is used as before.
|
|
76
|
+
*/
|
|
77
|
+
declare const ANDROID_ENCRYPTION_RESULT_TIMEOUT_MS = 1500;
|
|
78
|
+
/**
|
|
79
|
+
* A system re-pairing needs the user to accept a pairing request and confirm the code on the
|
|
80
|
+
* device. The Bluetooth stack gives up after 30s and then reports key missing.
|
|
81
|
+
*/
|
|
82
|
+
declare const ANDROID_SYSTEM_REPAIR_TIMEOUT_MS = 35000;
|
|
65
83
|
/** Consecutive wedged writes on one device before the BLE manager itself is recreated. */
|
|
66
84
|
declare const BLE_WRITE_TIMEOUT_MANAGER_RESET_THRESHOLD = 2;
|
|
67
85
|
type ProtocolV2BleTuning = {
|
|
@@ -74,6 +92,16 @@ declare function getProtocolV2BleTuning(): {
|
|
|
74
92
|
iosPacketLength: number;
|
|
75
93
|
androidPacketLength: number;
|
|
76
94
|
};
|
|
95
|
+
/**
|
|
96
|
+
* With no cached GATT table the stack runs its own discovery (up to ~8s) before the MTU
|
|
97
|
+
* exchange, so the bound sits above that; a stuck exchange never completes.
|
|
98
|
+
*/
|
|
99
|
+
declare const ANDROID_MTU_EXCHANGE_TIMEOUT_MS = 12000;
|
|
100
|
+
/**
|
|
101
|
+
* Android keeps an LE link, with per-link ATT state such as a pending MTU exchange, for its
|
|
102
|
+
* 4s GATT link idle timer after the last client closes; a reconnect inside it reuses the link.
|
|
103
|
+
*/
|
|
104
|
+
declare const ANDROID_LINK_DROP_QUIET_MS = 5000;
|
|
77
105
|
/**
|
|
78
106
|
* JS backstop for connect. The native adapter applies its own 3s budget, but it
|
|
79
107
|
* schedules that timeout on its serial queue, so a busy queue (e.g. right after a
|
|
@@ -109,6 +137,7 @@ declare class ReactNativeBleTransport {
|
|
|
109
137
|
name: string;
|
|
110
138
|
configured: boolean;
|
|
111
139
|
stopped: boolean;
|
|
140
|
+
private readonly bondAbortController;
|
|
112
141
|
scanTimeout: number;
|
|
113
142
|
runPromise: Deferred<any> | null;
|
|
114
143
|
private runPromiseDeviceId;
|
|
@@ -134,12 +163,18 @@ declare class ReactNativeBleTransport {
|
|
|
134
163
|
private confirmedProtocolV2;
|
|
135
164
|
/** Consecutive detections that failed while trusting sessionProtocols. */
|
|
136
165
|
private protocolReprobeFailures;
|
|
166
|
+
/** Endpoints whose last detection got no answer; 'woken' once their Initialize wake is spent. */
|
|
167
|
+
private silentDetections;
|
|
168
|
+
/** Android endpoints whose cached GATT table is suspect; the next connect refreshes it. */
|
|
169
|
+
private androidGattCacheRefreshes;
|
|
137
170
|
/**
|
|
138
171
|
* Native encryption/pairing failures seen before Protocol V2 probe starts.
|
|
139
172
|
* Pro2/Neo GATT connect can succeed on a stale iOS bond; the CCCD write then
|
|
140
173
|
* fails with ATT 5/15. Remember it so detectProtocol fails immediately.
|
|
141
174
|
*/
|
|
142
175
|
private staleBondErrors;
|
|
176
|
+
/** When the current Android link attempt began; bounds which key-missing signals apply. */
|
|
177
|
+
private androidLinkStartedAt;
|
|
143
178
|
/** Strict or previously confirmed V2 target while acquire installs notifications. */
|
|
144
179
|
private acquiringProtocolV2;
|
|
145
180
|
private protocolV2Assemblers;
|
|
@@ -154,12 +189,15 @@ declare class ReactNativeBleTransport {
|
|
|
154
189
|
private nextMonitorToken;
|
|
155
190
|
/** Serializes transport lifecycle changes for the same physical device. */
|
|
156
191
|
private lifecycleOperations;
|
|
192
|
+
private stopPromise?;
|
|
193
|
+
private scanCleanups;
|
|
157
194
|
constructor(options: TransportOptions);
|
|
158
195
|
init(logger: any, emitter: EventEmitter): void;
|
|
159
196
|
configure(signedData: any): void;
|
|
160
197
|
configureProtocolV2(signedData: any): void;
|
|
161
198
|
listen(): void;
|
|
162
199
|
getPlxManager(): Promise<BleManager>;
|
|
200
|
+
private waitForManagerReset;
|
|
163
201
|
resolveCharacteristics(device: Device): Promise<ResolvedBleCharacteristics>;
|
|
164
202
|
attachDisconnectSubscription(transport: BleTransport, device: Device, uuid: string): void;
|
|
165
203
|
private emitDeviceDisconnect;
|
|
@@ -182,14 +220,35 @@ declare class ReactNativeBleTransport {
|
|
|
182
220
|
private releaseNative;
|
|
183
221
|
post(session: string, name: string, data: Record<string, unknown>): Promise<void>;
|
|
184
222
|
call(uuid: string, name: string, data: Record<string, unknown>, options?: TransportCallOptions): Promise<transport.MessageFromOneKey>;
|
|
223
|
+
/**
|
|
224
|
+
* Android 16+ keeps a bond the device no longer holds keys for. The device drops the link
|
|
225
|
+
* and the only structured evidence is ACTION_KEY_MISSING, so a link loss right after
|
|
226
|
+
* connect is re-read as an invalid bond when that signal belongs to the same attempt.
|
|
227
|
+
*/
|
|
228
|
+
private resolveAndroidBondInvalid;
|
|
229
|
+
/**
|
|
230
|
+
* Android 16+ encrypts a bonded link on its own right after connecting. Subscribing to
|
|
231
|
+
* notifications before that finishes gets the CCCD write rejected, and the framework's retry
|
|
232
|
+
* encrypts again with the same stale key; firmware that allows one failure per link then drops
|
|
233
|
+
* it before the system can re-pair. Holding GATT until the result lets a lost bond be re-paired
|
|
234
|
+
* in place. Without the platform signal this resolves immediately.
|
|
235
|
+
*/
|
|
236
|
+
private waitForAndroidLinkSecurity;
|
|
185
237
|
private callProtocolV1;
|
|
186
|
-
stop(): void
|
|
238
|
+
stop(): Promise<void>;
|
|
187
239
|
disconnect(session: string): Promise<void>;
|
|
188
240
|
private disconnectUnlocked;
|
|
189
241
|
private runNativeTeardown;
|
|
190
242
|
private runBestEffortNativeOperation;
|
|
191
243
|
private runLifecycleOperation;
|
|
192
|
-
cancel(): void
|
|
244
|
+
cancel(): Promise<void>;
|
|
245
|
+
/**
|
|
246
|
+
* Android: request the MTU with nothing queued ahead and never close the client while it is
|
|
247
|
+
* outstanding; a link that times out or stays at MTU 23 is dropped.
|
|
248
|
+
*/
|
|
249
|
+
private negotiateAndroidMtu;
|
|
250
|
+
/** Close the client and wait out the link idle timer so the next connect gets a fresh link. */
|
|
251
|
+
private dropAndroidLink;
|
|
193
252
|
/** Run a native connect under the JS backstop budget. */
|
|
194
253
|
private connectWithTimeout;
|
|
195
254
|
/** Resolve the complete GATT shape under a budget so acquire() always settles. */
|
|
@@ -224,6 +283,13 @@ declare class ReactNativeBleTransport {
|
|
|
224
283
|
/** Protocol to route a call with: confirmed if known, otherwise the one being probed. */
|
|
225
284
|
private getActiveProtocol;
|
|
226
285
|
private detectProtocol;
|
|
286
|
+
/**
|
|
287
|
+
* A sleeping Classic drops GetFeatures/Ping and only leaves its screensaver on Initialize, which
|
|
288
|
+
* resets the wallet session, so it is sent once after a fully silent detection. The firmware does
|
|
289
|
+
* not reliably answer it, so its timeout must not drop the link. It only runs when V1 is probed
|
|
290
|
+
* first, so a late reply lands on the V1 probe rather than on a V2 one.
|
|
291
|
+
*/
|
|
292
|
+
private wakeSilentProtocolV1Device;
|
|
227
293
|
private resetProbeStateAfterProtocolProbe;
|
|
228
294
|
private probeProtocolV1;
|
|
229
295
|
private probeProtocolV2;
|
|
@@ -247,4 +313,4 @@ declare class ReactNativeBleTransport {
|
|
|
247
313
|
getProtocolType(path: string): ProtocolType | undefined;
|
|
248
314
|
}
|
|
249
315
|
|
|
250
|
-
export { BLE_CONNECT_TIMEOUT_MANAGER_RESET_THRESHOLD, BLE_CONNECT_TIMEOUT_MS, BLE_GATT_SETUP_TIMEOUT_MS, BLE_NATIVE_TEARDOWN_TIMEOUT_MS, BLE_SETUP_WEDGED_MESSAGE, BLE_WRITE_PACKET_TIMEOUT_MS, BLE_WRITE_TIMEOUT_MANAGER_RESET_THRESHOLD, IOneKeyDevice, PROTOCOL_REPROBE_FALLBACK_ATTEMPTS, ProtocolV2BleTuning, configureProtocolV2BleTuning, ReactNativeBleTransport as default, getFirmwareUploadWriteRetryType, getProtocolV2BleTuning, resetProtocolV2BleTuning };
|
|
316
|
+
export { ANDROID_ENCRYPTION_RESULT_TIMEOUT_MS, ANDROID_KEY_MISSING_GRACE_MS, ANDROID_KEY_MISSING_LINK_WINDOW_MS, ANDROID_LINK_DROP_QUIET_MS, ANDROID_MTU_EXCHANGE_TIMEOUT_MS, ANDROID_SYSTEM_REPAIR_TIMEOUT_MS, BLE_CONNECT_TIMEOUT_MANAGER_RESET_THRESHOLD, BLE_CONNECT_TIMEOUT_MS, BLE_GATT_SETUP_TIMEOUT_MS, BLE_NATIVE_TEARDOWN_TIMEOUT_MS, BLE_SETUP_WEDGED_MESSAGE, BLE_WRITE_PACKET_TIMEOUT_MS, BLE_WRITE_TIMEOUT_MANAGER_RESET_THRESHOLD, IOneKeyDevice, PROTOCOL_REPROBE_FALLBACK_ATTEMPTS, ProtocolV2BleTuning, configureProtocolV2BleTuning, ReactNativeBleTransport as default, getFirmwareUploadWriteRetryType, getProtocolV2BleTuning, resetProtocolV2BleTuning };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAGL,UAAU,IAAI,aAAa,EAG5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,SAAS,EAAE,EAChB,KAAK,oBAAoB,EAIzB,KAAK,YAAY,EAKjB,KAAK,oBAAoB,EAI1B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|