Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert verification request and transaction to protocols #1528

Merged
merged 2 commits into from
Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions MatrixSDK/Crypto/Verification/MXKeyVerificationManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ FOUNDATION_EXPORT NSString *const MXKeyVerificationManagerNotificationTransactio
- (void)requestVerificationByToDeviceWithUserId:(NSString*)userId
deviceIds:(nullable NSArray<NSString*>*)deviceIds
methods:(NSArray<NSString*>*)methods
success:(void(^)(MXKeyVerificationRequest *request))success
success:(void(^)(id<MXKeyVerificationRequest> request))success
failure:(void(^)(NSError *error))failure;

/**
Expand All @@ -120,13 +120,13 @@ FOUNDATION_EXPORT NSString *const MXKeyVerificationManagerNotificationTransactio
roomId:(nullable NSString*)roomId
fallbackText:(NSString*)fallbackText
methods:(NSArray<NSString*>*)methods
success:(void(^)(MXKeyVerificationRequest *request))success
success:(void(^)(id<MXKeyVerificationRequest> request))success
failure:(void(^)(NSError *error))failure;

/**
All pending verification requests.
*/
@property (nonatomic, readonly) NSArray<MXKeyVerificationRequest*> *pendingRequests;
@property (nonatomic, readonly) NSArray<id<MXKeyVerificationRequest>> *pendingRequests;


#pragma mark - Transactions
Expand All @@ -143,7 +143,7 @@ FOUNDATION_EXPORT NSString *const MXKeyVerificationManagerNotificationTransactio
- (void)beginKeyVerificationWithUserId:(NSString*)userId
andDeviceId:(NSString*)deviceId
method:(NSString*)method
success:(void(^)(MXKeyVerificationTransaction *transaction))success
success:(void(^)(id<MXKeyVerificationTransaction> transaction))success
failure:(void(^)(NSError *error))failure __attribute__((deprecated("Start key verification with a request (requestVerificationByToDeviceWithUserId) instead")));

/**
Expand All @@ -153,17 +153,17 @@ FOUNDATION_EXPORT NSString *const MXKeyVerificationManagerNotificationTransactio
@param success a block called when the operation succeeds.
@param failure a block called when the operation fails.
*/
- (void)beginKeyVerificationFromRequest:(MXKeyVerificationRequest*)request
- (void)beginKeyVerificationFromRequest:(id<MXKeyVerificationRequest>)request
method:(NSString*)method
success:(void(^)(MXKeyVerificationTransaction *transaction))success
success:(void(^)(id<MXKeyVerificationTransaction> transaction))success
failure:(void(^)(NSError *error))failure;

/**
All transactions in progress.

@param complete a block called with all transactions.
*/
- (void)transactions:(void(^)(NSArray<MXKeyVerificationTransaction*> *transactions))complete;
- (void)transactions:(void(^)(NSArray<id<MXKeyVerificationTransaction>> *transactions))complete;


#pragma mark - Verification status
Expand Down
116 changes: 58 additions & 58 deletions MatrixSDK/Crypto/Verification/MXKeyVerificationManager.m

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions MatrixSDK/Crypto/Verification/MXKeyVerificationManager_Private.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ NS_ASSUME_NONNULL_BEGIN

@return a MXHTTPOperation instance.
*/
- (MXHTTPOperation*)sendToOtherInRequest:(MXKeyVerificationRequest*)request
- (MXHTTPOperation*)sendToOtherInRequest:(id<MXKeyVerificationRequest>)request
eventType:(NSString*)eventType
content:(NSDictionary*)content
success:(dispatch_block_t)success
Expand All @@ -68,11 +68,11 @@ NS_ASSUME_NONNULL_BEGIN
@param success a block called when the operation succeeds.
@param failure a block called when the operation fails.
*/
- (void)cancelVerificationRequest:(MXKeyVerificationRequest*)request
- (void)cancelVerificationRequest:(id<MXKeyVerificationRequest>)request
success:(void(^)(void))success
failure:(void(^)(NSError *error))failure;

- (BOOL)isRequestStillValid:(MXKeyVerificationRequest*)request;
- (BOOL)isRequestStillValid:(id<MXKeyVerificationRequest>)request;

- (void)removePendingRequestWithRequestId:(NSString*)requestId;

Expand All @@ -91,7 +91,7 @@ NS_ASSUME_NONNULL_BEGIN
success:(void(^)(MXQRCodeTransaction *transaction))success
failure:(void(^)(NSError *error))failure;

- (void)createQRCodeTransactionFromRequest:(MXKeyVerificationRequest*)request
- (void)createQRCodeTransactionFromRequest:(id<MXKeyVerificationRequest>)request
qrCodeData:(nullable MXQRCodeData*)qrCodeData
success:(void(^)(MXQRCodeTransaction *transaction))success
failure:(void(^)(NSError *error))failure;
Expand All @@ -112,7 +112,7 @@ NS_ASSUME_NONNULL_BEGIN

@return a MXHTTPOperation instance.
*/
- (MXHTTPOperation*)sendToOtherInTransaction:(MXKeyVerificationTransaction*)transaction
- (MXHTTPOperation*)sendToOtherInTransaction:(id<MXKeyVerificationTransaction>)transaction
eventType:(NSString*)eventType
content:(NSDictionary*)content
success:(void (^)(void))success
Expand All @@ -126,7 +126,7 @@ NS_ASSUME_NONNULL_BEGIN
@param success A block object called when the operation succeeds.
@param failure A block object called when the operation fails.
*/
- (void)cancelTransaction:(MXKeyVerificationTransaction*)transaction
- (void)cancelTransaction:(id<MXKeyVerificationTransaction>)transaction
code:(MXTransactionCancelCode*)code
success:(void (^)(void))success
failure:(void (^)(NSError *error))failure;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
An handler on an interactive request for verification by Direct Message.
*/
@interface MXKeyVerificationByDMRequest : MXKeyVerificationRequest
@interface MXKeyVerificationByDMRequest : MXDefaultKeyVerificationRequest

@property (nonatomic, readonly) NSString *roomId;
@property (nonatomic, readonly) NSString *eventId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
An handler on an interactive request for verification by to_device events.
*/
@interface MXKeyVerificationByToDeviceRequest : MXKeyVerificationRequest
@interface MXKeyVerificationByToDeviceRequest : MXDefaultKeyVerificationRequest

@property (nonatomic, readonly) MXKeyVerificationRequestByToDeviceJSONModel *request;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
An handler on an interactive verification request.
*/
@interface MXKeyVerificationRequest : NSObject
@protocol MXKeyVerificationRequest <NSObject>

/**
Accept an incoming key verification request.
Expand Down Expand Up @@ -107,4 +107,11 @@ Accept an incoming key verification request.

@end

/**
Default implementation of verification request used by the SDK
*/
@interface MXDefaultKeyVerificationRequest : NSObject <MXKeyVerificationRequest>

@end

NS_ASSUME_NONNULL_END
14 changes: 12 additions & 2 deletions MatrixSDK/Crypto/Verification/Requests/MXKeyVerificationRequest.m
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,23 @@
#pragma mark - Constants
NSString * const MXKeyVerificationRequestDidChangeNotification = @"MXKeyVerificationRequestDidChangeNotification";

@interface MXKeyVerificationRequest()
@interface MXDefaultKeyVerificationRequest()

@property (nonatomic, readwrite) MXKeyVerificationRequestState state;

@end

@implementation MXKeyVerificationRequest
@implementation MXDefaultKeyVerificationRequest

@synthesize event = _event;
@synthesize fromDevice = _fromDevice;
@synthesize methods = _methods;
@synthesize otherDevice = _otherDevice;
@synthesize otherUser = _otherUser;
@synthesize reasonCancelCode = _reasonCancelCode;
@synthesize requestId = _requestId;
@synthesize timestamp = _timestamp;
@synthesize transport = _transport;

#pragma mark - SDK-Private methods -

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
/**
The `MXKeyVerificationRequest` extension exposes internal operations.
*/
@interface MXKeyVerificationRequest ()
@interface MXDefaultKeyVerificationRequest ()

@property (nonatomic, readonly, weak) MXKeyVerificationManager *manager;

Expand Down
4 changes: 2 additions & 2 deletions MatrixSDK/Crypto/Verification/Status/MXKeyVerification.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ typedef NS_ENUM(NSInteger, MXKeyVerificationState)
@property (nonatomic) MXKeyVerificationState state;

// Those values may be not provided if there are not in progress
@property (nonatomic, nullable) MXKeyVerificationRequest *request;
@property (nonatomic, nullable) MXKeyVerificationTransaction *transaction;
@property (nonatomic, nullable) id<MXKeyVerificationRequest> request;
@property (nonatomic, nullable) id<MXKeyVerificationTransaction> transaction;

@property (nonatomic, readonly) BOOL isRequestAccepted;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
success:(void(^)(MXKeyVerification *keyVerification))success
failure:(void(^)(NSError *error))failure;

- (nullable MXKeyVerification*)keyVerificationFromRequest:(nullable MXKeyVerificationRequest*)request andTransaction:(nullable MXKeyVerificationTransaction*)transaction;
- (nullable MXKeyVerification*)keyVerificationFromRequest:(nullable id<MXKeyVerificationRequest>)request andTransaction:(nullable id<MXKeyVerificationTransaction>)transaction;

@end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ - (nullable MXHTTPOperation *)keyVerificationWithKeyVerificationId:(NSString*)ke
return operation;
}

- (nullable MXKeyVerification*)keyVerificationFromRequest:(nullable MXKeyVerificationRequest*)request andTransaction:(nullable MXKeyVerificationTransaction*)transaction
- (nullable MXKeyVerification*)keyVerificationFromRequest:(nullable id<MXKeyVerificationRequest>)request andTransaction:(nullable id<MXKeyVerificationTransaction>)transaction
{
if (!request && !transaction)
{
Expand Down Expand Up @@ -140,7 +140,7 @@ - (nullable MXKeyVerification *)makeKeyVerificationFromOriginalDMEvent:(nullable
{
MXKeyVerification *keyVerification;

MXKeyVerificationRequest *request = [self verificationRequestInDMEvent:originalEvent events:events];
id<MXKeyVerificationRequest> request = [self verificationRequestInDMEvent:originalEvent events:events];

if (request)
{
Expand Down Expand Up @@ -334,7 +334,7 @@ - (MXKeyVerificationState)stateFromRequestState:(MXKeyVerificationRequestState)r
return state;
}

- (MXKeyVerificationState)stateFromRequest:(nullable MXKeyVerificationRequest*)request andTransaction:(nullable MXKeyVerificationTransaction*)transaction
- (MXKeyVerificationState)stateFromRequest:(nullable id<MXKeyVerificationRequest>)request andTransaction:(nullable id<MXKeyVerificationTransaction>)transaction
{
MXKeyVerificationState keyVerificationState = MXKeyVerificationStateRequestPending;

Expand Down Expand Up @@ -377,9 +377,9 @@ - (MXKeyVerificationState)stateFromRequest:(nullable MXKeyVerificationRequest*)r
break;
}
}
else if ([transaction isKindOfClass:MXSASTransaction.class])
else if ([transaction conformsToProtocol:@protocol(MXSASTransaction)])
{
MXSASTransaction *sasTransaction = (MXSASTransaction*)transaction;
id<MXSASTransaction> sasTransaction = (id<MXSASTransaction>)transaction;

switch (sasTransaction.state) {
case MXSASTransactionStateVerified:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,10 @@ typedef NS_ENUM(NSInteger, MXKeyVerificationTransport) {
MXKeyVerificationTransportDirectMessage,
};


/**
An handler on an interactive device verification.
*/
@interface MXKeyVerificationTransaction: NSObject
@protocol MXKeyVerificationTransaction <NSObject>

/**
The transaction id.
Expand Down Expand Up @@ -113,4 +112,11 @@ typedef NS_ENUM(NSInteger, MXKeyVerificationTransport) {

@end

/**
Default implementation of verification transaction used by the SDK
*/
@interface MXDefaultKeyVerificationTransaction: NSObject <MXKeyVerificationTransaction>

@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,16 @@
NSString * const MXKeyVerificationTransactionDidChangeNotification = @"MXKeyVerificationTransactionDidChangeNotification";


@implementation MXKeyVerificationTransaction
@implementation MXDefaultKeyVerificationTransaction

@synthesize creationDate = _creationDate;
@synthesize dmEventId = _dmEventId;
@synthesize dmRoomId = _dmRoomId;
@synthesize error = _error;
@synthesize isIncoming = _isIncoming;
@synthesize otherDevice = _otherDevice;
@synthesize reasonCancelCode = _reasonCancelCode;
@synthesize transport = _transport;

- (instancetype)initWithOtherDevice:(MXDeviceInfo*)otherDevice andManager:(MXKeyVerificationManager*)manager;
{
Expand All @@ -36,7 +45,7 @@ - (instancetype)initWithOtherDevice:(MXDeviceInfo*)otherDevice andManager:(MXKey
{
_manager = manager;
_otherDevice = otherDevice;
_transactionId = [MXKeyVerificationTransaction createUniqueIdWithOtherUser:self.otherUserId otherDevice:self.otherDeviceId myUser:manager.crypto.mxSession.matrixRestClient.credentials];
_transactionId = [MXDefaultKeyVerificationTransaction createUniqueIdWithOtherUser:self.otherUserId otherDevice:self.otherDeviceId myUser:manager.crypto.mxSession.matrixRestClient.credentials];
_creationDate = [NSDate date];
}
return self;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
The `MXKeyVerificationTransaction` extension exposes internal operations.
*/
@interface MXKeyVerificationTransaction ()
@interface MXDefaultKeyVerificationTransaction ()

@property (nonatomic, readonly, weak) MXKeyVerificationManager *manager;
@property (nonatomic, readwrite) NSString *transactionId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ typedef NS_ENUM(NSInteger, MXQRCodeTransactionState) {
/**
An handler on an interactive device verification based on QR Code.
*/
@interface MXQRCodeTransaction : MXKeyVerificationTransaction
@interface MXQRCodeTransaction : MXDefaultKeyVerificationTransaction

@property (nonatomic) MXQRCodeTransactionState state;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
An handler on an incoming SAS device verification.
*/
@interface MXIncomingSASTransaction : MXSASTransaction
@interface MXIncomingSASTransaction : MXDefaultSASTransaction

/**
Accept the device verification request.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
An handler on an outgoing SAS device verification.
*/
@interface MXOutgoingSASTransaction : MXSASTransaction
@interface MXOutgoingSASTransaction : MXDefaultSASTransaction

/**
Start the device verification process.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ typedef enum : NSUInteger
/**
An handler on an interactive device verification based on Short Authentication Code.
*/
@interface MXSASTransaction : MXKeyVerificationTransaction
@protocol MXSASTransaction <MXKeyVerificationTransaction>

@property (nonatomic) MXSASTransactionState state;

Expand All @@ -75,4 +75,10 @@ typedef enum : NSUInteger

@end

/**
Default implementation of SAS transaction used by the SDK
*/
@interface MXDefaultSASTransaction : MXDefaultKeyVerificationTransaction <MXSASTransaction>
@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,17 @@
static NSArray<MXEmojiRepresentation*> *kSasEmojis;


@implementation MXSASTransaction
@implementation MXDefaultSASTransaction

@synthesize state = _state;
@synthesize sasBytes = _sasBytes;

- (NSString *)sasDecimal
{
NSString *sasDecimal;
if (_sasBytes && [self.accepted.shortAuthenticationString containsObject:MXKeyVerificationSASModeDecimal])
{
sasDecimal = [[MXSASTransaction decimalRepresentationForSas:_sasBytes] componentsJoinedByString:@" "];
sasDecimal = [[MXDefaultSASTransaction decimalRepresentationForSas:_sasBytes] componentsJoinedByString:@" "];
}

return sasDecimal;
Expand All @@ -64,7 +67,7 @@ - (NSString *)sasDecimal
NSArray *sasEmoji;
if (_sasBytes && [self.accepted.shortAuthenticationString containsObject:MXKeyVerificationSASModeEmoji])
{
sasEmoji = [MXSASTransaction emojiRepresentationForSas:_sasBytes];
sasEmoji = [MXDefaultSASTransaction emojiRepresentationForSas:_sasBytes];
}

return sasEmoji;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ FOUNDATION_EXPORT NSArray<NSString*> *kKnownShortCodes;
/**
The `MXKeyVerificationTransaction` extension exposes internal operations.
*/
@interface MXSASTransaction ()
@interface MXDefaultSASTransaction ()

@property (nonatomic) OLMSAS *olmSAS;
@property (nonatomic, nullable) MXSASKeyVerificationStart *startContent;
Expand Down
Loading