This commit is contained in:
callebtc
2025-07-16 16:33:47 +02:00
parent d76644e58a
commit a06bb32e26
3 changed files with 10 additions and 11 deletions
@@ -29,7 +29,7 @@ class BluetoothGattServerManager(
companion object { companion object {
private const val TAG = "BluetoothGattServerManager" private const val TAG = "BluetoothGattServerManager"
// Use exact same UUIDs as iOS version // Use exact same UUIDs as iOS version
private val SERVICE_UUID = UUID.fromString("F47B5E2D-4A9E-4C5A-9B3F-8E1D2C3A4B5C") private val SERVICE_UUID = UUID.fromString("F47B5E2D-4A9E-4C5A-9B3F-8E1D2C3A4B5B")
private val CHARACTERISTIC_UUID = UUID.fromString("A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D") private val CHARACTERISTIC_UUID = UUID.fromString("A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D")
private val DESCRIPTOR_UUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb") private val DESCRIPTOR_UUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")
} }
@@ -37,17 +37,17 @@ class BluetoothMeshService(private val context: Context) {
} }
// My peer identification - same format as iOS // My peer identification - same format as iOS
val myPeerID: ByteArray = generateCompatiblePeerID() val myPeerID: String = generateCompatiblePeerID()
// Core components - each handling specific responsibilities // Core components - each handling specific responsibilities
private val encryptionService = EncryptionService(context) private val encryptionService = EncryptionService(context)
private val peerManager = PeerManager() private val peerManager = PeerManager()
private val fragmentManager = FragmentManager() private val fragmentManager = FragmentManager()
private val securityManager = SecurityManager(encryptionService, myPeerID.toHexString()) private val securityManager = SecurityManager(encryptionService, myPeerID)
private val storeForwardManager = StoreForwardManager() private val storeForwardManager = StoreForwardManager()
private val messageHandler = MessageHandler(myPeerID.toHexString()) private val messageHandler = MessageHandler(myPeerID)
internal val connectionManager = BluetoothConnectionManager(context, myPeerID.toHexString(), fragmentManager) // Made internal for access internal val connectionManager = BluetoothConnectionManager(context, myPeerID, fragmentManager) // Made internal for access
private val packetProcessor = PacketProcessor(myPeerID.toHexString()) private val packetProcessor = PacketProcessor(myPeerID)
// Service state management // Service state management
private var isActive = false private var isActive = false
@@ -419,6 +419,7 @@ class BluetoothMeshService(private val context: Context) {
val signature = securityManager.signPacket(messageData) val signature = securityManager.signPacket(messageData)
val packet = BitchatPacket( val packet = BitchatPacket(
version = 1u,
type = MessageType.MESSAGE.value, type = MessageType.MESSAGE.value,
senderID = myPeerID.toByteArray(), senderID = myPeerID.toByteArray(),
recipientID = SpecialRecipients.BROADCAST, recipientID = SpecialRecipients.BROADCAST,
@@ -467,6 +468,7 @@ class BluetoothMeshService(private val context: Context) {
val signature = securityManager.signPacket(encryptedPayload) val signature = securityManager.signPacket(encryptedPayload)
val packet = BitchatPacket( val packet = BitchatPacket(
version = 1u,
type = MessageType.MESSAGE.value, type = MessageType.MESSAGE.value,
senderID = myPeerID.toByteArray(), senderID = myPeerID.toByteArray(),
recipientID = recipientPeerID.toByteArray(), recipientID = recipientPeerID.toByteArray(),
@@ -626,10 +628,10 @@ class BluetoothMeshService(private val context: Context) {
/** /**
* Generate peer ID compatible with iOS * Generate peer ID compatible with iOS
*/ */
private fun generateCompatiblePeerID(): ByteArray { private fun generateCompatiblePeerID(): String {
val randomBytes = ByteArray(4) val randomBytes = ByteArray(4)
Random.nextBytes(randomBytes) Random.nextBytes(randomBytes)
return randomBytes return randomBytes.joinToString("") { "%02x".format(it) }
} }
} }
@@ -80,8 +80,6 @@ data class BitchatPacket(
var ttl: UByte var ttl: UByte
) : Parcelable { ) : Parcelable {
// Secondary constructor removed to enforce ByteArray usage for peerIDs
/*
constructor( constructor(
type: UByte, type: UByte,
ttl: UByte, ttl: UByte,
@@ -97,7 +95,6 @@ data class BitchatPacket(
signature = null, signature = null,
ttl = ttl ttl = ttl
) )
*/
fun toBinaryData(): ByteArray? { fun toBinaryData(): ByteArray? {
return BinaryProtocol.encode(this) return BinaryProtocol.encode(this)