This commit is contained in:
callebtc
2025-08-20 01:10:41 +02:00
parent 777bcc08f1
commit 6a19b62aa1
2 changed files with 19 additions and 14 deletions
@@ -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))
@@ -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(
val isFirstAnnounce = delegate?.updatePeerInfo(
peerID = peerID,
nickname = nickname,
noisePublicKey = noisePublicKey,
signingPublicKey = signingPublicKey,
isVerified = true
)
} ?: false
) ?: 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)