From e103f6f072df1885ae26ad7f3c2d2429edafa2bd Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 21 Nov 2022 01:00:00 +0100 Subject: [PATCH] Resend key requests when the keys change --- .../io/timelimit/android/logic/crypto/CryptDataHandler.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/timelimit/android/logic/crypto/CryptDataHandler.kt b/app/src/main/java/io/timelimit/android/logic/crypto/CryptDataHandler.kt index a6e597f..7850b2f 100644 --- a/app/src/main/java/io/timelimit/android/logic/crypto/CryptDataHandler.kt +++ b/app/src/main/java/io/timelimit/android/logic/crypto/CryptDataHandler.kt @@ -116,7 +116,9 @@ object CryptDataHandler { database.cryptContainer().updateMetadata(updatedMetadata) if (updatedMetadata.status == CryptContainerMetadata.ProcessingStatus.MissingKey && header != null) { - if (database.cryptContainerKeyRequest().byCryptContainerId(currentItem.cryptContainerId) == null) { + val existingRequest = database.cryptContainerKeyRequest().byCryptContainerId(currentItem.cryptContainerId) + + if (existingRequest == null || existingRequest.requestTimeCryptContainerGeneration < header.generation) { val signingKey = DeviceSigningKey.getPublicAndPrivateKeySync(database)!!.let { Curve25519.getPrivateKey(it) } val requestKeyPair = Curve25519.generateKeyPair() val sequenceNumber = database.config().getNextSigningSequenceNumberAndIncrementIt() @@ -143,6 +145,8 @@ object CryptDataHandler { ), database ) + if (existingRequest != null) database.cryptContainerKeyRequest().delete(existingRequest) + database.cryptContainerKeyRequest().insert( CryptContainerPendingKeyRequest( cryptContainerId = currentItem.cryptContainerId,