fix: remote admin backward compatibility

- only use PKC encryption when the remote node has a public key (2.5 -> 2.5)
- fall back to legacy admin if public key is not available (2.5 -> 2.4)
This commit is contained in:
andrekir 2024-10-08 07:47:25 -03:00
parent 3473ef343a
commit 23f05c109b

View file

@ -476,11 +476,13 @@ class MeshService : Service(), Logging {
private val myNodeID get() = toNodeID(myNodeNum)
/// Admin channel index
private val adminChannelIndex: Int
get() = if (nodeDBbyNodeNum[myNodeNum]?.hasPKC == true) { // TODO use meta.hasPKC
DataPacket.PKC_CHANNEL_INDEX
} else {
channelSet.settingsList
private val MeshPacket.Builder.adminChannelIndex: Int
get() = when {
myNodeNum == to -> 0
nodeDBbyNodeNum[myNodeNum]?.hasPKC == true && nodeDBbyNodeNum[to]?.hasPKC == true ->
DataPacket.PKC_CHANNEL_INDEX
else -> channelSet.settingsList
.indexOfFirst { it.name.equals("admin", ignoreCase = true) }
.coerceAtLeast(0)
}