session-ios/SignalServiceKit/src/Messages/OWSIdentityManager.h

83 lines
3 KiB
C
Raw Normal View History

2015-12-07 03:31:43 +01:00
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
2015-12-07 03:31:43 +01:00
//
2017-06-06 21:16:09 +02:00
#import "OWSRecipientIdentity.h"
2015-12-07 03:31:43 +01:00
#import <AxolotlKit/IdentityKeyStore.h>
NS_ASSUME_NONNULL_BEGIN
extern NSString *const OWSPrimaryStorageTrustedKeysCollection;
2017-06-06 21:16:09 +02:00
// This notification will be fired whenever identities are created
// or their verification state changes.
extern NSString *const kNSNotificationName_IdentityStateDidChange;
// number of bytes in a signal identity key, excluding the key-type byte.
extern const NSUInteger kIdentityKeyLength;
@class OWSRecipientIdentity;
@class OWSSignalServiceProtosVerified;
@class OWSStorage;
2018-02-02 20:07:13 +01:00
@class YapDatabaseReadWriteTransaction;
// This class can be safely accessed and used from any thread.
@interface OWSIdentityManager : NSObject <IdentityKeyStore>
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)sharedManager;
2015-12-07 03:31:43 +01:00
- (void)generateNewIdentityKey;
2017-06-06 21:32:43 +02:00
2018-01-30 22:41:25 +01:00
- (nullable NSData *)identityKeyForRecipientId:(NSString *)recipientId;
2018-01-30 21:05:04 +01:00
2018-02-02 20:21:35 +01:00
- (nullable NSData *)identityKeyForRecipientId:(NSString *)recipientId
transaction:(YapDatabaseReadTransaction *)transaction;
2017-06-06 21:16:09 +02:00
- (void)setVerificationState:(OWSVerificationState)verificationState
identityKey:(NSData *)identityKey
recipientId:(NSString *)recipientId
2018-01-23 19:58:45 +01:00
isUserInitiatedChange:(BOOL)isUserInitiatedChange
2018-02-02 20:21:35 +01:00
transaction:(YapDatabaseReadWriteTransaction *)transaction;
2017-06-06 21:16:09 +02:00
2018-01-30 22:41:25 +01:00
- (OWSVerificationState)verificationStateForRecipientId:(NSString *)recipientId;
2018-01-30 21:49:36 +01:00
- (OWSVerificationState)verificationStateForRecipientId:(NSString *)recipientId
2018-02-02 18:56:55 +01:00
transaction:(YapDatabaseReadTransaction *)transaction;
2015-12-07 03:31:43 +01:00
2018-02-02 20:07:13 +01:00
- (void)setVerificationState:(OWSVerificationState)verificationState
identityKey:(NSData *)identityKey
recipientId:(NSString *)recipientId
isUserInitiatedChange:(BOOL)isUserInitiatedChange;
- (nullable OWSRecipientIdentity *)recipientIdentityForRecipientId:(NSString *)recipientId;
2017-06-06 21:32:43 +02:00
/**
* @param recipientId unique stable identifier for the recipient, e.g. e164 phone number
* @returns nil if the recipient does not exist, or is trusted for sending
* else returns the untrusted recipient.
2017-06-06 21:32:43 +02:00
*/
2018-01-30 21:49:36 +01:00
- (nullable OWSRecipientIdentity *)untrustedIdentityForSendingToRecipientId:(NSString *)recipientId;
2017-06-06 21:32:43 +02:00
// This method can be called from any thread.
2018-02-02 20:52:45 +01:00
- (void)processIncomingSyncMessage:(OWSSignalServiceProtosVerified *)verified
transaction:(YapDatabaseReadWriteTransaction *)transaction;
2017-06-07 20:20:29 +02:00
2018-02-02 18:56:55 +01:00
- (BOOL)saveRemoteIdentity:(NSData *)identityKey recipientId:(NSString *)recipientId;
#pragma mark - Debug
2018-01-30 22:41:25 +01:00
- (nullable ECKeyPair *)identityKeyPair;
2018-01-22 23:09:50 +01:00
#if DEBUG
2018-01-12 22:49:51 +01:00
// Clears everything except the local identity key.
2018-02-02 20:07:13 +01:00
- (void)clearIdentityState:(YapDatabaseReadWriteTransaction *)transaction;
2018-01-12 22:49:51 +01:00
2018-02-02 20:07:13 +01:00
- (void)snapshotIdentityState:(YapDatabaseReadWriteTransaction *)transaction;
- (void)restoreIdentityState:(YapDatabaseReadWriteTransaction *)transaction;
#endif
2015-12-07 03:31:43 +01:00
@end
NS_ASSUME_NONNULL_END