@bota-dev/react-native-sdk 0.0.7 → 0.0.8

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.
Files changed (40) hide show
  1. package/README.md +30 -2
  2. package/lib/commonjs/ble/constants.js +28 -2
  3. package/lib/commonjs/ble/constants.js.map +1 -1
  4. package/lib/commonjs/ble/parsers.js +128 -0
  5. package/lib/commonjs/ble/parsers.js.map +1 -1
  6. package/lib/commonjs/managers/DeviceManager.js +179 -0
  7. package/lib/commonjs/managers/DeviceManager.js.map +1 -1
  8. package/lib/commonjs/utils/crypto.js +169 -0
  9. package/lib/commonjs/utils/crypto.js.map +1 -0
  10. package/lib/commonjs/utils/index.js +12 -0
  11. package/lib/commonjs/utils/index.js.map +1 -1
  12. package/lib/module/ble/constants.js +26 -0
  13. package/lib/module/ble/constants.js.map +1 -1
  14. package/lib/module/ble/parsers.js +124 -1
  15. package/lib/module/ble/parsers.js.map +1 -1
  16. package/lib/module/managers/DeviceManager.js +181 -2
  17. package/lib/module/managers/DeviceManager.js.map +1 -1
  18. package/lib/module/utils/crypto.js +160 -0
  19. package/lib/module/utils/crypto.js.map +1 -0
  20. package/lib/module/utils/index.js +1 -0
  21. package/lib/module/utils/index.js.map +1 -1
  22. package/lib/typescript/src/ble/constants.d.ts +18 -0
  23. package/lib/typescript/src/ble/constants.d.ts.map +1 -1
  24. package/lib/typescript/src/ble/parsers.d.ts +34 -1
  25. package/lib/typescript/src/ble/parsers.d.ts.map +1 -1
  26. package/lib/typescript/src/managers/DeviceManager.d.ts +73 -1
  27. package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -1
  28. package/lib/typescript/src/models/Device.d.ts +65 -0
  29. package/lib/typescript/src/models/Device.d.ts.map +1 -1
  30. package/lib/typescript/src/utils/crypto.d.ts +83 -0
  31. package/lib/typescript/src/utils/crypto.d.ts.map +1 -0
  32. package/lib/typescript/src/utils/index.d.ts +1 -0
  33. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  34. package/package.json +6 -2
  35. package/src/ble/constants.ts +26 -0
  36. package/src/ble/parsers.ts +131 -0
  37. package/src/managers/DeviceManager.ts +244 -0
  38. package/src/models/Device.ts +76 -0
  39. package/src/utils/crypto.ts +221 -0
  40. package/src/utils/index.ts +1 -0
@@ -5,10 +5,11 @@
5
5
  import { Buffer } from 'buffer';
6
6
  import EventEmitter from 'eventemitter3';
7
7
  import { getBleManager } from '../ble/BleManager';
8
- import { SERVICE_DEVICE_INFO, SERVICE_BOTA_PROVISIONING, SERVICE_BOTA_CONTROL, CHAR_SERIAL_NUMBER, CHAR_FIRMWARE_REVISION, CHAR_HARDWARE_REVISION, CHAR_PAIRING_STATE, CHAR_DEVICE_TOKEN, CHAR_API_ENDPOINT, CHAR_PROVISIONING_RESULT, CHAR_DEVICE_STATUS, CHAR_RECORDING_CONTROL, CHAR_RECORDING_STATUS, CHAR_TIME_SYNC, API_ENDPOINT_PRODUCTION, API_ENDPOINT_SANDBOX, PROVISIONING_SUCCESS, PROVISIONING_INVALID_TOKEN, PROVISIONING_STORAGE_ERROR, PROVISIONING_CHUNK_ERROR, OPERATION_TIMEOUT, RECORDING_CMD_GRANT_START, RECORDING_CMD_GRANT_STOP, RECORDING_RESULT_SUCCESS, RECORDING_RESULT_ALREADY_RECORDING, RECORDING_RESULT_NOT_RECORDING, RECORDING_RESULT_INVALID_GRANT, RECORDING_RESULT_GRANT_EXPIRED } from '../ble/constants';
9
- import { parsePairingState, parseDeviceStatus, createTimeSyncData } from '../ble/parsers';
8
+ import { SERVICE_DEVICE_INFO, SERVICE_BOTA_PROVISIONING, SERVICE_BOTA_CONTROL, SERVICE_BOTA_WIFI_CONFIG, CHAR_SERIAL_NUMBER, CHAR_FIRMWARE_REVISION, CHAR_HARDWARE_REVISION, CHAR_PAIRING_STATE, CHAR_DEVICE_TOKEN, CHAR_API_ENDPOINT, CHAR_PROVISIONING_RESULT, CHAR_DEVICE_STATUS, CHAR_RECORDING_CONTROL, CHAR_RECORDING_STATUS, CHAR_TIME_SYNC, CHAR_WIFI_GRANT, CHAR_WIFI_CREDENTIAL, CHAR_WIFI_STATUS, API_ENDPOINT_PRODUCTION, API_ENDPOINT_SANDBOX, PROVISIONING_SUCCESS, PROVISIONING_INVALID_TOKEN, PROVISIONING_STORAGE_ERROR, PROVISIONING_CHUNK_ERROR, OPERATION_TIMEOUT, RECORDING_CMD_GRANT_START, RECORDING_CMD_GRANT_STOP, RECORDING_RESULT_SUCCESS, RECORDING_RESULT_ALREADY_RECORDING, RECORDING_RESULT_NOT_RECORDING, RECORDING_RESULT_INVALID_GRANT, RECORDING_RESULT_GRANT_EXPIRED } from '../ble/constants';
9
+ import { parsePairingState, parseDeviceStatus, createTimeSyncData, parseWiFiStatusInfo, parseWiFiConfigResult, createWiFiGrantPacket } from '../ble/parsers';
10
10
  import { DeviceError, ProvisioningError } from '../utils/errors';
11
11
  import { logger } from '../utils/logger';
12
+ import { deriveSessionKey, encryptWiFiCredentials, formatWiFiCredentialPacket } from '../utils/crypto';
12
13
  const log = logger.tag('DeviceManager');
13
14
 
14
15
  /**
@@ -626,6 +627,184 @@ export class DeviceManager extends EventEmitter {
626
627
  };
627
628
  }
628
629
 
630
+ // ============================================================================
631
+ // WiFi Upload Configuration
632
+ // ============================================================================
633
+
634
+ /**
635
+ * Configure WiFi credentials on device via BLE.
636
+ * Requires a WiFi configuration grant from backend.
637
+ *
638
+ * @param deviceId - Connected device ID
639
+ * @param credentials - WiFi network credentials
640
+ * @param grant - WiFi config grant from backend
641
+ * @returns Configuration result
642
+ *
643
+ * @example
644
+ * ```typescript
645
+ * // 1. Get grant from backend
646
+ * const grant = await api.createWiFiConfigGrant(deviceId);
647
+ *
648
+ * // 2. Configure device via BLE
649
+ * const result = await deviceManager.configureWiFi(
650
+ * deviceId,
651
+ * { ssid: 'MyNetwork', password: 'password123', securityType: 'WPA2' },
652
+ * grant
653
+ * );
654
+ *
655
+ * if (result.success) {
656
+ * console.log('WiFi configured successfully');
657
+ * }
658
+ * ```
659
+ */
660
+ async configureWiFi(deviceId, credentials, grant) {
661
+ log.info('Configuring WiFi on device', {
662
+ deviceId,
663
+ ssid: credentials.ssid
664
+ });
665
+ try {
666
+ // Step 1: Submit WiFi config grant to device
667
+ const grantPacket = createWiFiGrantPacket(grant.grantBlob);
668
+ await this.bleManager.writeCharacteristic(deviceId, SERVICE_BOTA_WIFI_CONFIG, CHAR_WIFI_GRANT, grantPacket);
669
+ log.debug('WiFi grant submitted');
670
+
671
+ // Step 2: Derive K_session from grant
672
+ const sessionKey = deriveSessionKey(grant.grantBlob);
673
+
674
+ // Step 3: Encrypt WiFi credentials with K_session
675
+ const encrypted = encryptWiFiCredentials(credentials.ssid, credentials.password, sessionKey);
676
+
677
+ // Step 4: Format credential packet for BLE transmission
678
+ const credentialPacket = formatWiFiCredentialPacket(encrypted);
679
+ log.debug('Sending encrypted WiFi credentials', {
680
+ packetSize: credentialPacket.length
681
+ });
682
+
683
+ // Step 5: Write encrypted credentials to device
684
+ await this.bleManager.writeCharacteristic(deviceId, SERVICE_BOTA_WIFI_CONFIG, CHAR_WIFI_CREDENTIAL, credentialPacket);
685
+
686
+ // Step 6: Wait for configuration result
687
+ const result = await this.waitForWiFiConfigResult(deviceId);
688
+ if (result.success) {
689
+ log.info('WiFi configuration successful', {
690
+ deviceId
691
+ });
692
+ } else {
693
+ log.warn('WiFi configuration failed', {
694
+ deviceId,
695
+ error: result.error
696
+ });
697
+ }
698
+ return result;
699
+ } catch (error) {
700
+ log.error('WiFi configuration error', error instanceof Error ? error : undefined);
701
+ throw new DeviceError(`Failed to configure WiFi: ${error instanceof Error ? error.message : 'Unknown error'}`, 'WIFI_CONFIG_ERROR', deviceId, error instanceof Error ? error : undefined);
702
+ }
703
+ }
704
+
705
+ /**
706
+ * Get WiFi connection status from device.
707
+ *
708
+ * @param deviceId - Connected device ID
709
+ * @returns WiFi status information
710
+ *
711
+ * @example
712
+ * ```typescript
713
+ * const status = await deviceManager.getWiFiStatus(deviceId);
714
+ * console.log('WiFi status:', status.status);
715
+ * if (status.status === 'connected') {
716
+ * console.log('Connected to:', status.ssid);
717
+ * console.log('Signal strength:', status.signalStrength);
718
+ * }
719
+ * ```
720
+ */
721
+ async getWiFiStatus(deviceId) {
722
+ log.debug('Reading WiFi status', {
723
+ deviceId
724
+ });
725
+ try {
726
+ const data = await this.bleManager.readCharacteristic(deviceId, SERVICE_BOTA_WIFI_CONFIG, CHAR_WIFI_STATUS);
727
+ const status = parseWiFiStatusInfo(data);
728
+ log.debug('WiFi status', {
729
+ deviceId,
730
+ status: status.status,
731
+ ssid: status.ssid
732
+ });
733
+ return status;
734
+ } catch (error) {
735
+ log.error('Failed to read WiFi status', error instanceof Error ? error : undefined);
736
+ throw new DeviceError(`Failed to read WiFi status: ${error instanceof Error ? error.message : 'Unknown error'}`, 'WIFI_STATUS_ERROR', deviceId, error instanceof Error ? error : undefined);
737
+ }
738
+ }
739
+
740
+ /**
741
+ * Subscribe to WiFi status updates from device.
742
+ *
743
+ * @param deviceId - Connected device ID
744
+ * @param callback - Callback function for status updates
745
+ * @returns Subscription object (call .remove() to unsubscribe)
746
+ *
747
+ * @example
748
+ * ```typescript
749
+ * const subscription = deviceManager.subscribeToWiFiStatus(deviceId, (status) => {
750
+ * console.log('WiFi status update:', status.status);
751
+ * if (status.status === 'connected') {
752
+ * console.log('Connected to:', status.ssid);
753
+ * } else if (status.status === 'failed') {
754
+ * console.error('Connection failed:', status.lastError);
755
+ * }
756
+ * });
757
+ *
758
+ * // Later: unsubscribe
759
+ * subscription.remove();
760
+ * ```
761
+ */
762
+ subscribeToWiFiStatus(deviceId, callback) {
763
+ log.debug('Subscribing to WiFi status', {
764
+ deviceId
765
+ });
766
+ return this.bleManager.subscribeToCharacteristic(deviceId, SERVICE_BOTA_WIFI_CONFIG, CHAR_WIFI_STATUS, data => {
767
+ try {
768
+ const status = parseWiFiStatusInfo(data);
769
+ callback(status);
770
+ } catch (error) {
771
+ log.error('Failed to parse WiFi status', error instanceof Error ? error : undefined);
772
+ }
773
+ }, error => {
774
+ log.error('WiFi status subscription error', error);
775
+ });
776
+ }
777
+
778
+ /**
779
+ * Wait for WiFi configuration result from device.
780
+ */
781
+ waitForWiFiConfigResult(deviceId) {
782
+ return new Promise((resolve, reject) => {
783
+ const timeout = setTimeout(() => {
784
+ subscription.remove();
785
+ reject(new DeviceError('WiFi configuration timeout', 'WIFI_CONFIG_TIMEOUT', deviceId));
786
+ }, OPERATION_TIMEOUT);
787
+ const subscription = this.bleManager.subscribeToCharacteristic(deviceId, SERVICE_BOTA_WIFI_CONFIG, CHAR_WIFI_STATUS, data => {
788
+ try {
789
+ // Configuration result comes via status updates
790
+ const result = parseWiFiConfigResult(data);
791
+ clearTimeout(timeout);
792
+ subscription.remove();
793
+ resolve(result);
794
+ } catch (error) {
795
+ // Ignore parse errors, wait for valid result
796
+ log.debug('Ignoring invalid WiFi config result', {
797
+ error: error instanceof Error ? error.message : String(error)
798
+ });
799
+ }
800
+ }, error => {
801
+ clearTimeout(timeout);
802
+ subscription.remove();
803
+ reject(new DeviceError(`WiFi config result error: ${error.message}`, 'WIFI_CONFIG_RESULT_ERROR', deviceId, error));
804
+ });
805
+ });
806
+ }
807
+
629
808
  /**
630
809
  * Clean up resources
631
810
  */
@@ -1 +1 @@
1
- {"version":3,"names":["Buffer","EventEmitter","getBleManager","SERVICE_DEVICE_INFO","SERVICE_BOTA_PROVISIONING","SERVICE_BOTA_CONTROL","CHAR_SERIAL_NUMBER","CHAR_FIRMWARE_REVISION","CHAR_HARDWARE_REVISION","CHAR_PAIRING_STATE","CHAR_DEVICE_TOKEN","CHAR_API_ENDPOINT","CHAR_PROVISIONING_RESULT","CHAR_DEVICE_STATUS","CHAR_RECORDING_CONTROL","CHAR_RECORDING_STATUS","CHAR_TIME_SYNC","API_ENDPOINT_PRODUCTION","API_ENDPOINT_SANDBOX","PROVISIONING_SUCCESS","PROVISIONING_INVALID_TOKEN","PROVISIONING_STORAGE_ERROR","PROVISIONING_CHUNK_ERROR","OPERATION_TIMEOUT","RECORDING_CMD_GRANT_START","RECORDING_CMD_GRANT_STOP","RECORDING_RESULT_SUCCESS","RECORDING_RESULT_ALREADY_RECORDING","RECORDING_RESULT_NOT_RECORDING","RECORDING_RESULT_INVALID_GRANT","RECORDING_RESULT_GRANT_EXPIRED","parsePairingState","parseDeviceStatus","createTimeSyncData","DeviceError","ProvisioningError","logger","log","tag","DeviceManager","connectedDevices","Map","statusSubscriptions","isInitialized","constructor","bleManager","setupBleListeners","initialize","info","on","device","emit","deviceId","get","error","connectionState","delete","remove","startScan","options","stopScan","getDiscoveredDevices","getConnectedDevices","Array","from","values","connect","id","name","existing","debug","serialNumber","readSerialNumber","firmwareVersion","readFirmwareVersion","hardwareRevision","readHardwareRevision","pairingState","readPairingState","mtu","getMtu","connectedDevice","deviceType","isProvisioned","set","disconnect","isConnected","provision","deviceToken","environment","notConnected","warn","alreadyProvisioned","resultPromise","waitForProvisioningResult","writeApiEndpoint","writeDeviceToken","result","success","invalidToken","storageError","chunkError","syncTime","getStatus","data","readCharacteristic","subscribeToStatus","callback","subscription","subscribeToCharacteristic","status","timeSyncData","writeCharacteristic","toString","replace","undefined","length","endpointByte","token","maxChunkSize","tokenBuffer","totalChunks","Math","ceil","tokenLength","i","start","end","min","chunkData","slice","chunk","alloc","writeUInt8","copy","total","Promise","resolve","reject","timeout","setTimeout","clearTimeout","resultCode","message","requestStartRecording","grantToken","_options","payload","waitForRecordingResult","requestStopRecording","getRecordingState","parseRecordingState","subscribeToRecordingState","state","timestamp","readUInt32LE","source","active","startedAt","Date","initiatedBy","destroy","sub","clear","removeAllListeners"],"sourceRoot":"../../../src","sources":["managers/DeviceManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Buffer","EventEmitter","getBleManager","SERVICE_DEVICE_INFO","SERVICE_BOTA_PROVISIONING","SERVICE_BOTA_CONTROL","SERVICE_BOTA_WIFI_CONFIG","CHAR_SERIAL_NUMBER","CHAR_FIRMWARE_REVISION","CHAR_HARDWARE_REVISION","CHAR_PAIRING_STATE","CHAR_DEVICE_TOKEN","CHAR_API_ENDPOINT","CHAR_PROVISIONING_RESULT","CHAR_DEVICE_STATUS","CHAR_RECORDING_CONTROL","CHAR_RECORDING_STATUS","CHAR_TIME_SYNC","CHAR_WIFI_GRANT","CHAR_WIFI_CREDENTIAL","CHAR_WIFI_STATUS","API_ENDPOINT_PRODUCTION","API_ENDPOINT_SANDBOX","PROVISIONING_SUCCESS","PROVISIONING_INVALID_TOKEN","PROVISIONING_STORAGE_ERROR","PROVISIONING_CHUNK_ERROR","OPERATION_TIMEOUT","RECORDING_CMD_GRANT_START","RECORDING_CMD_GRANT_STOP","RECORDING_RESULT_SUCCESS","RECORDING_RESULT_ALREADY_RECORDING","RECORDING_RESULT_NOT_RECORDING","RECORDING_RESULT_INVALID_GRANT","RECORDING_RESULT_GRANT_EXPIRED","parsePairingState","parseDeviceStatus","createTimeSyncData","parseWiFiStatusInfo","parseWiFiConfigResult","createWiFiGrantPacket","DeviceError","ProvisioningError","logger","deriveSessionKey","encryptWiFiCredentials","formatWiFiCredentialPacket","log","tag","DeviceManager","connectedDevices","Map","statusSubscriptions","isInitialized","constructor","bleManager","setupBleListeners","initialize","info","on","device","emit","deviceId","get","error","connectionState","delete","remove","startScan","options","stopScan","getDiscoveredDevices","getConnectedDevices","Array","from","values","connect","id","name","existing","debug","serialNumber","readSerialNumber","firmwareVersion","readFirmwareVersion","hardwareRevision","readHardwareRevision","pairingState","readPairingState","mtu","getMtu","connectedDevice","deviceType","isProvisioned","set","disconnect","isConnected","provision","deviceToken","environment","notConnected","warn","alreadyProvisioned","resultPromise","waitForProvisioningResult","writeApiEndpoint","writeDeviceToken","result","success","invalidToken","storageError","chunkError","syncTime","getStatus","data","readCharacteristic","subscribeToStatus","callback","subscription","subscribeToCharacteristic","status","timeSyncData","writeCharacteristic","toString","replace","undefined","length","endpointByte","token","maxChunkSize","tokenBuffer","totalChunks","Math","ceil","tokenLength","i","start","end","min","chunkData","slice","chunk","alloc","writeUInt8","copy","total","Promise","resolve","reject","timeout","setTimeout","clearTimeout","resultCode","message","requestStartRecording","grantToken","_options","payload","waitForRecordingResult","requestStopRecording","getRecordingState","parseRecordingState","subscribeToRecordingState","state","timestamp","readUInt32LE","source","active","startedAt","Date","initiatedBy","configureWiFi","credentials","grant","ssid","grantPacket","grantBlob","sessionKey","encrypted","password","credentialPacket","packetSize","waitForWiFiConfigResult","Error","getWiFiStatus","subscribeToWiFiStatus","String","destroy","sub","clear","removeAllListeners"],"sourceRoot":"../../../src","sources":["managers/DeviceManager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Cryptographic utilities for WiFi Upload configuration
3
+ *
4
+ * NOTE: This module requires react-native-quick-crypto to be installed.
5
+ * Add to your app: npm install react-native-quick-crypto
6
+ */
7
+
8
+ import { Buffer } from 'buffer';
9
+
10
+ // Type-only import to avoid runtime errors if crypto is not installed
11
+
12
+ /**
13
+ * Get crypto module (lazy loaded to avoid errors if not installed)
14
+ */
15
+ function getCrypto() {
16
+ try {
17
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
18
+ return require('react-native-quick-crypto');
19
+ } catch {
20
+ throw new Error('WiFi Upload requires react-native-quick-crypto. ' + 'Install it with: npm install react-native-quick-crypto');
21
+ }
22
+ }
23
+
24
+ /**
25
+ * Derive K_session from WiFi config grant.
26
+ * K_session is used by device and app to encrypt/decrypt WiFi credentials in transit.
27
+ *
28
+ * Derivation: K_session = HMAC-SHA256(grant_blob, "BOTA_WIFI_SESSION_V1")
29
+ *
30
+ * @param grantBlob - Base64-encoded JWT grant from backend
31
+ * @returns 32-byte K_session as hex string
32
+ */
33
+ export function deriveSessionKey(grantBlob) {
34
+ const crypto = getCrypto();
35
+ return crypto.createHmac('sha256', grantBlob).update('BOTA_WIFI_SESSION_V1').digest('hex');
36
+ }
37
+
38
+ /**
39
+ * Encrypt WiFi credentials for BLE transmission using ChaCha20-Poly1305.
40
+ *
41
+ * Format sent to device:
42
+ * - 12 bytes: nonce (random)
43
+ * - N bytes: encrypted SSID
44
+ * - 16 bytes: auth tag for SSID
45
+ * - M bytes: encrypted password
46
+ * - 16 bytes: auth tag for password
47
+ *
48
+ * @param ssid - WiFi network SSID
49
+ * @param password - WiFi password
50
+ * @param sessionKey - K_session derived from grant (hex string)
51
+ * @returns Encrypted payload ready for BLE transmission
52
+ */
53
+ export function encryptWiFiCredentials(ssid, password, sessionKey) {
54
+ const crypto = getCrypto();
55
+
56
+ // Convert session key from hex to Buffer
57
+ const keyBuffer = Buffer.from(sessionKey, 'hex');
58
+
59
+ // Generate random nonce (12 bytes for ChaCha20-Poly1305)
60
+ const nonce = crypto.randomBytes(12);
61
+
62
+ // Encrypt SSID
63
+ const ssidCipher = crypto.createCipheriv('chacha20-poly1305', keyBuffer, nonce, {
64
+ authTagLength: 16
65
+ });
66
+ const ssidEncrypted = Buffer.concat([ssidCipher.update(ssid, 'utf-8'), ssidCipher.final()]);
67
+ const ssidAuthTag = ssidCipher.getAuthTag();
68
+
69
+ // Encrypt password (reuse same nonce with different additional data)
70
+ const passwordCipher = crypto.createCipheriv('chacha20-poly1305', keyBuffer, nonce, {
71
+ authTagLength: 16
72
+ });
73
+ // Use different AAD to prevent nonce reuse issues
74
+ passwordCipher.setAAD(Buffer.from('password'), {
75
+ plaintextLength: Buffer.byteLength(password, 'utf-8')
76
+ });
77
+ const passwordEncrypted = Buffer.concat([passwordCipher.update(password, 'utf-8'), passwordCipher.final()]);
78
+ const passwordAuthTag = passwordCipher.getAuthTag();
79
+ return {
80
+ nonce,
81
+ ssidEncrypted,
82
+ ssidAuthTag,
83
+ passwordEncrypted,
84
+ passwordAuthTag
85
+ };
86
+ }
87
+
88
+ /**
89
+ * Decrypt WiFi credentials received from device (if needed for verification).
90
+ *
91
+ * @param encrypted - Encrypted SSID or password
92
+ * @param nonce - 12-byte nonce
93
+ * @param authTag - 16-byte authentication tag
94
+ * @param sessionKey - K_session derived from grant (hex string)
95
+ * @param aad - Additional authenticated data (optional, use 'password' for password field)
96
+ * @returns Decrypted plaintext
97
+ */
98
+ export function decryptWiFiCredential(encrypted, nonce, authTag, sessionKey, aad) {
99
+ const crypto = getCrypto();
100
+
101
+ // Convert session key from hex to Buffer
102
+ const keyBuffer = Buffer.from(sessionKey, 'hex');
103
+
104
+ // Decrypt with ChaCha20-Poly1305
105
+ const decipher = crypto.createDecipheriv('chacha20-poly1305', keyBuffer, nonce, {
106
+ authTagLength: 16
107
+ });
108
+ decipher.setAuthTag(authTag);
109
+ if (aad) {
110
+ decipher.setAAD(Buffer.from(aad), {
111
+ plaintextLength: encrypted.length
112
+ });
113
+ }
114
+ const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]);
115
+ return decrypted.toString('utf-8');
116
+ }
117
+
118
+ /**
119
+ * Format encrypted WiFi credentials for BLE transmission.
120
+ *
121
+ * Packet format:
122
+ * [nonce (12 bytes)][ssid_encrypted (N bytes)][ssid_tag (16 bytes)]
123
+ * [password_encrypted (M bytes)][password_tag (16 bytes)]
124
+ *
125
+ * @param encrypted - Result from encryptWiFiCredentials
126
+ * @returns Single buffer ready for BLE write
127
+ */
128
+ export function formatWiFiCredentialPacket(encrypted) {
129
+ return Buffer.concat([encrypted.nonce, encrypted.ssidEncrypted, encrypted.ssidAuthTag, encrypted.passwordEncrypted, encrypted.passwordAuthTag]);
130
+ }
131
+
132
+ /**
133
+ * Parse encrypted WiFi credential packet received from device.
134
+ *
135
+ * @param packet - Buffer received from BLE
136
+ * @param ssidLength - Expected SSID encrypted length
137
+ * @param passwordLength - Expected password encrypted length
138
+ * @returns Parsed components
139
+ */
140
+ export function parseWiFiCredentialPacket(packet, ssidLength, passwordLength) {
141
+ let offset = 0;
142
+ const nonce = packet.subarray(offset, offset + 12);
143
+ offset += 12;
144
+ const ssidEncrypted = packet.subarray(offset, offset + ssidLength);
145
+ offset += ssidLength;
146
+ const ssidAuthTag = packet.subarray(offset, offset + 16);
147
+ offset += 16;
148
+ const passwordEncrypted = packet.subarray(offset, offset + passwordLength);
149
+ offset += passwordLength;
150
+ const passwordAuthTag = packet.subarray(offset, offset + 16);
151
+ offset += 16;
152
+ return {
153
+ nonce,
154
+ ssidEncrypted,
155
+ ssidAuthTag,
156
+ passwordEncrypted,
157
+ passwordAuthTag
158
+ };
159
+ }
160
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Buffer","getCrypto","require","Error","deriveSessionKey","grantBlob","crypto","createHmac","update","digest","encryptWiFiCredentials","ssid","password","sessionKey","keyBuffer","from","nonce","randomBytes","ssidCipher","createCipheriv","authTagLength","ssidEncrypted","concat","final","ssidAuthTag","getAuthTag","passwordCipher","setAAD","plaintextLength","byteLength","passwordEncrypted","passwordAuthTag","decryptWiFiCredential","encrypted","authTag","aad","decipher","createDecipheriv","setAuthTag","length","decrypted","toString","formatWiFiCredentialPacket","parseWiFiCredentialPacket","packet","ssidLength","passwordLength","offset","subarray"],"sourceRoot":"../../../src","sources":["utils/crypto.ts"],"mappings":"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","ignoreList":[]}
@@ -5,4 +5,5 @@
5
5
  export * from './errors';
6
6
  export { logger } from './logger';
7
7
  export * from './retry';
8
+ export * from './crypto';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["logger"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"AAAA;AACA;AACA;;AAEA,cAAc,UAAU;AACxB,SAASA,MAAM,QAAQ,UAAU;AACjC,cAAc,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["logger"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"AAAA;AACA;AACA;;AAEA,cAAc,UAAU;AACxB,SAASA,MAAM,QAAQ,UAAU;AACjC,cAAc,SAAS;AACvB,cAAc,UAAU","ignoreList":[]}
@@ -9,6 +9,7 @@ export declare const SERVICE_BOTA_AUDIO = "B07A0001-0000-1000-8000-00805F9B34FB"
9
9
  export declare const SERVICE_BOTA_CONTROL = "B07A0002-0000-1000-8000-00805F9B34FB";
10
10
  export declare const SERVICE_BOTA_PROVISIONING = "B07A0003-0000-1000-8000-00805F9B34FB";
11
11
  export declare const SERVICE_BOTA_STORAGE = "B07A0004-0000-1000-8000-00805F9B34FB";
12
+ export declare const SERVICE_BOTA_WIFI_CONFIG = "B07A0006-0000-1000-8000-00805F9B34FB";
12
13
  export declare const CHAR_MANUFACTURER_NAME = "2A29";
13
14
  export declare const CHAR_MODEL_NUMBER = "2A24";
14
15
  export declare const CHAR_SERIAL_NUMBER = "2A25";
@@ -33,6 +34,9 @@ export declare const CHAR_RECORDING_LIST = "B07A0004-0002-1000-8000-00805F9B34FB
33
34
  export declare const CHAR_RECORDING_TRANSFER = "B07A0004-0003-1000-8000-00805F9B34FB";
34
35
  export declare const CHAR_TRANSFER_CONTROL = "B07A0004-0004-1000-8000-00805F9B34FB";
35
36
  export declare const CHAR_TRANSFER_STATUS = "B07A0004-0005-1000-8000-00805F9B34FB";
37
+ export declare const CHAR_WIFI_GRANT = "B07A0006-0001-1000-8000-00805F9B34FB";
38
+ export declare const CHAR_WIFI_CREDENTIAL = "B07A0006-0002-1000-8000-00805F9B34FB";
39
+ export declare const CHAR_WIFI_STATUS = "B07A0006-0003-1000-8000-00805F9B34FB";
36
40
  export declare const DEVICE_NAME_PREFIX = "Bota-";
37
41
  export declare const DEVICE_NAME_PREFIX_PIN = "Bota-Pin-";
38
42
  export declare const DEVICE_NAME_PREFIX_PIN_4G = "Bota-Pin4G-";
@@ -45,14 +49,28 @@ export declare const MFG_DATA_BATTERY = 4;
45
49
  export declare const DEVICE_TYPE_PIN = 1;
46
50
  export declare const DEVICE_TYPE_PIN_4G = 2;
47
51
  export declare const DEVICE_TYPE_NOTE = 3;
52
+ export declare const CAP_BLE_SYNC = 1;
53
+ export declare const CAP_WIFI_UPLOAD = 2;
54
+ export declare const CAP_LTE_UPLOAD = 4;
55
+ export declare const CAP_REMOTE_RECORD = 8;
48
56
  export declare const PAIRING_STATE_UNPAIRED = 0;
49
57
  export declare const PAIRING_STATE_PAIRING = 1;
50
58
  export declare const PAIRING_STATE_PAIRED = 2;
51
59
  export declare const PAIRING_STATE_ERROR = 3;
60
+ export declare const WIFI_STATUS_IDLE = 0;
61
+ export declare const WIFI_STATUS_CONNECTING = 1;
62
+ export declare const WIFI_STATUS_CONNECTED = 2;
63
+ export declare const WIFI_STATUS_FAILED = 3;
64
+ export declare const WIFI_STATUS_DISCONNECTED = 4;
52
65
  export declare const PROVISIONING_SUCCESS = 0;
53
66
  export declare const PROVISIONING_INVALID_TOKEN = 1;
54
67
  export declare const PROVISIONING_STORAGE_ERROR = 2;
55
68
  export declare const PROVISIONING_CHUNK_ERROR = 3;
69
+ export declare const WIFI_CONFIG_SUCCESS = 0;
70
+ export declare const WIFI_CONFIG_INVALID_GRANT = 1;
71
+ export declare const WIFI_CONFIG_GRANT_EXPIRED = 2;
72
+ export declare const WIFI_CONFIG_DECRYPTION_ERROR = 3;
73
+ export declare const WIFI_CONFIG_STORAGE_ERROR = 4;
56
74
  export declare const API_ENDPOINT_PRODUCTION = 0;
57
75
  export declare const API_ENDPOINT_SANDBOX = 1;
58
76
  export declare const TRANSFER_CMD_LIST = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/ble/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/ble/constants.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * BLE data parsers for Bota device protocol
3
3
  */
4
4
  import { Buffer } from 'buffer';
5
- import type { DeviceType, PairingState, DeviceState, DeviceStatus, DeviceFlags, StorageInfo } from '../models/Device';
5
+ import type { DeviceType, PairingState, DeviceState, DeviceStatus, DeviceFlags, StorageInfo, DeviceCapabilities, WiFiStatus, WiFiStatusInfo, WiFiConfigResult } from '../models/Device';
6
6
  import type { DeviceRecording, AudioCodec, TransferPacket } from '../models/Recording';
7
7
  /**
8
8
  * Parse device type from manufacturer data byte
@@ -97,4 +97,37 @@ export declare function createAckPacket(ackType: 'ack' | 'nack' | 'abort', seque
97
97
  * Bytes 1+: Recording UUID (for start/confirm)
98
98
  */
99
99
  export declare function createTransferCommand(command: 'list' | 'start' | 'confirm', recordingUuid?: string): Buffer;
100
+ /**
101
+ * Parse device capabilities from byte value
102
+ */
103
+ export declare function parseDeviceCapabilities(byte: number): DeviceCapabilities;
104
+ /**
105
+ * Parse WiFi status from byte value
106
+ */
107
+ export declare function parseWiFiStatus(byte: number): WiFiStatus;
108
+ /**
109
+ * Parse WiFi status information from characteristic value
110
+ *
111
+ * Format:
112
+ * Byte 0: Status (0x00=idle, 0x01=connecting, 0x02=connected, 0x03=failed, 0x04=disconnected)
113
+ * Byte 1: Signal strength (0-100)
114
+ * Byte 2: SSID length
115
+ * Bytes 3-34: SSID (max 32 bytes)
116
+ * Bytes 35+: Error message (if status=failed)
117
+ */
118
+ export declare function parseWiFiStatusInfo(data: Buffer): WiFiStatusInfo;
119
+ /**
120
+ * Parse WiFi configuration result from characteristic value
121
+ *
122
+ * Format:
123
+ * Byte 0: Result code (0x00=success, 0x01=invalid_grant, 0x02=grant_expired, 0x03=decryption_error, 0x04=storage_error)
124
+ */
125
+ export declare function parseWiFiConfigResult(data: Buffer): WiFiConfigResult;
126
+ /**
127
+ * Create WiFi grant submission packet
128
+ *
129
+ * Format:
130
+ * Bytes 0-N: Grant blob (JWT token as UTF-8 string)
131
+ */
132
+ export declare function createWiFiGrantPacket(grantBlob: string): Buffer;
100
133
  //# sourceMappingURL=parsers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/ble/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsCvF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAWxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAa5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqB1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAyB5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAW1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA6BlE;AAUD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiChE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAWlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EACjC,cAAc,EAAE,MAAM,GACrB,MAAM,CAiBR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAuBR"}
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/ble/parsers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAoDvF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAWxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAa5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqB1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAyB5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAW1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA6BlE;AAUD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiChE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAWlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EACjC,cAAc,EAAE,MAAM,GACrB,MAAM,CAiBR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAuBR;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAOxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAexD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA0BhE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAqBpE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D"}