diff --git a/src/Devices/OWSContactsOutputStream.m b/src/Devices/OWSContactsOutputStream.m index da662a03b..96ce8ba83 100644 --- a/src/Devices/OWSContactsOutputStream.m +++ b/src/Devices/OWSContactsOutputStream.m @@ -19,21 +19,18 @@ NS_ASSUME_NONNULL_BEGIN { OWSAssert(signalAccount); OWSAssert(signalAccount.contact); - + OWSAssert(recipientIdentity); + OWSSignalServiceProtosContactDetailsBuilder *contactBuilder = [OWSSignalServiceProtosContactDetailsBuilder new]; [contactBuilder setName:signalAccount.contact.fullName]; [contactBuilder setNumber:signalAccount.recipientId]; - - // Don't sync default or no-longer-verified state in contact sync. - if (recipientIdentity.verificationState == OWSVerificationStateVerified) { - OWSSignalServiceProtosVerifiedBuilder *verifiedBuilder = [OWSSignalServiceProtosVerifiedBuilder new]; - verifiedBuilder.state = OWSSignalServiceProtosVerifiedStateVerified; - verifiedBuilder.destination = recipientIdentity.recipientId; - verifiedBuilder.identityKey = recipientIdentity.identityKey; - // TODO do we need to set null message here? - contactBuilder.verified = [verifiedBuilder build]; - } - + + OWSSignalServiceProtosVerifiedBuilder *verifiedBuilder = [OWSSignalServiceProtosVerifiedBuilder new]; + verifiedBuilder.destination = recipientIdentity.recipientId; + verifiedBuilder.identityKey = recipientIdentity.identityKey; + verifiedBuilder.state = OWSVerificationStateToProtoState(recipientIdentity.verificationState); + contactBuilder.verified = [verifiedBuilder build]; + NSData *avatarPng; if (signalAccount.contact.image) { OWSSignalServiceProtosContactDetailsAvatarBuilder *avatarBuilder = diff --git a/src/Devices/OWSVerificationStateSyncMessage.m b/src/Devices/OWSVerificationStateSyncMessage.m index d7e937512..bf1374c16 100644 --- a/src/Devices/OWSVerificationStateSyncMessage.m +++ b/src/Devices/OWSVerificationStateSyncMessage.m @@ -105,17 +105,8 @@ NS_ASSUME_NONNULL_BEGIN verifiedBuilder.destination = self.verificationForRecipientId; verifiedBuilder.identityKey = self.identityKey; - verifiedBuilder.state = ^{ - switch (self.verificationState) { - case OWSVerificationStateDefault: - return OWSSignalServiceProtosVerifiedStateDefault; - case OWSVerificationStateVerified: - return OWSSignalServiceProtosVerifiedStateVerified; - case OWSVerificationStateNoLongerVerified: - return OWSSignalServiceProtosVerifiedStateUnverified; - } - }(); - + verifiedBuilder.state = OWSVerificationStateToProtoState(self.verificationState); + OWSAssert(self.paddingBytesLength != 0); verifiedBuilder.nullMessage = [Cryptography generateRandomBytes:self.paddingBytesLength]; diff --git a/src/Security/OWSRecipientIdentity.h b/src/Security/OWSRecipientIdentity.h index 366895f1d..7b5c82608 100644 --- a/src/Security/OWSRecipientIdentity.h +++ b/src/Security/OWSRecipientIdentity.h @@ -2,7 +2,8 @@ // Copyright (c) 2017 Open Whisper Systems. All rights reserved. // -#import +#import "OWSSignalServiceProtos.pb.h" +#import "TSYapDatabaseObject.h" NS_ASSUME_NONNULL_BEGIN @@ -13,6 +14,7 @@ typedef NS_ENUM(NSUInteger, OWSVerificationState) { }; NSString *OWSVerificationStateToString(OWSVerificationState verificationState); +OWSSignalServiceProtosVerifiedState OWSVerificationStateToProtoState(OWSVerificationState verificationState); @interface OWSRecipientIdentity : TSYapDatabaseObject diff --git a/src/Security/OWSRecipientIdentity.m b/src/Security/OWSRecipientIdentity.m index 2590a73c0..d6c81d074 100644 --- a/src/Security/OWSRecipientIdentity.m +++ b/src/Security/OWSRecipientIdentity.m @@ -20,6 +20,18 @@ NSString *OWSVerificationStateToString(OWSVerificationState verificationState) } } +OWSSignalServiceProtosVerifiedState OWSVerificationStateToProtoState(OWSVerificationState verificationState) +{ + switch (verificationState) { + case OWSVerificationStateDefault: + return OWSSignalServiceProtosVerifiedStateDefault; + case OWSVerificationStateVerified: + return OWSSignalServiceProtosVerifiedStateVerified; + case OWSVerificationStateNoLongerVerified: + return OWSSignalServiceProtosVerifiedStateUnverified; + } +} + @interface OWSRecipientIdentity () @property (atomic) OWSVerificationState verificationState;