From 3ffb55fd0ea04d3c6045e4ba14fa794403823455 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 18 Oct 2019 11:44:39 +1100 Subject: [PATCH] Include attachment IDs in public chat message signature --- .../src/Loki/API/Public Chat/LokiPublicChatMessage.swift | 6 ++++-- SignalServiceKit/src/Messages/OWSMessageSender.m | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatMessage.swift b/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatMessage.swift index 17bcc6a39..4d94ff6bf 100644 --- a/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatMessage.swift +++ b/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatMessage.swift @@ -29,6 +29,7 @@ public final class LokiPublicChatMessage : NSObject { } public struct Attachment { + public let serverID: UInt64 public let kind: Kind public let width: UInt public let height: UInt @@ -121,9 +122,9 @@ public final class LokiPublicChatMessage : NSObject { } // MARK: Convenience - @objc public func addAttachment(kind: String, width: UInt, height: UInt, caption: String, url: String, server: String, serverDisplayName: String) { + @objc public func addAttachment(serverID: UInt64, kind: String, width: UInt, height: UInt, caption: String, url: String, server: String, serverDisplayName: String) { guard let kind = Attachment.Kind(rawValue: kind) else { preconditionFailure() } - let attachment = Attachment(kind: kind, width: width, height: height, caption: caption, url: url, server: server, serverDisplayName: serverDisplayName) + let attachment = Attachment(serverID: serverID, kind: kind, width: width, height: height, caption: caption, url: url, server: server, serverDisplayName: serverDisplayName) attachments.append(attachment) } @@ -135,6 +136,7 @@ public final class LokiPublicChatMessage : NSObject { string += "\(quotedMessageServerID)" } } + string += attachments.map { "\($0.serverID)" }.joined(separator: "") string += "\(signatureVersion)" return string.data(using: String.Encoding.utf8) } diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 449ed90b1..a2fe7b73f 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1214,7 +1214,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; TSAttachmentStream *attachment = [TSAttachmentStream fetchObjectWithUniqueID:attachmentID]; if (attachment == nil) { continue; } // TODO: Videos - [groupMessage addAttachmentWithKind:@"photo" width:@(attachment.imageSize.width).unsignedIntValue height:@(attachment.imageSize.height).unsignedIntValue caption:attachment.caption url:attachment.downloadURL server:publicChat.server serverDisplayName:publicChat.displayName]; + [groupMessage addAttachmentWithServerID:attachment.serverId kind:@"photo" width:@(attachment.imageSize.width).unsignedIntValue height:@(attachment.imageSize.height).unsignedIntValue caption:attachment.caption url:attachment.downloadURL server:publicChat.server serverDisplayName:publicChat.displayName]; } [[LKPublicChatAPI sendMessage:groupMessage toGroup:publicChat.channel onServer:publicChat.server] .thenOn(OWSDispatch.sendingQueue, ^(LKGroupMessage *groupMessage) {