|
|
@ -205,15 +205,15 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
NSMutableString *description = [NSMutableString new];
|
|
|
|
NSMutableString *description = [NSMutableString new];
|
|
|
|
|
|
|
|
|
|
|
|
if (dataMessage.hasGroup) {
|
|
|
|
if (dataMessage.hasGroup) {
|
|
|
|
[description appendString:@"GroupDataMessage: "];
|
|
|
|
[description appendString:@"(Group:YES) "];
|
|
|
|
} else {
|
|
|
|
|
|
|
|
[description appendString:@"DataMessage: "];
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsEndSession) != 0) {
|
|
|
|
if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsEndSession) != 0) {
|
|
|
|
[description appendString:@"EndSession"];
|
|
|
|
[description appendString:@"EndSession"];
|
|
|
|
} else if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate) != 0) {
|
|
|
|
} else if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate) != 0) {
|
|
|
|
[description appendString:@"ExpirationTimerUpdate"];
|
|
|
|
[description appendString:@"ExpirationTimerUpdate"];
|
|
|
|
|
|
|
|
} else if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsProfileKey) != 0) {
|
|
|
|
|
|
|
|
[description appendString:@"ProfileKey"];
|
|
|
|
} else if (dataMessage.attachments.count > 0) {
|
|
|
|
} else if (dataMessage.attachments.count > 0) {
|
|
|
|
[description appendString:@"MessageWithAttachment"];
|
|
|
|
[description appendString:@"MessageWithAttachment"];
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -500,7 +500,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
} else if (envelope.hasLegacyMessage) { // DEPRECATED - Remove after all clients have been upgraded.
|
|
|
|
} else if (envelope.hasLegacyMessage) { // DEPRECATED - Remove after all clients have been upgraded.
|
|
|
|
OWSSignalServiceProtosDataMessage *dataMessage =
|
|
|
|
OWSSignalServiceProtosDataMessage *dataMessage =
|
|
|
|
[OWSSignalServiceProtosDataMessage parseFromData:plaintextData];
|
|
|
|
[OWSSignalServiceProtosDataMessage parseFromData:plaintextData];
|
|
|
|
DDLogInfo(@"%@ handling dataMessage: %@", self.tag, [self descriptionForDataMessage:dataMessage]);
|
|
|
|
DDLogInfo(@"%@ handling message: <DataMessage: %@ />", self.tag, [self descriptionForDataMessage:dataMessage]);
|
|
|
|
|
|
|
|
|
|
|
|
[self handleIncomingEnvelope:envelope withDataMessage:dataMessage];
|
|
|
|
[self handleIncomingEnvelope:envelope withDataMessage:dataMessage];
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -574,6 +574,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
[self handleEndSessionMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
[self handleEndSessionMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
} else if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate) != 0) {
|
|
|
|
} else if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate) != 0) {
|
|
|
|
[self handleExpirationTimerUpdateMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
[self handleExpirationTimerUpdateMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
|
|
|
|
} else if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsProfileKey) != 0) {
|
|
|
|
|
|
|
|
[self handleProfileKeyMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
} else if (dataMessage.attachments.count > 0) {
|
|
|
|
} else if (dataMessage.attachments.count > 0) {
|
|
|
|
[self handleReceivedMediaWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
[self handleReceivedMediaWithEnvelope:incomingEnvelope dataMessage:dataMessage];
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -837,6 +839,27 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
[message save];
|
|
|
|
[message save];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (void)handleProfileKeyMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)incomingEnvelope
|
|
|
|
|
|
|
|
dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
NSString *recipientId = incomingEnvelope.source;
|
|
|
|
|
|
|
|
if (!dataMessage.hasProfileKey) {
|
|
|
|
|
|
|
|
OWSFail(@"%@ recevied profile key message without profile key from recipient: %@", self.tag, recipientId);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
NSData *profileKey = dataMessage.profileKey;
|
|
|
|
|
|
|
|
if (profileKey.length != kAES256_KeyByteLength) {
|
|
|
|
|
|
|
|
OWSFail(@"%@ recevied profile key of unexpected length:%lu from recipient: %@",
|
|
|
|
|
|
|
|
self.tag,
|
|
|
|
|
|
|
|
(unsigned long)profileKey.length,
|
|
|
|
|
|
|
|
recipientId);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
id<ProfileManagerProtocol> profileManager = [TextSecureKitEnv sharedEnv].profileManager;
|
|
|
|
|
|
|
|
[profileManager setProfileKeyData:profileKey forRecipientId:recipientId];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)handleReceivedTextMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)textMessageEnvelope
|
|
|
|
- (void)handleReceivedTextMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)textMessageEnvelope
|
|
|
|
dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage
|
|
|
|
dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage
|
|
|
|
{
|
|
|
|
{
|
|
|
|