Merge pull request #290 from loki-project/shared-sender-keys

Improve Out-Of-Order SSK Message Handling
pull/291/head
Niels Andriesse 5 years ago committed by GitHub
commit 3235d98812
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -109,16 +109,19 @@ public final class SharedSenderKeysImplementation : NSObject {
return ratchet return ratchet
} else { } else {
var currentKeyIndex = ratchet.keyIndex var currentKeyIndex = ratchet.keyIndex
var result = ratchet var current = ratchet
var messageKeys: [String] = []
while currentKeyIndex < targetKeyIndex { while currentKeyIndex < targetKeyIndex {
do { do {
result = try step(result) current = try step(current)
currentKeyIndex = result.keyIndex messageKeys += current.messageKeys
currentKeyIndex = current.keyIndex
} catch { } catch {
print("[Loki] Couldn't step ratchet due to error: \(error).") print("[Loki] Couldn't step ratchet due to error: \(error).")
throw error throw error
} }
} }
let result = ClosedGroupRatchet(chainKey: current.chainKey, keyIndex: current.keyIndex, messageKeys: messageKeys) // Includes any skipped message keys
Storage.setClosedGroupRatchet(for: groupPublicKey, senderPublicKey: senderPublicKey, ratchet: result, using: transaction) Storage.setClosedGroupRatchet(for: groupPublicKey, senderPublicKey: senderPublicKey, ratchet: result, using: transaction)
return result return result
} }

Loading…
Cancel
Save