This commit is contained in:
Niels Andriesse 2019-09-24 16:03:31 +10:00
parent 97caa6629c
commit 3f07396f94
11 changed files with 111 additions and 115 deletions

View file

@ -91,7 +91,7 @@
#import <SignalServiceKit/OWSDispatch.h> #import <SignalServiceKit/OWSDispatch.h>
#import <SignalServiceKit/OWSEndSessionMessage.h> #import <SignalServiceKit/OWSEndSessionMessage.h>
#import <SignalServiceKit/LKEphemeralMessage.h> #import <SignalServiceKit/LKEphemeralMessage.h>
#import <SignalServiceKit/LKDeviceLinkingMessage.h> #import <SignalServiceKit/LKDeviceLinkMessage.h>
#import <SignalServiceKit/OWSError.h> #import <SignalServiceKit/OWSError.h>
#import <SignalServiceKit/OWSFileSystem.h> #import <SignalServiceKit/OWSFileSystem.h>
#import <SignalServiceKit/LKFriendRequestMessage.h> #import <SignalServiceKit/LKFriendRequestMessage.h>

View file

@ -4,7 +4,7 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class LKDeviceLinkingMessage; @class LKDeviceLinkMessage;
@class OWSBlockingManager; @class OWSBlockingManager;
@class OWSContact; @class OWSContact;
@class OWSContactsManager; @class OWSContactsManager;
@ -46,7 +46,7 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Durable Message Enqueue #pragma mark - Durable Message Enqueue
+ (TSOutgoingMessage *)enqueueFriendRequestAcceptanceMessageInThread:(TSThread *)thread; + (TSOutgoingMessage *)enqueueFriendRequestAcceptanceMessageInThread:(TSThread *)thread;
+ (void)enqueueDeviceLinkingMessage:(LKDeviceLinkingMessage *)message; + (void)enqueueDeviceLinkMessage:(LKDeviceLinkMessage *)message;
+ (TSOutgoingMessage *)enqueueMessageWithText:(NSString *)fullMessageText + (TSOutgoingMessage *)enqueueMessageWithText:(NSString *)fullMessageText
inThread:(TSThread *)thread inThread:(TSThread *)thread

View file

@ -94,7 +94,7 @@ typedef void (^BuildOutgoingMessageCompletionBlock)(TSOutgoingMessage *savedMess
return message; return message;
} }
+ (void)enqueueDeviceLinkingMessage:(LKDeviceLinkingMessage *)message + (void)enqueueDeviceLinkMessage:(LKDeviceLinkMessage *)message
{ {
[self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[self.messageSenderJobQueue addMessage:message transaction:transaction]; [self.messageSenderJobQueue addMessage:message transaction:transaction];

View file

@ -66,7 +66,7 @@ message Content {
optional TypingMessage typingMessage = 6; optional TypingMessage typingMessage = 6;
optional PrekeyBundleMessage prekeyBundleMessage = 101; // Loki optional PrekeyBundleMessage prekeyBundleMessage = 101; // Loki
optional LokiAddressMessage lokiAddressMessage = 102; // Loki optional LokiAddressMessage lokiAddressMessage = 102; // Loki
optional LokiDeviceLinkingMessage lokiDeviceLinkingMessage = 103; // Loki optional LokiDeviceLinkMessage lokiDeviceLinkMessage = 103; // Loki
} }
message PrekeyBundleMessage { // Loki message PrekeyBundleMessage { // Loki
@ -86,11 +86,11 @@ message LokiAddressMessage { // Loki
optional uint32 ptpPort = 2; optional uint32 ptpPort = 2;
} }
message LokiDeviceLinkingMessage { // Loki message LokiDeviceLinkMessage { // Loki
enum Type { enum Type {
REQUEST = 1; REQUEST = 1;
GRANT = 2; AUTHORIZATION = 2;
REVOKE = 3; REVOCATION = 3;
} }
optional string masterHexEncodedPublicKey = 1; optional string masterHexEncodedPublicKey = 1;
optional string slaveHexEncodedPublicKey = 2; optional string slaveHexEncodedPublicKey = 2;

View file

@ -4,21 +4,21 @@ public enum DeviceLinkingUtilities {
// When requesting a device link, the slave device signs the master device's public key. When authorizing // When requesting a device link, the slave device signs the master device's public key. When authorizing
// a device link, the master device signs the slave device's public key. // a device link, the master device signs the slave device's public key.
public static func getLinkingRequestMessage(for masterHexEncodedPublicKey: String) -> DeviceLinkingMessage { public static func getLinkingRequestMessage(for masterHexEncodedPublicKey: String) -> DeviceLinkMessage {
let slaveKeyPair = OWSIdentityManager.shared().identityKeyPair()! let slaveKeyPair = OWSIdentityManager.shared().identityKeyPair()!
let slaveHexEncodedPublicKey = slaveKeyPair.hexEncodedPublicKey let slaveHexEncodedPublicKey = slaveKeyPair.hexEncodedPublicKey
let slaveSignature = try! Ed25519.sign(Data(hex: masterHexEncodedPublicKey), with: slaveKeyPair) let slaveSignature = try! Ed25519.sign(Data(hex: masterHexEncodedPublicKey), with: slaveKeyPair)
let thread = TSContactThread.getOrCreateThread(contactId: masterHexEncodedPublicKey) let thread = TSContactThread.getOrCreateThread(contactId: masterHexEncodedPublicKey)
return DeviceLinkingMessage(in: thread, masterHexEncodedPublicKey: masterHexEncodedPublicKey, slaveHexEncodedPublicKey: slaveHexEncodedPublicKey, masterSignature: nil, slaveSignature: slaveSignature) return DeviceLinkMessage(in: thread, masterHexEncodedPublicKey: masterHexEncodedPublicKey, slaveHexEncodedPublicKey: slaveHexEncodedPublicKey, masterSignature: nil, slaveSignature: slaveSignature)
} }
public static func getLinkingAuthorizationMessage(for deviceLink: DeviceLink) -> DeviceLinkingMessage { public static func getLinkingAuthorizationMessage(for deviceLink: DeviceLink) -> DeviceLinkMessage {
let masterKeyPair = OWSIdentityManager.shared().identityKeyPair()! let masterKeyPair = OWSIdentityManager.shared().identityKeyPair()!
let masterHexEncodedPublicKey = masterKeyPair.hexEncodedPublicKey let masterHexEncodedPublicKey = masterKeyPair.hexEncodedPublicKey
let slaveHexEncodedPublicKey = deviceLink.slave.hexEncodedPublicKey let slaveHexEncodedPublicKey = deviceLink.slave.hexEncodedPublicKey
let masterSignature = try! Ed25519.sign(Data(hex: slaveHexEncodedPublicKey), with: masterKeyPair) let masterSignature = try! Ed25519.sign(Data(hex: slaveHexEncodedPublicKey), with: masterKeyPair)
let slaveSignature = deviceLink.slave.signature! let slaveSignature = deviceLink.slave.signature!
let thread = TSContactThread.getOrCreateThread(contactId: slaveHexEncodedPublicKey) let thread = TSContactThread.getOrCreateThread(contactId: slaveHexEncodedPublicKey)
return DeviceLinkingMessage(in: thread, masterHexEncodedPublicKey: masterHexEncodedPublicKey, slaveHexEncodedPublicKey: slaveHexEncodedPublicKey, masterSignature: masterSignature, slaveSignature: slaveSignature) return DeviceLinkMessage(in: thread, masterHexEncodedPublicKey: masterHexEncodedPublicKey, slaveHexEncodedPublicKey: slaveHexEncodedPublicKey, masterSignature: masterSignature, slaveSignature: slaveSignature)
} }
} }

View file

@ -1,4 +0,0 @@
public extension Notification.Name {
public static let linkingRequestAuthorized = Notification.Name("linkingRequestAuthorized")
}

View file

@ -1,7 +1,7 @@
#import "TSOutgoingMessage.h" #import "TSOutgoingMessage.h"
NS_SWIFT_NAME(DeviceLinkingMessage) NS_SWIFT_NAME(DeviceLinkMessage)
@interface LKDeviceLinkingMessage : TSOutgoingMessage @interface LKDeviceLinkMessage : TSOutgoingMessage
@property (nonatomic, readonly) NSString *masterHexEncodedPublicKey; @property (nonatomic, readonly) NSString *masterHexEncodedPublicKey;
@property (nonatomic, readonly) NSString *slaveHexEncodedPublicKey; @property (nonatomic, readonly) NSString *slaveHexEncodedPublicKey;

View file

@ -1,11 +1,11 @@
#import "LKDeviceLinkingMessage.h" #import "LKDeviceLinkMessage.h"
#import "OWSIdentityManager.h" #import "OWSIdentityManager.h"
#import "SignalRecipient.h" #import "SignalRecipient.h"
#import <SignalCoreKit/NSData+OWS.h> #import <SignalCoreKit/NSData+OWS.h>
#import <SignalCoreKit/NSDate+OWS.h> #import <SignalCoreKit/NSDate+OWS.h>
#import <SignalServiceKit/SignalServiceKit-Swift.h> #import <SignalServiceKit/SignalServiceKit-Swift.h>
@implementation LKDeviceLinkingMessage @implementation LKDeviceLinkMessage
- (instancetype)initInThread:(TSThread *)thread masterHexEncodedPublicKey:(NSString *)masterHexEncodedPublicKey slaveHexEncodedPublicKey:(NSString *)slaveHexEncodedPublicKey masterSignature:(NSData *)masterSignature slaveSignature:(NSData *)slaveSignature { - (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] self = [self initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray<NSString *> new]
@ -20,18 +20,18 @@
} }
- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { - (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient {
SSKProtoLokiDeviceLinkingMessageBuilder *deviceLinkingMessageBuilder = [SSKProtoLokiDeviceLinkingMessage builder]; SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder];
[deviceLinkingMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey]; [deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey];
[deviceLinkingMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey]; [deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey];
if (self.masterSignature != nil) { [deviceLinkingMessageBuilder setMasterSignature:self.masterSignature]; } if (self.masterSignature != nil) { [deviceLinkMessageBuilder setMasterSignature:self.masterSignature]; }
[deviceLinkingMessageBuilder setSlaveSignature:self.slaveSignature]; [deviceLinkMessageBuilder setSlaveSignature:self.slaveSignature];
NSError *error; NSError *error;
SSKProtoLokiDeviceLinkingMessage *deviceLinkingMessage = [deviceLinkingMessageBuilder buildAndReturnError:&error]; SSKProtoLokiDeviceLinkMessage *deviceLinkMessage = [deviceLinkMessageBuilder buildAndReturnError:&error];
if (error || deviceLinkingMessage == nil) { if (error || deviceLinkMessage == nil) {
OWSFailDebug(@"Failed to build device linking message for: %@ due to error: %@", self.masterHexEncodedPublicKey, error); OWSFailDebug(@"Failed to build device linking message for: %@ due to error: %@", self.masterHexEncodedPublicKey, error);
} }
SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient];
[contentBuilder setLokiDeviceLinkingMessage:deviceLinkingMessage]; [contentBuilder setLokiDeviceLinkMessage:deviceLinkMessage];
return contentBuilder; return contentBuilder;
} }

View file

@ -20,7 +20,7 @@
#import "OWSDisappearingMessagesConfiguration.h" #import "OWSDisappearingMessagesConfiguration.h"
#import "OWSDisappearingMessagesJob.h" #import "OWSDisappearingMessagesJob.h"
#import "LKEphemeralMessage.h" #import "LKEphemeralMessage.h"
#import "LKDeviceLinkingMessage.h" #import "LKDeviceLinkMessage.h"
#import "OWSIdentityManager.h" #import "OWSIdentityManager.h"
#import "OWSIncomingMessageFinder.h" #import "OWSIncomingMessageFinder.h"
#import "OWSIncomingSentMessageTranscript.h" #import "OWSIncomingSentMessageTranscript.h"
@ -429,20 +429,20 @@ NS_ASSUME_NONNULL_BEGIN
OWSLogInfo(@"handling content: <Content: %@>", [self descriptionForContent:contentProto]); OWSLogInfo(@"handling content: <Content: %@>", [self descriptionForContent:contentProto]);
// Loki: Handle device linking message // Loki: Handle device linking message
if (contentProto.lokiDeviceLinkingMessage != nil) { if (contentProto.lokiDeviceLinkMessage != nil) {
NSString *masterHexEncodedPublicKey = contentProto.lokiDeviceLinkingMessage.masterHexEncodedPublicKey; NSString *masterHexEncodedPublicKey = contentProto.lokiDeviceLinkMessage.masterHexEncodedPublicKey;
NSString *slaveHexEncodedPublicKey = contentProto.lokiDeviceLinkingMessage.slaveHexEncodedPublicKey; NSString *slaveHexEncodedPublicKey = contentProto.lokiDeviceLinkMessage.slaveHexEncodedPublicKey;
NSData *slaveSignature = contentProto.lokiDeviceLinkingMessage.slaveSignature; NSData *slaveSignature = contentProto.lokiDeviceLinkMessage.slaveSignature;
switch (contentProto.lokiDeviceLinkingMessage.type) { switch (contentProto.lokiDeviceLinkMessage.type) {
case SSKProtoLokiDeviceLinkingMessageTypeRequest: { case SSKProtoLokiDeviceLinkMessageTypeRequest: {
OWSLogInfo(@"[Loki] Received a device linking request from: %@", envelope.source); // Not slaveHexEncodedPublicKey OWSLogInfo(@"[Loki] Received a device linking request from: %@", envelope.source); // Not slaveHexEncodedPublicKey
if (slaveSignature == nil) { OWSFailDebug(@"Received a device linking request from: %@ without a slave signature.", envelope.source); } if (slaveSignature == nil) { OWSFailDebug(@"Received a device linking request from: %@ without a slave signature.", envelope.source); }
[LKDeviceLinkingSession.current processLinkingRequestFrom:slaveHexEncodedPublicKey to:masterHexEncodedPublicKey with:slaveSignature]; [LKDeviceLinkingSession.current processLinkingRequestFrom:slaveHexEncodedPublicKey to:masterHexEncodedPublicKey with:slaveSignature];
break; break;
} }
case SSKProtoLokiDeviceLinkingMessageTypeGrant: { case SSKProtoLokiDeviceLinkMessageTypeAuthorization: {
OWSLogInfo(@"[Loki] Received a device linking authorization from: %@", envelope.source); // Not slaveHexEncodedPublicKey OWSLogInfo(@"[Loki] Received a device linking authorization from: %@", envelope.source); // Not slaveHexEncodedPublicKey
NSData *masterSignature = contentProto.lokiDeviceLinkingMessage.masterSignature; NSData *masterSignature = contentProto.lokiDeviceLinkMessage.masterSignature;
if (masterSignature == nil) { OWSFailDebug(@"Received a device linking authorization from: %@ without a master signature.", envelope.source); } if (masterSignature == nil) { OWSFailDebug(@"Received a device linking authorization from: %@ without a master signature.", envelope.source); }
if (slaveSignature == nil) { OWSFailDebug(@"Received a device linking authorization from: %@ without a slave signature.", envelope.source); } if (slaveSignature == nil) { OWSFailDebug(@"Received a device linking authorization from: %@ without a slave signature.", envelope.source); }
[LKDeviceLinkingSession.current processLinkingAuthorizationFrom:masterHexEncodedPublicKey for:slaveHexEncodedPublicKey masterSignature:masterSignature slaveSignature:slaveSignature]; [LKDeviceLinkingSession.current processLinkingAuthorizationFrom:masterHexEncodedPublicKey for:slaveHexEncodedPublicKey masterSignature:masterSignature slaveSignature:slaveSignature];
@ -1597,7 +1597,7 @@ NS_ASSUME_NONNULL_BEGIN
} }
} }
- (void)handleDeviceLinkingMessageIfNeeded:(TSIncomingMessage *)message transaction:(YapDatabaseReadWriteTransaction *)transaction { - (void)handleDeviceLinkMessageIfNeeded:(TSIncomingMessage *)message transaction:(YapDatabaseReadWriteTransaction *)transaction {
} }

View file

@ -472,8 +472,8 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
if let _value = lokiAddressMessage { if let _value = lokiAddressMessage {
builder.setLokiAddressMessage(_value) builder.setLokiAddressMessage(_value)
} }
if let _value = lokiDeviceLinkingMessage { if let _value = lokiDeviceLinkMessage {
builder.setLokiDeviceLinkingMessage(_value) builder.setLokiDeviceLinkMessage(_value)
} }
return builder return builder
} }
@ -516,8 +516,8 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
proto.lokiAddressMessage = valueParam.proto proto.lokiAddressMessage = valueParam.proto
} }
@objc public func setLokiDeviceLinkingMessage(_ valueParam: SSKProtoLokiDeviceLinkingMessage) { @objc public func setLokiDeviceLinkMessage(_ valueParam: SSKProtoLokiDeviceLinkMessage) {
proto.lokiDeviceLinkingMessage = valueParam.proto proto.lokiDeviceLinkMessage = valueParam.proto
} }
@objc public func build() throws -> SSKProtoContent { @objc public func build() throws -> SSKProtoContent {
@ -547,7 +547,7 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
@objc public let lokiAddressMessage: SSKProtoLokiAddressMessage? @objc public let lokiAddressMessage: SSKProtoLokiAddressMessage?
@objc public let lokiDeviceLinkingMessage: SSKProtoLokiDeviceLinkingMessage? @objc public let lokiDeviceLinkMessage: SSKProtoLokiDeviceLinkMessage?
private init(proto: SignalServiceProtos_Content, private init(proto: SignalServiceProtos_Content,
dataMessage: SSKProtoDataMessage?, dataMessage: SSKProtoDataMessage?,
@ -558,7 +558,7 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
typingMessage: SSKProtoTypingMessage?, typingMessage: SSKProtoTypingMessage?,
prekeyBundleMessage: SSKProtoPrekeyBundleMessage?, prekeyBundleMessage: SSKProtoPrekeyBundleMessage?,
lokiAddressMessage: SSKProtoLokiAddressMessage?, lokiAddressMessage: SSKProtoLokiAddressMessage?,
lokiDeviceLinkingMessage: SSKProtoLokiDeviceLinkingMessage?) { lokiDeviceLinkMessage: SSKProtoLokiDeviceLinkMessage?) {
self.proto = proto self.proto = proto
self.dataMessage = dataMessage self.dataMessage = dataMessage
self.syncMessage = syncMessage self.syncMessage = syncMessage
@ -568,7 +568,7 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
self.typingMessage = typingMessage self.typingMessage = typingMessage
self.prekeyBundleMessage = prekeyBundleMessage self.prekeyBundleMessage = prekeyBundleMessage
self.lokiAddressMessage = lokiAddressMessage self.lokiAddressMessage = lokiAddressMessage
self.lokiDeviceLinkingMessage = lokiDeviceLinkingMessage self.lokiDeviceLinkMessage = lokiDeviceLinkMessage
} }
@objc @objc
@ -622,9 +622,9 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
lokiAddressMessage = try SSKProtoLokiAddressMessage.parseProto(proto.lokiAddressMessage) lokiAddressMessage = try SSKProtoLokiAddressMessage.parseProto(proto.lokiAddressMessage)
} }
var lokiDeviceLinkingMessage: SSKProtoLokiDeviceLinkingMessage? = nil var lokiDeviceLinkMessage: SSKProtoLokiDeviceLinkMessage? = nil
if proto.hasLokiDeviceLinkingMessage { if proto.hasLokiDeviceLinkMessage {
lokiDeviceLinkingMessage = try SSKProtoLokiDeviceLinkingMessage.parseProto(proto.lokiDeviceLinkingMessage) lokiDeviceLinkMessage = try SSKProtoLokiDeviceLinkMessage.parseProto(proto.lokiDeviceLinkMessage)
} }
// MARK: - Begin Validation Logic for SSKProtoContent - // MARK: - Begin Validation Logic for SSKProtoContent -
@ -640,7 +640,7 @@ extension SSKProtoTypingMessage.SSKProtoTypingMessageBuilder {
typingMessage: typingMessage, typingMessage: typingMessage,
prekeyBundleMessage: prekeyBundleMessage, prekeyBundleMessage: prekeyBundleMessage,
lokiAddressMessage: lokiAddressMessage, lokiAddressMessage: lokiAddressMessage,
lokiDeviceLinkingMessage: lokiDeviceLinkingMessage) lokiDeviceLinkMessage: lokiDeviceLinkMessage)
return result return result
} }
@ -960,43 +960,43 @@ extension SSKProtoLokiAddressMessage.SSKProtoLokiAddressMessageBuilder {
#endif #endif
// MARK: - SSKProtoLokiDeviceLinkingMessage // MARK: - SSKProtoLokiDeviceLinkMessage
@objc public class SSKProtoLokiDeviceLinkingMessage: NSObject { @objc public class SSKProtoLokiDeviceLinkMessage: NSObject {
// MARK: - SSKProtoLokiDeviceLinkingMessageType // MARK: - SSKProtoLokiDeviceLinkMessageType
@objc public enum SSKProtoLokiDeviceLinkingMessageType: Int32 { @objc public enum SSKProtoLokiDeviceLinkMessageType: Int32 {
case request = 1 case request = 1
case grant = 2 case authorization = 2
case revoke = 3 case revocation = 3
} }
private class func SSKProtoLokiDeviceLinkingMessageTypeWrap(_ value: SignalServiceProtos_LokiDeviceLinkingMessage.TypeEnum) -> SSKProtoLokiDeviceLinkingMessageType { private class func SSKProtoLokiDeviceLinkMessageTypeWrap(_ value: SignalServiceProtos_LokiDeviceLinkMessage.TypeEnum) -> SSKProtoLokiDeviceLinkMessageType {
switch value { switch value {
case .request: return .request case .request: return .request
case .grant: return .grant case .authorization: return .authorization
case .revoke: return .revoke case .revocation: return .revocation
} }
} }
private class func SSKProtoLokiDeviceLinkingMessageTypeUnwrap(_ value: SSKProtoLokiDeviceLinkingMessageType) -> SignalServiceProtos_LokiDeviceLinkingMessage.TypeEnum { private class func SSKProtoLokiDeviceLinkMessageTypeUnwrap(_ value: SSKProtoLokiDeviceLinkMessageType) -> SignalServiceProtos_LokiDeviceLinkMessage.TypeEnum {
switch value { switch value {
case .request: return .request case .request: return .request
case .grant: return .grant case .authorization: return .authorization
case .revoke: return .revoke case .revocation: return .revocation
} }
} }
// MARK: - SSKProtoLokiDeviceLinkingMessageBuilder // MARK: - SSKProtoLokiDeviceLinkMessageBuilder
@objc public class func builder() -> SSKProtoLokiDeviceLinkingMessageBuilder { @objc public class func builder() -> SSKProtoLokiDeviceLinkMessageBuilder {
return SSKProtoLokiDeviceLinkingMessageBuilder() return SSKProtoLokiDeviceLinkMessageBuilder()
} }
// asBuilder() constructs a builder that reflects the proto's contents. // asBuilder() constructs a builder that reflects the proto's contents.
@objc public func asBuilder() -> SSKProtoLokiDeviceLinkingMessageBuilder { @objc public func asBuilder() -> SSKProtoLokiDeviceLinkMessageBuilder {
let builder = SSKProtoLokiDeviceLinkingMessageBuilder() let builder = SSKProtoLokiDeviceLinkMessageBuilder()
if let _value = masterHexEncodedPublicKey { if let _value = masterHexEncodedPublicKey {
builder.setMasterHexEncodedPublicKey(_value) builder.setMasterHexEncodedPublicKey(_value)
} }
@ -1015,9 +1015,9 @@ extension SSKProtoLokiAddressMessage.SSKProtoLokiAddressMessageBuilder {
return builder return builder
} }
@objc public class SSKProtoLokiDeviceLinkingMessageBuilder: NSObject { @objc public class SSKProtoLokiDeviceLinkMessageBuilder: NSObject {
private var proto = SignalServiceProtos_LokiDeviceLinkingMessage() private var proto = SignalServiceProtos_LokiDeviceLinkMessage()
@objc fileprivate override init() {} @objc fileprivate override init() {}
@ -1037,20 +1037,20 @@ extension SSKProtoLokiAddressMessage.SSKProtoLokiAddressMessageBuilder {
proto.slaveSignature = valueParam proto.slaveSignature = valueParam
} }
@objc public func setType(_ valueParam: SSKProtoLokiDeviceLinkingMessageType) { @objc public func setType(_ valueParam: SSKProtoLokiDeviceLinkMessageType) {
proto.type = SSKProtoLokiDeviceLinkingMessageTypeUnwrap(valueParam) proto.type = SSKProtoLokiDeviceLinkMessageTypeUnwrap(valueParam)
} }
@objc public func build() throws -> SSKProtoLokiDeviceLinkingMessage { @objc public func build() throws -> SSKProtoLokiDeviceLinkMessage {
return try SSKProtoLokiDeviceLinkingMessage.parseProto(proto) return try SSKProtoLokiDeviceLinkMessage.parseProto(proto)
} }
@objc public func buildSerializedData() throws -> Data { @objc public func buildSerializedData() throws -> Data {
return try SSKProtoLokiDeviceLinkingMessage.parseProto(proto).serializedData() return try SSKProtoLokiDeviceLinkMessage.parseProto(proto).serializedData()
} }
} }
fileprivate let proto: SignalServiceProtos_LokiDeviceLinkingMessage fileprivate let proto: SignalServiceProtos_LokiDeviceLinkMessage
@objc public var masterHexEncodedPublicKey: String? { @objc public var masterHexEncodedPublicKey: String? {
guard proto.hasMasterHexEncodedPublicKey else { guard proto.hasMasterHexEncodedPublicKey else {
@ -1092,14 +1092,14 @@ extension SSKProtoLokiAddressMessage.SSKProtoLokiAddressMessageBuilder {
return proto.hasSlaveSignature return proto.hasSlaveSignature
} }
@objc public var type: SSKProtoLokiDeviceLinkingMessageType { @objc public var type: SSKProtoLokiDeviceLinkMessageType {
return SSKProtoLokiDeviceLinkingMessage.SSKProtoLokiDeviceLinkingMessageTypeWrap(proto.type) return SSKProtoLokiDeviceLinkMessage.SSKProtoLokiDeviceLinkMessageTypeWrap(proto.type)
} }
@objc public var hasType: Bool { @objc public var hasType: Bool {
return proto.hasType return proto.hasType
} }
private init(proto: SignalServiceProtos_LokiDeviceLinkingMessage) { private init(proto: SignalServiceProtos_LokiDeviceLinkMessage) {
self.proto = proto self.proto = proto
} }
@ -1108,17 +1108,17 @@ extension SSKProtoLokiAddressMessage.SSKProtoLokiAddressMessageBuilder {
return try self.proto.serializedData() return try self.proto.serializedData()
} }
@objc public class func parseData(_ serializedData: Data) throws -> SSKProtoLokiDeviceLinkingMessage { @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoLokiDeviceLinkMessage {
let proto = try SignalServiceProtos_LokiDeviceLinkingMessage(serializedData: serializedData) let proto = try SignalServiceProtos_LokiDeviceLinkMessage(serializedData: serializedData)
return try parseProto(proto) return try parseProto(proto)
} }
fileprivate class func parseProto(_ proto: SignalServiceProtos_LokiDeviceLinkingMessage) throws -> SSKProtoLokiDeviceLinkingMessage { fileprivate class func parseProto(_ proto: SignalServiceProtos_LokiDeviceLinkMessage) throws -> SSKProtoLokiDeviceLinkMessage {
// MARK: - Begin Validation Logic for SSKProtoLokiDeviceLinkingMessage - // MARK: - Begin Validation Logic for SSKProtoLokiDeviceLinkMessage -
// MARK: - End Validation Logic for SSKProtoLokiDeviceLinkingMessage - // MARK: - End Validation Logic for SSKProtoLokiDeviceLinkMessage -
let result = SSKProtoLokiDeviceLinkingMessage(proto: proto) let result = SSKProtoLokiDeviceLinkMessage(proto: proto)
return result return result
} }
@ -1129,14 +1129,14 @@ extension SSKProtoLokiAddressMessage.SSKProtoLokiAddressMessageBuilder {
#if DEBUG #if DEBUG
extension SSKProtoLokiDeviceLinkingMessage { extension SSKProtoLokiDeviceLinkMessage {
@objc public func serializedDataIgnoringErrors() -> Data? { @objc public func serializedDataIgnoringErrors() -> Data? {
return try! self.serializedData() return try! self.serializedData()
} }
} }
extension SSKProtoLokiDeviceLinkingMessage.SSKProtoLokiDeviceLinkingMessageBuilder { extension SSKProtoLokiDeviceLinkMessage.SSKProtoLokiDeviceLinkMessageBuilder {
@objc public func buildIgnoringErrors() -> SSKProtoLokiDeviceLinkingMessage? { @objc public func buildIgnoringErrors() -> SSKProtoLokiDeviceLinkMessage? {
return try! self.build() return try! self.build()
} }
} }

View file

@ -354,14 +354,14 @@ struct SignalServiceProtos_Content {
mutating func clearLokiAddressMessage() {_uniqueStorage()._lokiAddressMessage = nil} mutating func clearLokiAddressMessage() {_uniqueStorage()._lokiAddressMessage = nil}
/// Loki /// Loki
var lokiDeviceLinkingMessage: SignalServiceProtos_LokiDeviceLinkingMessage { var lokiDeviceLinkMessage: SignalServiceProtos_LokiDeviceLinkMessage {
get {return _storage._lokiDeviceLinkingMessage ?? SignalServiceProtos_LokiDeviceLinkingMessage()} get {return _storage._lokiDeviceLinkMessage ?? SignalServiceProtos_LokiDeviceLinkMessage()}
set {_uniqueStorage()._lokiDeviceLinkingMessage = newValue} set {_uniqueStorage()._lokiDeviceLinkMessage = newValue}
} }
/// Returns true if `lokiDeviceLinkingMessage` has been explicitly set. /// Returns true if `lokiDeviceLinkMessage` has been explicitly set.
var hasLokiDeviceLinkingMessage: Bool {return _storage._lokiDeviceLinkingMessage != nil} var hasLokiDeviceLinkMessage: Bool {return _storage._lokiDeviceLinkMessage != nil}
/// Clears the value of `lokiDeviceLinkingMessage`. Subsequent reads from it will return its default value. /// Clears the value of `lokiDeviceLinkMessage`. Subsequent reads from it will return its default value.
mutating func clearLokiDeviceLinkingMessage() {_uniqueStorage()._lokiDeviceLinkingMessage = nil} mutating func clearLokiDeviceLinkMessage() {_uniqueStorage()._lokiDeviceLinkMessage = nil}
var unknownFields = SwiftProtobuf.UnknownStorage() var unknownFields = SwiftProtobuf.UnknownStorage()
@ -487,7 +487,7 @@ struct SignalServiceProtos_LokiAddressMessage {
} }
/// Loki /// Loki
struct SignalServiceProtos_LokiDeviceLinkingMessage { struct SignalServiceProtos_LokiDeviceLinkMessage {
// SwiftProtobuf.Message conformance is added in an extension below. See the // SwiftProtobuf.Message conformance is added in an extension below. See the
// `Message` and `Message+*Additions` files in the SwiftProtobuf library for // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
// methods supported on all messages. // methods supported on all messages.
@ -528,7 +528,7 @@ struct SignalServiceProtos_LokiDeviceLinkingMessage {
/// Clears the value of `slaveSignature`. Subsequent reads from it will return its default value. /// Clears the value of `slaveSignature`. Subsequent reads from it will return its default value.
mutating func clearSlaveSignature() {self._slaveSignature = nil} mutating func clearSlaveSignature() {self._slaveSignature = nil}
var type: SignalServiceProtos_LokiDeviceLinkingMessage.TypeEnum { var type: SignalServiceProtos_LokiDeviceLinkMessage.TypeEnum {
get {return _type ?? .request} get {return _type ?? .request}
set {_type = newValue} set {_type = newValue}
} }
@ -542,8 +542,8 @@ struct SignalServiceProtos_LokiDeviceLinkingMessage {
enum TypeEnum: SwiftProtobuf.Enum { enum TypeEnum: SwiftProtobuf.Enum {
typealias RawValue = Int typealias RawValue = Int
case request // = 1 case request // = 1
case grant // = 2 case authorization // = 2
case revoke // = 3 case revocation // = 3
init() { init() {
self = .request self = .request
@ -552,8 +552,8 @@ struct SignalServiceProtos_LokiDeviceLinkingMessage {
init?(rawValue: Int) { init?(rawValue: Int) {
switch rawValue { switch rawValue {
case 1: self = .request case 1: self = .request
case 2: self = .grant case 2: self = .authorization
case 3: self = .revoke case 3: self = .revocation
default: return nil default: return nil
} }
} }
@ -561,8 +561,8 @@ struct SignalServiceProtos_LokiDeviceLinkingMessage {
var rawValue: Int { var rawValue: Int {
switch self { switch self {
case .request: return 1 case .request: return 1
case .grant: return 2 case .authorization: return 2
case .revoke: return 3 case .revocation: return 3
} }
} }
@ -574,12 +574,12 @@ struct SignalServiceProtos_LokiDeviceLinkingMessage {
fileprivate var _slaveHexEncodedPublicKey: String? = nil fileprivate var _slaveHexEncodedPublicKey: String? = nil
fileprivate var _masterSignature: Data? = nil fileprivate var _masterSignature: Data? = nil
fileprivate var _slaveSignature: Data? = nil fileprivate var _slaveSignature: Data? = nil
fileprivate var _type: SignalServiceProtos_LokiDeviceLinkingMessage.TypeEnum? = nil fileprivate var _type: SignalServiceProtos_LokiDeviceLinkMessage.TypeEnum? = nil
} }
#if swift(>=4.2) #if swift(>=4.2)
extension SignalServiceProtos_LokiDeviceLinkingMessage.TypeEnum: CaseIterable { extension SignalServiceProtos_LokiDeviceLinkMessage.TypeEnum: CaseIterable {
// Support synthesized by the compiler. // Support synthesized by the compiler.
} }
@ -2811,7 +2811,7 @@ extension SignalServiceProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._Mes
6: .same(proto: "typingMessage"), 6: .same(proto: "typingMessage"),
101: .same(proto: "prekeyBundleMessage"), 101: .same(proto: "prekeyBundleMessage"),
102: .same(proto: "lokiAddressMessage"), 102: .same(proto: "lokiAddressMessage"),
103: .same(proto: "lokiDeviceLinkingMessage"), 103: .same(proto: "lokiDeviceLinkMessage"),
] ]
fileprivate class _StorageClass { fileprivate class _StorageClass {
@ -2823,7 +2823,7 @@ extension SignalServiceProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._Mes
var _typingMessage: SignalServiceProtos_TypingMessage? = nil var _typingMessage: SignalServiceProtos_TypingMessage? = nil
var _prekeyBundleMessage: SignalServiceProtos_PrekeyBundleMessage? = nil var _prekeyBundleMessage: SignalServiceProtos_PrekeyBundleMessage? = nil
var _lokiAddressMessage: SignalServiceProtos_LokiAddressMessage? = nil var _lokiAddressMessage: SignalServiceProtos_LokiAddressMessage? = nil
var _lokiDeviceLinkingMessage: SignalServiceProtos_LokiDeviceLinkingMessage? = nil var _lokiDeviceLinkMessage: SignalServiceProtos_LokiDeviceLinkMessage? = nil
static let defaultInstance = _StorageClass() static let defaultInstance = _StorageClass()
@ -2838,7 +2838,7 @@ extension SignalServiceProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._Mes
_typingMessage = source._typingMessage _typingMessage = source._typingMessage
_prekeyBundleMessage = source._prekeyBundleMessage _prekeyBundleMessage = source._prekeyBundleMessage
_lokiAddressMessage = source._lokiAddressMessage _lokiAddressMessage = source._lokiAddressMessage
_lokiDeviceLinkingMessage = source._lokiDeviceLinkingMessage _lokiDeviceLinkMessage = source._lokiDeviceLinkMessage
} }
} }
@ -2862,7 +2862,7 @@ extension SignalServiceProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._Mes
case 6: try decoder.decodeSingularMessageField(value: &_storage._typingMessage) case 6: try decoder.decodeSingularMessageField(value: &_storage._typingMessage)
case 101: try decoder.decodeSingularMessageField(value: &_storage._prekeyBundleMessage) case 101: try decoder.decodeSingularMessageField(value: &_storage._prekeyBundleMessage)
case 102: try decoder.decodeSingularMessageField(value: &_storage._lokiAddressMessage) case 102: try decoder.decodeSingularMessageField(value: &_storage._lokiAddressMessage)
case 103: try decoder.decodeSingularMessageField(value: &_storage._lokiDeviceLinkingMessage) case 103: try decoder.decodeSingularMessageField(value: &_storage._lokiDeviceLinkMessage)
default: break default: break
} }
} }
@ -2895,7 +2895,7 @@ extension SignalServiceProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._Mes
if let v = _storage._lokiAddressMessage { if let v = _storage._lokiAddressMessage {
try visitor.visitSingularMessageField(value: v, fieldNumber: 102) try visitor.visitSingularMessageField(value: v, fieldNumber: 102)
} }
if let v = _storage._lokiDeviceLinkingMessage { if let v = _storage._lokiDeviceLinkMessage {
try visitor.visitSingularMessageField(value: v, fieldNumber: 103) try visitor.visitSingularMessageField(value: v, fieldNumber: 103)
} }
} }
@ -2915,7 +2915,7 @@ extension SignalServiceProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._Mes
if _storage._typingMessage != rhs_storage._typingMessage {return false} if _storage._typingMessage != rhs_storage._typingMessage {return false}
if _storage._prekeyBundleMessage != rhs_storage._prekeyBundleMessage {return false} if _storage._prekeyBundleMessage != rhs_storage._prekeyBundleMessage {return false}
if _storage._lokiAddressMessage != rhs_storage._lokiAddressMessage {return false} if _storage._lokiAddressMessage != rhs_storage._lokiAddressMessage {return false}
if _storage._lokiDeviceLinkingMessage != rhs_storage._lokiDeviceLinkingMessage {return false} if _storage._lokiDeviceLinkMessage != rhs_storage._lokiDeviceLinkMessage {return false}
return true return true
} }
if !storagesAreEqual {return false} if !storagesAreEqual {return false}
@ -3025,8 +3025,8 @@ extension SignalServiceProtos_LokiAddressMessage: SwiftProtobuf.Message, SwiftPr
} }
} }
extension SignalServiceProtos_LokiDeviceLinkingMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { extension SignalServiceProtos_LokiDeviceLinkMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
static let protoMessageName: String = _protobuf_package + ".LokiDeviceLinkingMessage" static let protoMessageName: String = _protobuf_package + ".LokiDeviceLinkMessage"
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
1: .same(proto: "masterHexEncodedPublicKey"), 1: .same(proto: "masterHexEncodedPublicKey"),
2: .same(proto: "slaveHexEncodedPublicKey"), 2: .same(proto: "slaveHexEncodedPublicKey"),
@ -3067,7 +3067,7 @@ extension SignalServiceProtos_LokiDeviceLinkingMessage: SwiftProtobuf.Message, S
try unknownFields.traverse(visitor: &visitor) try unknownFields.traverse(visitor: &visitor)
} }
static func ==(lhs: SignalServiceProtos_LokiDeviceLinkingMessage, rhs: SignalServiceProtos_LokiDeviceLinkingMessage) -> Bool { static func ==(lhs: SignalServiceProtos_LokiDeviceLinkMessage, rhs: SignalServiceProtos_LokiDeviceLinkMessage) -> Bool {
if lhs._masterHexEncodedPublicKey != rhs._masterHexEncodedPublicKey {return false} if lhs._masterHexEncodedPublicKey != rhs._masterHexEncodedPublicKey {return false}
if lhs._slaveHexEncodedPublicKey != rhs._slaveHexEncodedPublicKey {return false} if lhs._slaveHexEncodedPublicKey != rhs._slaveHexEncodedPublicKey {return false}
if lhs._masterSignature != rhs._masterSignature {return false} if lhs._masterSignature != rhs._masterSignature {return false}
@ -3078,11 +3078,11 @@ extension SignalServiceProtos_LokiDeviceLinkingMessage: SwiftProtobuf.Message, S
} }
} }
extension SignalServiceProtos_LokiDeviceLinkingMessage.TypeEnum: SwiftProtobuf._ProtoNameProviding { extension SignalServiceProtos_LokiDeviceLinkMessage.TypeEnum: SwiftProtobuf._ProtoNameProviding {
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
1: .same(proto: "REQUEST"), 1: .same(proto: "REQUEST"),
2: .same(proto: "GRANT"), 2: .same(proto: "AUTHORIZATION"),
3: .same(proto: "REVOKE"), 3: .same(proto: "REVOCATION"),
] ]
} }