From 6a19b62aa15da6e02ca3228b667ed82bfb82e7e8 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Wed, 20 Aug 2025 01:10:41 +0200 Subject: [PATCH] works --- .../android/mesh/BluetoothMeshService.kt | 8 ++++++ .../bitchat/android/mesh/MessageHandler.kt | 25 ++++++++----------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt b/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt index 87bac85a..45b20d52 100644 --- a/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt +++ b/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt @@ -181,6 +181,14 @@ class BluetoothMeshService(private val context: Context) { return delegate?.getNickname() } + override fun getPeerInfo(peerID: String): PeerInfo? { + return peerManager.getPeerInfo(peerID) + } + + override fun updatePeerInfo(peerID: String, nickname: String, noisePublicKey: ByteArray, signingPublicKey: ByteArray, isVerified: Boolean): Boolean { + return peerManager.updatePeerInfo(peerID, nickname, noisePublicKey, signingPublicKey, isVerified) + } + // Packet operations override fun sendPacket(packet: BitchatPacket) { connectionManager.broadcastPacket(RoutedPacket(packet)) diff --git a/app/src/main/java/com/bitchat/android/mesh/MessageHandler.kt b/app/src/main/java/com/bitchat/android/mesh/MessageHandler.kt index f9498773..91de7ec0 100644 --- a/app/src/main/java/com/bitchat/android/mesh/MessageHandler.kt +++ b/app/src/main/java/com/bitchat/android/mesh/MessageHandler.kt @@ -191,10 +191,7 @@ class MessageHandler(private val myPeerID: String) { // Check for existing peer with different noise public key // If existing peer has a different noise public key, do not consider this verified - val existingPeer = (delegate as? BluetoothMeshService)?.let { service -> - // Access PeerManager through service - service.getPeerInfo(peerID) - } + val existingPeer = delegate?.getPeerInfo(peerID) if (existingPeer != null && existingPeer.noisePublicKey != null && !existingPeer.noisePublicKey!!.contentEquals(announcement.noisePublicKey)) { Log.w(TAG, "⚠️ Announce key mismatch for ${peerID.take(8)}... — keeping unverified") @@ -218,15 +215,13 @@ class MessageHandler(private val myPeerID: String) { val signingPublicKey = announcement.signingPublicKey // Update peer info with verification status through new method - val isFirstAnnounce = (delegate as? BluetoothMeshService)?.let { service -> - service.updatePeerInfo( - peerID = peerID, - nickname = nickname, - noisePublicKey = noisePublicKey, - signingPublicKey = signingPublicKey, - isVerified = true - ) - } ?: false + val isFirstAnnounce = delegate?.updatePeerInfo( + peerID = peerID, + nickname = nickname, + noisePublicKey = noisePublicKey, + signingPublicKey = signingPublicKey, + isVerified = true + ) ?: false // Update peer ID binding with noise public key for identity management delegate?.updatePeerIDBinding( @@ -327,7 +322,7 @@ class MessageHandler(private val myPeerID: String) { val peerID = routed.peerID ?: "unknown" // Enforce: only accept public messages from verified peers we know - val peerInfo = (delegate as? BluetoothMeshService)?.getPeerInfo(peerID) + val peerInfo = delegate?.getPeerInfo(peerID) if (peerInfo == null || !peerInfo.isVerifiedNickname) { Log.w(TAG, "🚫 Dropping public message from unverified or unknown peer ${peerID.take(8)}...") return @@ -444,6 +439,8 @@ interface MessageHandlerDelegate { fun getPeerNickname(peerID: String): String? fun getNetworkSize(): Int fun getMyNickname(): String? + fun getPeerInfo(peerID: String): PeerInfo? + fun updatePeerInfo(peerID: String, nickname: String, noisePublicKey: ByteArray, signingPublicKey: ByteArray, isVerified: Boolean): Boolean // Packet operations fun sendPacket(packet: BitchatPacket)