fix: store group public key as corrected public key

This commit is contained in:
jubb 2021-02-22 12:05:00 +11:00
parent 7f95f0f2d6
commit 2d93d83610

View File

@ -623,13 +623,12 @@ object ClosedGroupsProtocolV2 {
val userKeyPair = apiDB.getUserX25519KeyPair() val userKeyPair = apiDB.getUserX25519KeyPair()
// Unwrap the message // Unwrap the message
val groupDB = DatabaseFactory.getGroupDatabase(context) val groupDB = DatabaseFactory.getGroupDatabase(context)
val groupID = when { val correctGroupPublicKey = when {
groupPublicKey.isNotEmpty() -> groupPublicKey groupPublicKey.isNotEmpty() -> groupPublicKey
!closedGroupUpdate.publicKey.isEmpty -> closedGroupUpdate.publicKey.toByteArray().toHexString() !closedGroupUpdate.publicKey.isEmpty -> closedGroupUpdate.publicKey.toByteArray().toHexString()
else -> "" else -> ""
}.let {
doubleEncodeGroupID(it)
} }
val groupID = doubleEncodeGroupID(correctGroupPublicKey)
val group = groupDB.getGroup(groupID).orNull() val group = groupDB.getGroup(groupID).orNull()
if (group == null) { if (group == null) {
Log.d("Loki", "Ignoring closed group encryption key pair message for nonexistent group.") Log.d("Loki", "Ignoring closed group encryption key pair message for nonexistent group.")
@ -647,7 +646,7 @@ object ClosedGroupsProtocolV2 {
val proto = SignalServiceProtos.KeyPair.parseFrom(plaintext) val proto = SignalServiceProtos.KeyPair.parseFrom(plaintext)
val keyPair = ECKeyPair(DjbECPublicKey(proto.publicKey.toByteArray().removing05PrefixIfNeeded()), DjbECPrivateKey(proto.privateKey.toByteArray())) val keyPair = ECKeyPair(DjbECPublicKey(proto.publicKey.toByteArray().removing05PrefixIfNeeded()), DjbECPrivateKey(proto.privateKey.toByteArray()))
// Store it // Store it
apiDB.addClosedGroupEncryptionKeyPair(keyPair, groupPublicKey) apiDB.addClosedGroupEncryptionKeyPair(keyPair, correctGroupPublicKey)
Log.d("Loki", "Received a new closed group encryption key pair") Log.d("Loki", "Received a new closed group encryption key pair")
} }