From b6951f09b4a08a7df9832c41a05dd820c1de316c Mon Sep 17 00:00:00 2001 From: jubb Date: Thu, 11 Feb 2021 18:58:38 +1100 Subject: [PATCH] feat: use cached keypair --- .../securesms/loki/protocol/ClosedGroupsProtocolV2.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt index 7395fd2b9c..b35e9e8d98 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/ClosedGroupsProtocolV2.kt @@ -38,11 +38,14 @@ import org.session.libsession.utilities.TextSecurePreferences import java.io.IOException import java.util.* +import java.util.concurrent.atomic.AtomicReference import kotlin.jvm.Throws object ClosedGroupsProtocolV2 { const val groupSizeLimit = 100 + private val pendingKeyPair = AtomicReference(null) + sealed class Error(val description: String) : Exception() { object NoThread : Error("Couldn't find a thread associated with the given group public key") object NoKeyPair : Error("Couldn't find an encryption key pair associated with the given group public key.") @@ -364,7 +367,7 @@ object ClosedGroupsProtocolV2 { return } // Generate the new encryption key pair - val newKeyPair = Curve.generateKeyPair() + val newKeyPair = pendingKeyPair.getAndSet(Curve.generateKeyPair()) ?: Curve.generateKeyPair() // Distribute it val proto = SignalServiceProtos.KeyPair.newBuilder() proto.publicKey = ByteString.copyFrom(newKeyPair.publicKey.serialize().removing05PrefixIfNeeded())