|
|
|
@ -7,6 +7,7 @@
|
|
|
|
|
|
|
|
|
|
@implementation LKDeviceLinkMessage
|
|
|
|
|
|
|
|
|
|
#pragma mark Convenience
|
|
|
|
|
- (LKDeviceLinkMessageKind)kind {
|
|
|
|
|
if (self.masterSignature != nil) {
|
|
|
|
|
return LKDeviceLinkMessageKindAuthorization;
|
|
|
|
@ -15,6 +16,7 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma mark Initialization
|
|
|
|
|
- (instancetype)initInThread:(TSThread *)thread masterHexEncodedPublicKey:(NSString *)masterHexEncodedPublicKey slaveHexEncodedPublicKey:(NSString *)slaveHexEncodedPublicKey masterSignature:(NSData *)masterSignature slaveSignature:(NSData *)slaveSignature {
|
|
|
|
|
self = [self initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray<NSString *> new]
|
|
|
|
|
expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil];
|
|
|
|
@ -27,22 +29,42 @@
|
|
|
|
|
return self;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient {
|
|
|
|
|
#pragma mark Building
|
|
|
|
|
- (nullable NSData *)buildPlainTextData:(SignalRecipient *)recipient
|
|
|
|
|
{
|
|
|
|
|
// Prepare
|
|
|
|
|
SSKProtoContentBuilder *contentBuilder = [self contentBuilder:recipient];
|
|
|
|
|
NSError *error;
|
|
|
|
|
// Data message
|
|
|
|
|
SSKProtoDataMessage *_Nullable dataMessage = [self buildDataMessage:recipient.recipientId];
|
|
|
|
|
if (!dataMessage) {
|
|
|
|
|
OWSFailDebug(@"Failed to build data message.");
|
|
|
|
|
return nil;
|
|
|
|
|
}
|
|
|
|
|
[contentBuilder setDataMessage:dataMessage];
|
|
|
|
|
// Device link message
|
|
|
|
|
SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder];
|
|
|
|
|
[deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey];
|
|
|
|
|
[deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey];
|
|
|
|
|
if (self.masterSignature != nil) { [deviceLinkMessageBuilder setMasterSignature:self.masterSignature]; }
|
|
|
|
|
[deviceLinkMessageBuilder setSlaveSignature:self.slaveSignature];
|
|
|
|
|
NSError *error;
|
|
|
|
|
SSKProtoLokiDeviceLinkMessage *deviceLinkMessage = [deviceLinkMessageBuilder buildAndReturnError:&error];
|
|
|
|
|
if (error || deviceLinkMessage == nil) {
|
|
|
|
|
OWSFailDebug(@"Failed to build device link message due to error: %@", error);
|
|
|
|
|
OWSFailDebug(@"Failed to build device link message due to error: %@.", error);
|
|
|
|
|
return nil;
|
|
|
|
|
}
|
|
|
|
|
SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient];
|
|
|
|
|
[contentBuilder setLokiDeviceLinkMessage:deviceLinkMessage];
|
|
|
|
|
return contentBuilder;
|
|
|
|
|
// Serialize
|
|
|
|
|
NSData *_Nullable contentAsData = [contentBuilder buildSerializedDataAndReturnError:&error];
|
|
|
|
|
if (error || !contentAsData) {
|
|
|
|
|
OWSFailDebug(@"Failed to build serialized message content due to error: %@.", error);
|
|
|
|
|
return nil;
|
|
|
|
|
}
|
|
|
|
|
// Return
|
|
|
|
|
return contentAsData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma mark Settings
|
|
|
|
|
- (BOOL)shouldSyncTranscript { return NO; }
|
|
|
|
|
- (BOOL)shouldBeSaved { return NO; }
|
|
|
|
|
|
|
|
|
|