From 3a46a344ac2f5fd5b74547b067bcfde7c39fa0b2 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 7 Nov 2018 14:04:02 -0500 Subject: [PATCH 1/4] Never use UD for sync messages. --- .../profiles/ProfileFetcherJob.swift | 3 +- .../src/Messages/OWSMessageSender.m | 6 ++-- .../src/Messages/UD/OWSUDManager.swift | 31 +++++++------------ .../tests/Messages/OWSUDManagerTest.swift | 30 +++++++++--------- 4 files changed, 30 insertions(+), 40 deletions(-) diff --git a/SignalMessaging/profiles/ProfileFetcherJob.swift b/SignalMessaging/profiles/ProfileFetcherJob.swift index 1261b3b0e..a0a3739cf 100644 --- a/SignalMessaging/profiles/ProfileFetcherJob.swift +++ b/SignalMessaging/profiles/ProfileFetcherJob.swift @@ -135,8 +135,7 @@ public class ProfileFetcherJob: NSObject { Logger.error("getProfile: \(recipientId)") - let udAccess = udManager.udAccess(forRecipientId: recipientId, - requireSyncAccess: false) + let udAccess = udManager.udAccess(forRecipientId: recipientId) return requestProfile(recipientId: recipientId, udAccess: udAccess, canFailoverUDAuth: true) diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index b304d9605..e28958679 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -592,8 +592,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; // Use chained promises to make the code more readable. AnyPromise *sendPromise = [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { OWSUDAccess *_Nullable theirUDAccess; - if (senderCertificate != nil && selfUDAccess != nil) { - theirUDAccess = [self.udManager udAccessForRecipientId:recipient.recipientId requireSyncAccess:YES]; + if (senderCertificate != nil) { + theirUDAccess = [self.udManager udAccessForRecipientId:recipient.recipientId]; } OWSMessageSend *messageSend = [[OWSMessageSend alloc] initWithMessage:message @@ -633,7 +633,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; OWSUDAccess *_Nullable selfUDAccess; if (senderCertificate) { - selfUDAccess = [self.udManager udAccessForRecipientId:self.tsAccountManager.localNumber requireSyncAccess:YES]; + selfUDAccess = [self.udManager udAccessForRecipientId:self.tsAccountManager.localNumber]; } void (^successHandler)(void) = ^() { diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index 012c03eed..2bf7dae34 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -74,8 +74,7 @@ public class OWSUDAccess: NSObject { func udAccessKey(forRecipientId recipientId: RecipientIdentifier) -> SMKUDAccessKey? @objc - func udAccess(forRecipientId recipientId: RecipientIdentifier, - requireSyncAccess: Bool) -> OWSUDAccess? + func udAccess(forRecipientId recipientId: RecipientIdentifier) -> OWSUDAccess? // MARK: Sender Certificate @@ -236,25 +235,17 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { // Returns the UD access key for sending to a given recipient. @objc - public func udAccess(forRecipientId recipientId: RecipientIdentifier, - requireSyncAccess: Bool) -> OWSUDAccess? { - if requireSyncAccess { - guard let localNumber = tsAccountManager.localNumber() else { - if isUDVerboseLoggingEnabled() { - Logger.info("UD disabled for \(recipientId), no local number.") - } - owsFailDebug("Missing local number.") - return nil - } - if localNumber != recipientId { - let selfAccessMode = unidentifiedAccessMode(forRecipientId: localNumber) - guard selfAccessMode != .disabled else { - if isUDVerboseLoggingEnabled() { - Logger.info("UD disabled for \(recipientId), UD disabled for sync messages.") - } - return nil - } + public func udAccess(forRecipientId recipientId: RecipientIdentifier) -> OWSUDAccess? { + guard let localNumber = tsAccountManager.localNumber() else { + if isUDVerboseLoggingEnabled() { + Logger.info("UD disabled for \(recipientId), no local number.") } + owsFailDebug("Missing local number.") + return nil + } + if localNumber == recipientId { + Logger.info("UD disabled for \(recipientId), UD disabled for sync messages.") + return nil } let accessMode = unidentifiedAccessMode(forRecipientId: recipientId) diff --git a/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift b/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift index bc302d941..306c9cc87 100644 --- a/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift +++ b/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift @@ -78,23 +78,23 @@ class OWSUDManagerTest: SSKBaseTestSwift { let aliceRecipientId = "+13213214321" XCTAssert(UnidentifiedAccessMode.enabled == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId)) udManager.setUnidentifiedAccessMode(.unknown, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.unknown == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId)) udManager.setUnidentifiedAccessMode(.disabled, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.disabled == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId)) udManager.setUnidentifiedAccessMode(.enabled, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.enabled == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId)) udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.unrestricted == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId)) } func testMode_noProfileKey() { @@ -111,24 +111,24 @@ class OWSUDManagerTest: SSKBaseTestSwift { XCTAssertNotEqual(bobRecipientId, tsAccountManager.localNumber()!) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.unknown, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.disabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.disabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.enabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.enabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) // Bob should work in unrestricted mode, even if he doesn't have a profile key. udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unrestricted, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId)) } func testMode_withProfileKey() { @@ -145,22 +145,22 @@ class OWSUDManagerTest: SSKBaseTestSwift { profileManager.setProfileKeyData(OWSAES256Key.generateRandom().keyData, forRecipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.unknown, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.disabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.disabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.enabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.enabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId)) udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unrestricted, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId)) } } From 8ff8f17b21a90f09eebe5981711cfd175c631aff Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 7 Nov 2018 14:16:51 -0500 Subject: [PATCH 2/4] Never use UD for sync messages. --- .../src/Messages/OWSMessageSender.m | 24 ++++--------------- .../src/Messages/UD/OWSUDManager.swift | 12 ---------- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index e28958679..32f88812c 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -579,7 +579,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; message:(TSOutgoingMessage *)message thread:(nullable TSThread *)thread senderCertificate:(nullable SMKSenderCertificate *)senderCertificate - selfUDAccess:(nullable OWSUDAccess *)selfUDAccess sendErrors:(NSMutableArray *)sendErrors { OWSAssertDebug(recipients.count > 0); @@ -591,8 +590,9 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; for (SignalRecipient *recipient in recipients) { // Use chained promises to make the code more readable. AnyPromise *sendPromise = [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { + NSString *localNumber = self.tsAccountManager.localNumber; OWSUDAccess *_Nullable theirUDAccess; - if (senderCertificate != nil) { + if (senderCertificate != nil && ![recipient.recipientId isEqualToString:localNumber]) { theirUDAccess = [self.udManager udAccessForRecipientId:recipient.recipientId]; } @@ -631,16 +631,9 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; { AssertIsOnSendingQueue(); - OWSUDAccess *_Nullable selfUDAccess; - if (senderCertificate) { - selfUDAccess = [self.udManager udAccessForRecipientId:self.tsAccountManager.localNumber]; - } - void (^successHandler)(void) = ^() { dispatch_async([OWSDispatch sendingQueue], ^{ [self handleMessageSentLocally:message - senderCertificate:senderCertificate - selfUDAccess:selfUDAccess success:^{ successHandlerParam(); } @@ -657,8 +650,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; if (message.wasSentToAnyRecipient) { dispatch_async([OWSDispatch sendingQueue], ^{ [self handleMessageSentLocally:message - senderCertificate:senderCertificate - selfUDAccess:selfUDAccess success:^{ failureHandlerParam(error); } @@ -740,7 +731,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; message:message thread:thread senderCertificate:senderCertificate - selfUDAccess:selfUDAccess sendErrors:sendErrors] .then(^(id value) { successHandler(); @@ -1355,8 +1345,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; } - (void)handleMessageSentLocally:(TSOutgoingMessage *)message - senderCertificate:(nullable SMKSenderCertificate *)senderCertificate - selfUDAccess:(nullable OWSUDAccess *)selfUDAccess success:(void (^)(void))success failure:(RetryableFailureHandler)failure { @@ -1372,8 +1360,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; [self sendSyncTranscriptForMessage:message - senderCertificate:senderCertificate - selfUDAccess:selfUDAccess success:^{ // TODO: We might send to a recipient, then to another recipient on retry. // To ensure desktop receives all "delivery status" info, we might @@ -1389,8 +1375,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; } - (void)sendSyncTranscriptForMessage:(TSOutgoingMessage *)message - senderCertificate:(nullable SMKSenderCertificate *)senderCertificate - selfUDAccess:(nullable OWSUDAccess *)selfUDAccess success:(void (^)(void))success failure:(RetryableFailureHandler)failure { @@ -1406,8 +1390,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; OWSMessageSend *messageSend = [[OWSMessageSend alloc] initWithMessage:sentMessageTranscript thread:message.thread recipient:recipient - senderCertificate:senderCertificate - udAccess:selfUDAccess + senderCertificate:nil + udAccess:nil localNumber:self.tsAccountManager.localNumber success:^{ OWSLogInfo(@"Successfully sent sync transcript."); diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index 2bf7dae34..78b3a7fb2 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -236,18 +236,6 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { // Returns the UD access key for sending to a given recipient. @objc public func udAccess(forRecipientId recipientId: RecipientIdentifier) -> OWSUDAccess? { - guard let localNumber = tsAccountManager.localNumber() else { - if isUDVerboseLoggingEnabled() { - Logger.info("UD disabled for \(recipientId), no local number.") - } - owsFailDebug("Missing local number.") - return nil - } - if localNumber == recipientId { - Logger.info("UD disabled for \(recipientId), UD disabled for sync messages.") - return nil - } - let accessMode = unidentifiedAccessMode(forRecipientId: recipientId) switch accessMode { case .unrestricted: From 954f32b77542f2c6e8a46e8b49e785c6b650786b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 7 Nov 2018 15:24:11 -0500 Subject: [PATCH 3/4] Never use UD for sync messages. --- .../profiles/ProfileFetcherJob.swift | 3 +- .../src/Messages/OWSMessageSender.m | 2 +- .../src/Messages/UD/OWSUDManager.swift | 25 ++++++++++++++-- .../tests/Messages/OWSUDManagerTest.swift | 30 +++++++++---------- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/SignalMessaging/profiles/ProfileFetcherJob.swift b/SignalMessaging/profiles/ProfileFetcherJob.swift index a0a3739cf..1261b3b0e 100644 --- a/SignalMessaging/profiles/ProfileFetcherJob.swift +++ b/SignalMessaging/profiles/ProfileFetcherJob.swift @@ -135,7 +135,8 @@ public class ProfileFetcherJob: NSObject { Logger.error("getProfile: \(recipientId)") - let udAccess = udManager.udAccess(forRecipientId: recipientId) + let udAccess = udManager.udAccess(forRecipientId: recipientId, + requireSyncAccess: false) return requestProfile(recipientId: recipientId, udAccess: udAccess, canFailoverUDAuth: true) diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 32f88812c..749aa35cd 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -593,7 +593,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; NSString *localNumber = self.tsAccountManager.localNumber; OWSUDAccess *_Nullable theirUDAccess; if (senderCertificate != nil && ![recipient.recipientId isEqualToString:localNumber]) { - theirUDAccess = [self.udManager udAccessForRecipientId:recipient.recipientId]; + theirUDAccess = [self.udManager udAccessForRecipientId:recipient.recipientId requireSyncAccess:YES]; } OWSMessageSend *messageSend = [[OWSMessageSend alloc] initWithMessage:message diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index 78b3a7fb2..d694a8f1f 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -74,7 +74,8 @@ public class OWSUDAccess: NSObject { func udAccessKey(forRecipientId recipientId: RecipientIdentifier) -> SMKUDAccessKey? @objc - func udAccess(forRecipientId recipientId: RecipientIdentifier) -> OWSUDAccess? + func udAccess(forRecipientId recipientId: RecipientIdentifier, + requireSyncAccess: Bool) -> OWSUDAccess? // MARK: Sender Certificate @@ -235,7 +236,27 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { // Returns the UD access key for sending to a given recipient. @objc - public func udAccess(forRecipientId recipientId: RecipientIdentifier) -> OWSUDAccess? { + public func udAccess(forRecipientId recipientId: RecipientIdentifier, + requireSyncAccess: Bool) -> OWSUDAccess? { + if requireSyncAccess { + guard let localNumber = tsAccountManager.localNumber() else { + if isUDVerboseLoggingEnabled() { + Logger.info("UD disabled for \(recipientId), no local number.") + } + owsFailDebug("Missing local number.") + return nil + } + if localNumber != recipientId { + let selfAccessMode = unidentifiedAccessMode(forRecipientId: localNumber) + guard selfAccessMode == .enabled || selfAccessMode == .unrestricted else { + if isUDVerboseLoggingEnabled() { + Logger.info("UD disabled for \(recipientId), UD disabled for sync messages.") + } + return nil + } + } + } + let accessMode = unidentifiedAccessMode(forRecipientId: recipientId) switch accessMode { case .unrestricted: diff --git a/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift b/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift index 306c9cc87..bc302d941 100644 --- a/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift +++ b/SignalServiceKit/tests/Messages/OWSUDManagerTest.swift @@ -78,23 +78,23 @@ class OWSUDManagerTest: SSKBaseTestSwift { let aliceRecipientId = "+13213214321" XCTAssert(UnidentifiedAccessMode.enabled == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.unknown, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.unknown == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.disabled, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.disabled == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.enabled, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.enabled == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: aliceRecipientId) XCTAssert(UnidentifiedAccessMode.unrestricted == udManager.unidentifiedAccessMode(forRecipientId: aliceRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: aliceRecipientId, requireSyncAccess: false)) } func testMode_noProfileKey() { @@ -111,24 +111,24 @@ class OWSUDManagerTest: SSKBaseTestSwift { XCTAssertNotEqual(bobRecipientId, tsAccountManager.localNumber()!) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.unknown, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.disabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.disabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.enabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.enabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) // Bob should work in unrestricted mode, even if he doesn't have a profile key. udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unrestricted, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) } func testMode_withProfileKey() { @@ -145,22 +145,22 @@ class OWSUDManagerTest: SSKBaseTestSwift { profileManager.setProfileKeyData(OWSAES256Key.generateRandom().keyData, forRecipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.unknown, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unknown, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.disabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.disabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.enabled, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.enabled, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) udManager.setUnidentifiedAccessMode(.unrestricted, recipientId: bobRecipientId) XCTAssertEqual(UnidentifiedAccessMode.unrestricted, udManager.unidentifiedAccessMode(forRecipientId: bobRecipientId)) - XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId)) + XCTAssertNotNil(udManager.udAccess(forRecipientId: bobRecipientId, requireSyncAccess: false)) } } From 47022377c2afdd5dd485f43537bf937e26059725 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 7 Nov 2018 16:09:52 -0500 Subject: [PATCH 4/4] Respond to CR. --- SignalServiceKit/src/Messages/UD/OWSUDManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index d694a8f1f..012c03eed 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -248,7 +248,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { } if localNumber != recipientId { let selfAccessMode = unidentifiedAccessMode(forRecipientId: localNumber) - guard selfAccessMode == .enabled || selfAccessMode == .unrestricted else { + guard selfAccessMode != .disabled else { if isUDVerboseLoggingEnabled() { Logger.info("UD disabled for \(recipientId), UD disabled for sync messages.") }