From ce86d9a196ac7b1fe75e9f881d769e26d622b588 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Wed, 6 Jan 2021 09:26:49 +1100 Subject: [PATCH] Debug --- .../Sending & Receiving/MessageReceiver.swift | 12 ++++++------ .../Sending & Receiving/MessageSender.swift | 9 ++++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index 66409971b..f5f4ee727 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -72,17 +72,17 @@ public enum MessageReceiver { case .closedGroupCiphertext: guard let hexEncodedGroupPublicKey = envelope.source, SNMessagingKitConfiguration.shared.storage.isClosedGroup(hexEncodedGroupPublicKey) else { throw Error.invalidGroupPublicKey } do { - var keyPairs = Storage.shared.getClosedGroupEncryptionKeyPairs(for: hexEncodedGroupPublicKey) - guard !keyPairs.isEmpty else { throw Error.noGroupKeyPair } + var encryptionKeyPairs = Storage.shared.getClosedGroupEncryptionKeyPairs(for: hexEncodedGroupPublicKey) + guard !encryptionKeyPairs.isEmpty else { throw Error.noGroupKeyPair } // Loop through all known group key pairs in reverse order (i.e. try the latest key pair first (which'll more than // likely be the one we want) but try older ones in case that didn't work) - var keyPair = keyPairs.removeLast() + var encryptionKeyPair = encryptionKeyPairs.removeLast() func decrypt() throws { do { - (plaintext, sender) = try decryptWithSessionProtocol(ciphertext: ciphertext, using: keyPair) + (plaintext, sender) = try decryptWithSessionProtocol(ciphertext: ciphertext, using: encryptionKeyPair) } catch { - if !keyPairs.isEmpty { - keyPair = keyPairs.removeLast() + if !encryptionKeyPairs.isEmpty { + encryptionKeyPair = encryptionKeyPairs.removeLast() try decrypt() } else { throw error diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index 15248ca2f..b9a8330d1 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -175,7 +175,14 @@ public final class MessageSender : NSObject { do { switch destination { case .contact(let publicKey): ciphertext = try encryptWithSessionProtocol(plaintext, for: publicKey) - case .closedGroup(let groupPublicKey): ciphertext = try encryptWithSessionProtocol(plaintext, for: groupPublicKey) + case .closedGroup(let groupPublicKey): + + /* + ciphertext = try encryptWithSessionProtocol(plaintext, for: groupPublicKey) + */ + + guard let encryptionKeyPair = Storage.shared.getLatestClosedGroupEncryptionKeyPair(for: groupPublicKey) else { throw Error.noKeyPair } + ciphertext = try encryptWithSessionProtocol(plaintext, for: encryptionKeyPair.hexEncodedPublicKey) case .openGroup(_, _): preconditionFailure() } } catch {