IOSAD-181 Make async the default

IOSAD-181
Dirk Zimmermann 2020-09-03 16:02:12 +02:00
parent d4dc963e31
commit 284878149a
9 changed files with 738 additions and 1501 deletions

View File

@ -1,244 +0,0 @@
//
// PEPAsyncSession.h
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 17.07.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PEPEngineTypes.h"
#import "PEPTypes.h"
@class PEPMessage;
@class PEPIdentity;
@class PEPLanguage;
NS_ASSUME_NONNULL_BEGIN
@interface PEPAsyncSession : NSObject
/// You must call this method once before your process gets terminated to be able to gracefully shutdown.
/// You must not make any calls to PEPSession in between the last call to `cleanup()` and getting terminated.
///
/// Only for performance reasons: call this method only if you have to.
+ (void)cleanup;
- (void)decryptMessage:(PEPMessage *)message
flags:(PEPDecryptFlags)flags
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *dstMessage,
PEPStringList *keyList,
PEPRating rating,
PEPDecryptFlags flags))successCallback;
- (void)reEvaluateMessage:(PEPMessage *)message
xKeyList:(PEPStringList *_Nullable)xKeyList
originalRating:(PEPRating)originalRating
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback;
/// Encrypt a message with explicit encryption format.
- (void)encryptMessage:(PEPMessage *)message
extraKeys:(PEPStringList * _Nullable)extraKeys
encFormat:(PEPEncFormat)encFormat
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback;
/// Encrypt a message with the default encryption format.
- (void)encryptMessage:(PEPMessage *)message
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback;
/// Encrypt a message to an own identity.
- (void)encryptMessage:(PEPMessage *)message
forSelf:(PEPIdentity *)ownIdentity
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback;
/// Encrypt a message to a fingerprint.
- (void)encryptMessage:(PEPMessage *)message
toFpr:(NSString *)toFpr
encFormat:(PEPEncFormat)encFormat
flags:(PEPDecryptFlags)flags
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback;
- (void)outgoingRatingForMessage:(PEPMessage *)theMessage
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback;
- (void)ratingForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback;
- (void)trustwordsForFingerprint:(NSString *)fingerprint
languageID:(NSString *)languageID
shortened:(BOOL)shortened
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<NSString *> *trustwords))successCallback;
- (void)mySelf:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPIdentity *identity))successCallback;
- (void)updateIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPIdentity *identity))successCallback;
- (void)trustPersonalKey:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)keyMistrusted:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)keyResetTrust:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)enableSyncForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)disableSyncForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)queryKeySyncEnabledForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(BOOL enabled))successCallback;
- (void)importKey:(NSString *)keydata
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<PEPIdentity *> *identities))successCallback;
- (void)logTitle:(NSString *)title
entity:(NSString *)entity
description:(NSString * _Nullable)description
comment:(NSString * _Nullable)comment
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)getLog:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSString *log))successCallback;
- (void)getTrustwordsIdentity1:(PEPIdentity *)identity1
identity2:(PEPIdentity *)identity2
language:(NSString * _Nullable)language
full:(BOOL)full
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSString *trustwords))successCallback;
- (void)getTrustwordsFpr1:(NSString *)fpr1
fpr2:(NSString *)fpr2
language:(NSString * _Nullable)language
full:(BOOL)full
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSString *trustwords))successCallback;
- (void)languageList:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<PEPLanguage *> *languages))successCallback;
- (void)isPEPUser:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(BOOL enabled))successCallback;
- (void)setOwnKey:(PEPIdentity *)identity
fingerprint:(NSString *)fingerprint
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)deliverHandshakeResult:(PEPSyncHandshakeResult)result
identitiesSharing:(NSArray<PEPIdentity *> * _Nullable)identitiesSharing
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)trustOwnKeyIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)keyReset:(PEPIdentity *)identity
fingerprint:(NSString * _Nullable)fingerprint
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)leaveDeviceGroup:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
- (void)keyResetAllOwnKeys:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback;
// MARK: - Configuration
/// Wraps the engine's `config_passive_mode`.
/// @note That there's absolutely no error handling.
- (void)configurePassiveModeEnabled:(BOOL)enabled;
/// Add a passphrase for secret keys to the cache.
///
/// You can add as many passphrases to the cache as needed by calling this method.
/// Every passphrase is valid for 10 min (default, compile-time configurable),
/// after that it gets removed from memory. The maximum count of passphrases is 20.
/// Setting the 21st replaces the 1st.
/// On error, `NO` is returned and the (optional) parameter `error`
/// is set to the error that occurred.
/// On every engine call that returns PEPStatusPassphraseRequired, or PEPStatusWrongPassphrase,
/// the adapter will automatically repeat the call after setting the next cached passphrase
/// (using the engine's `config_passphrase`). The first attempet as always with an empty password.
/// This will be repeated until the call either succeeds, or until
/// the adapter runs out of usable passwords.
/// When the adapter runs out of passwords to try, PEPStatusWrongPassphrase will be thrown.
/// If the engine indicates PEPStatusPassphraseRequired, and there are no passwords,
/// the adapter will throw PEPStatusPassphraseRequired.
/// The passphrase can have a "maximum number of code points of 250", which is
/// approximated by checking the string length.
/// If the passphrase exceeds this limit, the adapter throws PEPAdapterErrorPassphraseTooLong
/// with a domain of PEPObjCAdapterErrorDomain.
/// @Throws PEPAdapterErrorPassphraseTooLong (with a domain of PEPObjCAdapterErrorDomain)
/// or PEPStatusOutOfMemory (with PEPObjCAdapterEngineStatusErrorDomain)
- (BOOL)configurePassphrase:(NSString * _Nonnull)passphrase
error:(NSError * _Nullable * _Nullable)error;
/// Sets a passphrase (with a maximum of 250 code points) for
/// (own) secret keys generated from now on.
///
/// For setting a passphrase, `enable` must be set to `YES`,
/// in which case the `passphrase` should contain an actual passphrase.
/// A `nil` `passphrase` with `enable` set to `YES` is undefined.
/// The passphrase can be unset by setting `enable` to `NO`
/// (with or without passphrase, this gets (assumedly)
/// ignored in this case, but has to be verified).
/// Uses the engine's `config_passphrase_for_new_keys`.
/// @Throws PEPAdapterErrorPassphraseTooLong (with a domain of PEPObjCAdapterErrorDomain)
/// or PEPStatusOutOfMemory (with PEPObjCAdapterEngineStatusErrorDomain)
/// @deprecated
- (BOOL)configurePassphraseForNewKeys:(NSString * _Nullable)passphrase
enable:(BOOL)enable error:(NSError * _Nullable * _Nullable)error
__deprecated;
// MARK: - Methods that can be executed syncronously
/// Converts a string like "cannot_decrypt" into its equivalent PEPRating_cannot_decrypt.
- (PEPRating)ratingFromString:(NSString * _Nonnull)string;
/// Converts a pEp rating like PEPRating_cannot_decrypt
/// into its equivalent string "cannot_decrypt".
- (NSString * _Nonnull)stringFromRating:(PEPRating)rating;
/// Wraps color_from_rating.
- (PEPColor)colorFromRating:(PEPRating)rating;
@end
NS_ASSUME_NONNULL_END

View File

@ -30,8 +30,8 @@
433DFBB824A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 433DFBB624A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m */; };
433DFBBC24A73AD400AB373B /* PEPSessionProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 433DFBBB24A73AD400AB373B /* PEPSessionProtocol.m */; };
434226811D4F60000083ED79 /* PepTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 434226801D4F60000083ED79 /* PepTests.m */; };
434707F624C210CA00E05485 /* PEPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 434707F424C210CA00E05485 /* PEPAsyncSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
434707F724C210CA00E05485 /* PEPAsyncSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 434707F524C210CA00E05485 /* PEPAsyncSession.m */; };
434707F624C210CA00E05485 /* PEPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 434707F424C210CA00E05485 /* PEPSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
434707F724C210CA00E05485 /* PEPSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 434707F524C210CA00E05485 /* PEPSession.m */; };
434707F924C30E9700E05485 /* PEPAsyncSessionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 434707F824C30E9700E05485 /* PEPAsyncSessionTest.m */; };
4349CD6F24AC73FC00A22A13 /* NSString+NormalizePassphrase.h in Headers */ = {isa = PBXBuildFile; fileRef = 4349CD6D24AC73FC00A22A13 /* NSString+NormalizePassphrase.h */; };
4349CD7024AC73FC00A22A13 /* NSString+NormalizePassphrase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4349CD6E24AC73FC00A22A13 /* NSString+NormalizePassphrase.m */; };
@ -39,7 +39,6 @@
43589EF724A4A3B70079BEA2 /* PEPPassphraseCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 43589EF524A4A3B70079BEA2 /* PEPPassphraseCache.h */; };
43589EF924A4A3B70079BEA2 /* PEPPassphraseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 43589EF624A4A3B70079BEA2 /* PEPPassphraseCache.m */; };
43589EFB24A4ACFC0079BEA2 /* PEPPassphraseCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 43589EFA24A4ACFC0079BEA2 /* PEPPassphraseCacheTest.m */; };
435C0C8C22291FFB0025C6B5 /* PEPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 15206CC51F8E078B003FF880 /* PEPSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
435C0C9922292C080025C6B5 /* PEPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 435796E11FB5E51A00395A9E /* PEPMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
435C0CA222292E7C0025C6B5 /* PEPTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 435C0CA022292E7C0025C6B5 /* PEPTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
435C0CAC222930340025C6B5 /* PEPConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 435C0CAA222930340025C6B5 /* PEPConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -58,7 +57,6 @@
435F5170222046C2006EB11F /* NSDictionary+Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = 43953B3420C91E2B001C7DDB /* NSDictionary+Debug.m */; };
435F5171222046C2006EB11F /* PEPCopyableThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 1508AEAE1F8792AC001D5230 /* PEPCopyableThread.m */; };
435F5172222046C2006EB11F /* PEPSessionProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 15206CA91F8BA183003FF880 /* PEPSessionProvider.m */; };
435F5173222046C2006EB11F /* PEPSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 15206CC61F8E078B003FF880 /* PEPSession.m */; };
435F5174222046C2006EB11F /* PEPIdentity.m in Sources */ = {isa = PBXBuildFile; fileRef = 433E28901FA741DE00E359B3 /* PEPIdentity.m */; };
435F5175222046C2006EB11F /* PEPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 435796E21FB5E51A00395A9E /* PEPMessage.m */; };
435F5176222046C2006EB11F /* PEPAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 439D91A4208479EE003F6AC2 /* PEPAttachment.m */; };
@ -146,8 +144,6 @@
1508AEAE1F8792AC001D5230 /* PEPCopyableThread.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPCopyableThread.m; sourceTree = "<group>"; };
15206CA81F8BA183003FF880 /* PEPSessionProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPSessionProvider.h; sourceTree = "<group>"; };
15206CA91F8BA183003FF880 /* PEPSessionProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSessionProvider.m; sourceTree = "<group>"; };
15206CC51F8E078B003FF880 /* PEPSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPSession.h; sourceTree = "<group>"; };
15206CC61F8E078B003FF880 /* PEPSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSession.m; sourceTree = "<group>"; };
152A9C462010F50400F962ED /* PEPInternalSessionTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPInternalSessionTest.m; sourceTree = "<group>"; };
152D58EE201B6DB200036219 /* PEPMessageUtilTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPMessageUtilTest.m; sourceTree = "<group>"; };
155674EC22B82D710097930C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
@ -194,8 +190,8 @@
433DFBBB24A73AD400AB373B /* PEPSessionProtocol.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSessionProtocol.m; sourceTree = "<group>"; };
433E28901FA741DE00E359B3 /* PEPIdentity.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPIdentity.m; sourceTree = "<group>"; };
434226801D4F60000083ED79 /* PepTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PepTests.m; sourceTree = "<group>"; };
434707F424C210CA00E05485 /* PEPAsyncSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPAsyncSession.h; sourceTree = "<group>"; };
434707F524C210CA00E05485 /* PEPAsyncSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPAsyncSession.m; sourceTree = "<group>"; };
434707F424C210CA00E05485 /* PEPSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPSession.h; sourceTree = "<group>"; };
434707F524C210CA00E05485 /* PEPSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSession.m; sourceTree = "<group>"; };
434707F824C30E9700E05485 /* PEPAsyncSessionTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPAsyncSessionTest.m; sourceTree = "<group>"; };
4349CD6D24AC73FC00A22A13 /* NSString+NormalizePassphrase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+NormalizePassphrase.h"; sourceTree = "<group>"; };
4349CD6E24AC73FC00A22A13 /* NSString+NormalizePassphrase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+NormalizePassphrase.m"; sourceTree = "<group>"; };
@ -384,7 +380,6 @@
1508AEAE1F8792AC001D5230 /* PEPCopyableThread.m */,
15206CA81F8BA183003FF880 /* PEPSessionProvider.h */,
15206CA91F8BA183003FF880 /* PEPSessionProvider.m */,
15206CC61F8E078B003FF880 /* PEPSession.m */,
433E28901FA741DE00E359B3 /* PEPIdentity.m */,
435796E21FB5E51A00395A9E /* PEPMessage.m */,
439D91A4208479EE003F6AC2 /* PEPAttachment.m */,
@ -412,7 +407,7 @@
433DFBB624A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m */,
4349CD6D24AC73FC00A22A13 /* NSString+NormalizePassphrase.h */,
4349CD6E24AC73FC00A22A13 /* NSString+NormalizePassphrase.m */,
434707F524C210CA00E05485 /* PEPAsyncSession.m */,
434707F524C210CA00E05485 /* PEPSession.m */,
436C9A3124DC48B600007A3D /* PEPPassphraseUtil.h */,
436C9A3224DC48B600007A3D /* PEPPassphraseUtil.m */,
);
@ -431,7 +426,7 @@
43E3985C221D7E56008E7983 /* PEPObjCAdapterFramework */ = {
isa = PBXGroup;
children = (
434707F424C210CA00E05485 /* PEPAsyncSession.h */,
434707F424C210CA00E05485 /* PEPSession.h */,
430CD9BA2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h */,
430CD9B52292ADAC00AAC37F /* PEPSendMessageDelegate.h */,
430CD9B02292AC4900AAC37F /* PEPSync.h */,
@ -442,7 +437,6 @@
435C0CAA222930340025C6B5 /* PEPConstants.h */,
435C0CAB222930340025C6B5 /* PEPConstants.m */,
435796E11FB5E51A00395A9E /* PEPMessage.h */,
15206CC51F8E078B003FF880 /* PEPSession.h */,
43209B2F1ECC2ACD007E7E2E /* PEPObjCAdapter.h */,
435C0CA022292E7C0025C6B5 /* PEPTypes.h */,
43FF2ECC2226AE7E000D9567 /* PEPEngineTypes.h */,
@ -502,10 +496,9 @@
43AD0E3022E99ECE00D46F56 /* PEPInternalConstants.h in Headers */,
430CD9B62292ADAC00AAC37F /* PEPSendMessageDelegate.h in Headers */,
43E3985F221D7E56008E7983 /* PEPObjCAdapterFramework.h in Headers */,
435C0C8C22291FFB0025C6B5 /* PEPSession.h in Headers */,
435C0CAC222930340025C6B5 /* PEPConstants.h in Headers */,
4349CD6F24AC73FC00A22A13 /* NSString+NormalizePassphrase.h in Headers */,
434707F624C210CA00E05485 /* PEPAsyncSession.h in Headers */,
434707F624C210CA00E05485 /* PEPSession.h in Headers */,
43FF2ED12226AFE9000D9567 /* PEPEngineTypes.h in Headers */,
430CD9B12292AC4900AAC37F /* PEPSync.h in Headers */,
435F519022204A67006EB11F /* PEPSessionProtocol.h in Headers */,
@ -696,7 +689,6 @@
435F517B222046C2006EB11F /* NSMutableDictionary+PEP.m in Sources */,
435F516A222046C2006EB11F /* PEPLanguage.m in Sources */,
435F516F222046C2006EB11F /* NSDictionary+CommType.m in Sources */,
435F5173222046C2006EB11F /* PEPSession.m in Sources */,
435F5168222046C2006EB11F /* NSArray+Extension.m in Sources */,
435F516E222046C2006EB11F /* PEPInternalSession.m in Sources */,
435F5172222046C2006EB11F /* PEPSessionProvider.m in Sources */,
@ -709,7 +701,7 @@
435F5171222046C2006EB11F /* PEPCopyableThread.m in Sources */,
43589EF924A4A3B70079BEA2 /* PEPPassphraseCache.m in Sources */,
435F5175222046C2006EB11F /* PEPMessage.m in Sources */,
434707F724C210CA00E05485 /* PEPAsyncSession.m in Sources */,
434707F724C210CA00E05485 /* PEPSession.m in Sources */,
435F5174222046C2006EB11F /* PEPIdentity.m in Sources */,
435F517A222046C2006EB11F /* NSObject+Extension.m in Sources */,
435F517D222046C2006EB11F /* PEPSync.m in Sources */,

View File

@ -1,661 +0,0 @@
//
// PEPAsyncSession.m
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 17.07.20.
// Copyright © 2020 pp. All rights reserved.
//
#import "PEPAsyncSession.h"
#import "PEPMessage.h"
#import "PEPEngineTypes.h"
#import "PEPInternalSession.h"
#import "NSNumber+PEPRating.h"
#import "PEPIdentity.h"
#import "PEPSessionProvider.h"
#import "PEPInternalConstants.h"
#import "NSError+PEP+Internal.h"
static dispatch_queue_t queue;
@interface PEPAsyncSession ()
@end
@implementation PEPAsyncSession
+ (void)initialize
{
if (self == [PEPAsyncSession class]) {
dispatch_queue_attr_t attr = DISPATCH_QUEUE_SERIAL;
attr = dispatch_queue_attr_make_with_qos_class(attr, QOS_CLASS_USER_INITIATED, -1);
queue = dispatch_queue_create("PEPAsyncSession.queue", attr);
}
}
+ (void)cleanup
{
[PEPSessionProvider cleanup];
}
- (void)decryptMessage:(PEPMessage *)message
flags:(PEPDecryptFlags)flags
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *dstMessage,
PEPStringList *keyList,
PEPRating rating,
PEPDecryptFlags flags))successCallback
{
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
PEPDecryptFlags theFlags = flags;
PEPRating theRating;
PEPStringList *theExtraKeys = extraKeys;
PEPStatus status;
NSError *error = nil;
PEPMessage *newMessage = [[PEPSessionProvider session] decryptMessage:theMessage
flags:&theFlags
rating:&theRating
extraKeys:&theExtraKeys
status:&status
error:&error];
if (newMessage) {
successCallback(theMessage, newMessage, theExtraKeys, theRating, theFlags);
} else {
errorCallback(error);
}
});
}
- (void)reEvaluateMessage:(PEPMessage *)message
xKeyList:(PEPStringList *_Nullable)xKeyList
originalRating:(PEPRating)originalRating
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback
{
dispatch_async(queue, ^{
PEPRating theRating = originalRating;
NSError *error = nil;
BOOL result = [[PEPSessionProvider session]
reEvaluateMessage:message
xKeyList:xKeyList
rating:&theRating
status:nil
error:&error];
if (result) {
successCallback(theRating);
} else {
errorCallback(error);
}
});
}
- (void)encryptMessage:(PEPMessage *)message
extraKeys:(PEPStringList * _Nullable)extraKeys
encFormat:(PEPEncFormat)encFormat
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
extraKeys:extraKeys
encFormat:encFormat
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (void)encryptMessage:(PEPMessage *)message
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
extraKeys:extraKeys
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (void)encryptMessage:(PEPMessage *)message
forSelf:(PEPIdentity *)ownIdentity
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
forSelf:ownIdentity
extraKeys:extraKeys
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (void)encryptMessage:(PEPMessage *)message
toFpr:(NSString *)toFpr
encFormat:(PEPEncFormat)encFormat
flags:(PEPDecryptFlags)flags
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
toFpr:toFpr
encFormat:encFormat
flags:flags
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (void)outgoingRatingForMessage:(PEPMessage *)theMessage
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSNumber *ratingNum = [[PEPSessionProvider session]
outgoingRatingForMessage:theMessage
error:&error];
if (ratingNum) {
successCallback(ratingNum.pEpRating);
} else {
errorCallback(error);
}
});
}
- (void)ratingForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSNumber *ratingNum = [[PEPSessionProvider session]
ratingForIdentity:identity
error:&error];
if (ratingNum) {
successCallback(ratingNum.pEpRating);
} else {
errorCallback(error);
}
});
}
- (void)trustwordsForFingerprint:(NSString *)fingerprint
languageID:(NSString *)languageID
shortened:(BOOL)shortened
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<NSString *> *trustwords))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSArray *trustwords = [[PEPSessionProvider session]
trustwordsForFingerprint:fingerprint
languageID:languageID
shortened:shortened
error:&error];
if (!error) {
successCallback(trustwords);
} else {
errorCallback(error);
}
});
}
- (void)mySelf:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPIdentity *identity))successCallback
{
__block PEPIdentity *theIdentity = [[PEPIdentity alloc] initWithIdentity:identity];
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] mySelf:theIdentity error:&error];
if (success) {
successCallback(theIdentity);
} else {
errorCallback(error);
}
});
}
- (void)updateIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPIdentity *identity))successCallback
{
__block PEPIdentity *theIdentity = [[PEPIdentity alloc] initWithIdentity:identity];
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] updateIdentity:theIdentity error:&error];
if (success) {
successCallback(theIdentity);
} else {
errorCallback(error);
}
});
}
- (void)trustPersonalKey:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] trustPersonalKey:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)keyMistrusted:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] keyMistrusted:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)keyResetTrust:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] keyResetTrust:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)enableSyncForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] enableSyncForIdentity:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)disableSyncForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] disableSyncForIdentity:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)queryKeySyncEnabledForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(BOOL enabled))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSNumber *boolNum = [[PEPSessionProvider session]
queryKeySyncEnabledForIdentity:identity
error:&error];
if (boolNum) {
successCallback(boolNum.boolValue);
} else {
errorCallback(error);
}
});
}
- (void)importKey:(NSString *)keydata
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<PEPIdentity *> *identities))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSArray *identities = [[PEPSessionProvider session] importKey:keydata error:&error];
if (identities) {
successCallback(identities);
} else {
errorCallback(error);
}
});
}
- (void)logTitle:(NSString *)title
entity:(NSString *)entity
description:(NSString * _Nullable)description
comment:(NSString * _Nullable)comment
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] logTitle:title
entity:entity
description:description
comment:comment
error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)getLog:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSString *log))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSString *log = [[PEPSessionProvider session] getLogWithError:&error];
if (log) {
successCallback(log);
} else {
errorCallback(error);
}
});
}
- (void)getTrustwordsIdentity1:(PEPIdentity *)identity1
identity2:(PEPIdentity *)identity2
language:(NSString * _Nullable)language
full:(BOOL)full
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSString *trustwords))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSString *trustwords = [[PEPSessionProvider session] getTrustwordsIdentity1:identity1
identity2:identity2
language:language
full:full
error:&error];
if (trustwords) {
successCallback(trustwords);
} else {
errorCallback(error);
}
});
}
- (void)getTrustwordsFpr1:(NSString *)fpr1
fpr2:(NSString *)fpr2
language:(NSString * _Nullable)language
full:(BOOL)full
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSString *trustwords))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSString *trustwords = [[PEPSessionProvider session] getTrustwordsFpr1:fpr1
fpr2:fpr2
language:language
full:full
error:&error];
if (trustwords) {
successCallback(trustwords);
} else {
errorCallback(error);
}
});
}
- (void)languageList:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<PEPLanguage *> *languages))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSArray *languages = [[PEPSessionProvider session] languageListWithError:&error];
if (languages) {
successCallback(languages);
} else {
errorCallback(error);
}
});
}
- (void)isPEPUser:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(BOOL enabled))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
NSNumber *ispEpUserNum = [[PEPSessionProvider session] isPEPUser:identity error:&error];
if (ispEpUserNum) {
successCallback(ispEpUserNum.boolValue);
} else {
errorCallback(error);
}
});
}
- (void)setOwnKey:(PEPIdentity *)identity
fingerprint:(NSString *)fingerprint
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] setOwnKey:identity
fingerprint:fingerprint
error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)deliverHandshakeResult:(PEPSyncHandshakeResult)result
identitiesSharing:(NSArray<PEPIdentity *> * _Nullable)identitiesSharing
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] deliverHandshakeResult:result
identitiesSharing:identitiesSharing
error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)trustOwnKeyIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] trustOwnKeyIdentity:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)keyReset:(PEPIdentity *)identity
fingerprint:(NSString * _Nullable)fingerprint
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] keyReset:identity
fingerprint:fingerprint
error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)leaveDeviceGroup:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] leaveDeviceGroup:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
- (void)keyResetAllOwnKeys:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] keyResetAllOwnKeysError:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}
// MARK: - Configuration
- (void)configurePassiveModeEnabled:(BOOL)enabled
{
return [[PEPSessionProvider session] configurePassiveModeEnabled:enabled];
}
- (BOOL)configurePassphrase:(NSString * _Nonnull)passphrase
error:(NSError * _Nullable __autoreleasing * _Nullable)error {
PEPInternalSession *session = [PEPSessionProvider session];
if (session == nil) {
if (error) {
*error = [NSError errorWithPEPStatusInternal:PEP_UNKNOWN_ERROR];
}
return NO;
}
return [session configurePassphrase:passphrase error:error];
}
- (BOOL)configurePassphraseForNewKeys:(NSString * _Nullable)passphrase
enable:(BOOL)enable
error:(NSError * _Nullable __autoreleasing * _Nullable)error {
PEPInternalSession *session = [PEPSessionProvider session];
if (session == nil) {
if (error) {
*error = [NSError errorWithPEPStatusInternal:PEP_UNKNOWN_ERROR];
}
return NO;
}
return [session configurePassphraseForNewKeys:passphrase enable:enable error:error];
}
// MARK: - Methods that can be executed syncronously
- (PEPRating)ratingFromString:(NSString * _Nonnull)string
{
PEPInternalSession *session = [PEPSessionProvider session];
if (session == nil) {
return PEPRatingUndefined;
}
return [session ratingFromString:string];
}
- (NSString * _Nonnull)stringFromRating:(PEPRating)rating
{
PEPInternalSession *session = [PEPSessionProvider session];
if (session == nil) {
return kUndefined;
}
return [session stringFromRating:rating];
}
- (PEPColor)colorFromRating:(PEPRating)rating
{
PEPInternalSession *session = [PEPSessionProvider session];
if (session == nil) {
return PEPColorNoColor;
}
return [session colorFromRating:rating];
}
@end

View File

@ -1,306 +1,633 @@
//
// PEPSession.m
// pEpObjCAdapter
// PEPObjCAdapterFramework
//
// Created by Andreas Buff on 11.10.17.
// Copyright © 2017 pp. All rights reserved.
// Created by Dirk Zimmermann on 17.07.20.
// Copyright © 2020 pp. All rights reserved.
//
#import "PEPSession.h"
#import "PEPMessage.h"
#import "PEPEngineTypes.h"
#import "PEPInternalSession.h"
#import "PEPSessionProvider.h"
#import "PEPIdentity.h"
#import "PEPMessageUtil.h"
#import "NSNumber+PEPRating.h"
#import "NSError+PEP+Internal.h"
#import "PEPIdentity.h"
#import "PEPSessionProvider.h"
#import "PEPInternalConstants.h"
#import "NSError+PEP+Internal.h"
static dispatch_queue_t queue;
@implementation PEPSession
/**
Macro for causing a return if the given session is nil, optionally setting an error.
@param session A session object that will be checked for being nil or not.
@param error If non-nil, will receive PEP_UNKNOWN_ERROR when the session is nil.
@param what The value to return in case of an error (session is nil).
*/
#define RETURN_ON_ERROR(session, error, what)\
if (session == nil) { \
if (error != nil) { \
*error = [NSError errorWithPEPStatusInternal:PEP_UNKNOWN_ERROR]; \
return what; \
} \
}
#pragma mark - Public API
+ (void)initialize
{
if (self == [PEPSession class]) {
dispatch_queue_attr_t attr = DISPATCH_QUEUE_SERIAL;
attr = dispatch_queue_attr_make_with_qos_class(attr, QOS_CLASS_USER_INITIATED, -1);
queue = dispatch_queue_create("PEPAsyncSession.queue", attr);
}
}
+ (void)cleanup
{
[PEPSessionProvider cleanup];
}
- (PEPMessage * _Nullable)decryptMessage:(PEPMessage * _Nonnull)message
flags:(PEPDecryptFlags * _Nullable)flags
rating:(PEPRating * _Nullable)rating
extraKeys:(PEPStringList * _Nullable * _Nullable)extraKeys
status:(PEPStatus * _Nullable)status
error:(NSError * _Nullable * _Nullable)error
- (void)decryptMessage:(PEPMessage *)message
flags:(PEPDecryptFlags)flags
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *dstMessage,
PEPStringList *keyList,
PEPRating rating,
PEPDecryptFlags flags))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session
decryptMessage:message
flags:flags
rating:rating
extraKeys:extraKeys
status:status
error:error];
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
PEPDecryptFlags theFlags = flags;
PEPRating theRating;
PEPStringList *theExtraKeys = extraKeys;
PEPStatus status;
NSError *error = nil;
PEPMessage *newMessage = [[PEPSessionProvider session] decryptMessage:theMessage
flags:&theFlags
rating:&theRating
extraKeys:&theExtraKeys
status:&status
error:&error];
if (newMessage) {
successCallback(theMessage, newMessage, theExtraKeys, theRating, theFlags);
} else {
errorCallback(error);
}
});
}
- (BOOL)reEvaluateMessage:(PEPMessage * _Nonnull)message
xKeyList:(PEPStringList * _Nullable)xKeyList
rating:(PEPRating * _Nonnull)rating
status:(PEPStatus * _Nullable)status
error:(NSError * _Nullable * _Nullable)error
- (void)reEvaluateMessage:(PEPMessage *)message
xKeyList:(PEPStringList *_Nullable)xKeyList
originalRating:(PEPRating)originalRating
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, NO);
return [session reEvaluateMessage:message
xKeyList:xKeyList
rating:rating
status:status
error:error];
dispatch_async(queue, ^{
PEPRating theRating = originalRating;
NSError *error = nil;
BOOL result = [[PEPSessionProvider session]
reEvaluateMessage:message
xKeyList:xKeyList
rating:&theRating
status:nil
error:&error];
if (result) {
successCallback(theRating);
} else {
errorCallback(error);
}
});
}
- (PEPMessage * _Nullable)encryptMessage:(PEPMessage * _Nonnull)message
extraKeys:(PEPStringList * _Nullable)extraKeys
encFormat:(PEPEncFormat)encFormat
status:(PEPStatus * _Nullable)status
error:(NSError * _Nullable * _Nullable)error
- (void)encryptMessage:(PEPMessage *)message
extraKeys:(PEPStringList * _Nullable)extraKeys
encFormat:(PEPEncFormat)encFormat
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session
encryptMessage:message
extraKeys:extraKeys
encFormat:encFormat
status:status
error:error];
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
extraKeys:extraKeys
encFormat:encFormat
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (PEPMessage * _Nullable)encryptMessage:(PEPMessage * _Nonnull)message
extraKeys:(PEPStringList * _Nullable)extraKeys
status:(PEPStatus * _Nullable)status
error:(NSError * _Nullable * _Nullable)error
- (void)encryptMessage:(PEPMessage *)message
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session encryptMessage:message extraKeys:extraKeys status:status error:error];
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
extraKeys:extraKeys
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (PEPMessage * _Nullable)encryptMessage:(PEPMessage * _Nonnull)message
forSelf:(PEPIdentity * _Nonnull)ownIdentity
extraKeys:(PEPStringList * _Nullable)extraKeys
status:(PEPStatus * _Nullable)status
error:(NSError * _Nullable * _Nullable)error
- (void)encryptMessage:(PEPMessage *)message
forSelf:(PEPIdentity *)ownIdentity
extraKeys:(PEPStringList * _Nullable)extraKeys
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session
encryptMessage:message
forSelf:ownIdentity
extraKeys:extraKeys
status:status
error:error];
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
forSelf:ownIdentity
extraKeys:extraKeys
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (PEPMessage * _Nullable)encryptMessage:(PEPMessage * _Nonnull)message
toFpr:(NSString * _Nonnull)toFpr
encFormat:(PEPEncFormat)encFormat
flags:(PEPDecryptFlags)flags
status:(PEPStatus * _Nullable)status
error:(NSError * _Nullable * _Nullable)error
- (void)encryptMessage:(PEPMessage *)message
toFpr:(NSString *)toFpr
encFormat:(PEPEncFormat)encFormat
flags:(PEPDecryptFlags)flags
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPMessage *srcMessage,
PEPMessage *destMessage))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session
encryptMessage:message
toFpr:toFpr
encFormat:encFormat
flags:flags
status:status
error:error];
dispatch_async(queue, ^{
PEPMessage *theMessage = [[PEPMessage alloc] initWithMessage:message];
NSError *error = nil;
PEPMessage *destMessage = [[PEPSessionProvider session]
encryptMessage:theMessage
toFpr:toFpr
encFormat:encFormat
flags:flags
status:nil
error:&error];
if (destMessage) {
successCallback(theMessage, destMessage);
} else {
errorCallback(error);
}
});
}
- (NSNumber * _Nullable)outgoingRatingForMessage:(PEPMessage * _Nonnull)theMessage
error:(NSError * _Nullable * _Nullable)error
- (void)outgoingRatingForMessage:(PEPMessage *)theMessage
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session outgoingRatingForMessage:theMessage error:error];
dispatch_async(queue, ^{
NSError *error = nil;
NSNumber *ratingNum = [[PEPSessionProvider session]
outgoingRatingForMessage:theMessage
error:&error];
if (ratingNum) {
successCallback(ratingNum.pEpRating);
} else {
errorCallback(error);
}
});
}
- (NSNumber * _Nullable)outgoingRatingPreviewForMessage:(PEPMessage * _Nonnull)theMessage
error:(NSError * _Nullable * _Nullable)error
- (void)ratingForIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPRating rating))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session outgoingRatingPreviewForMessage:theMessage error:error];
dispatch_async(queue, ^{
NSError *error = nil;
NSNumber *ratingNum = [[PEPSessionProvider session]
ratingForIdentity:identity
error:&error];
if (ratingNum) {
successCallback(ratingNum.pEpRating);
} else {
errorCallback(error);
}
});
}
- (NSNumber * _Nullable)ratingForIdentity:(PEPIdentity * _Nonnull)identity
error:(NSError * _Nullable * _Nullable)error
- (void)trustwordsForFingerprint:(NSString *)fingerprint
languageID:(NSString *)languageID
shortened:(BOOL)shortened
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(NSArray<NSString *> *trustwords))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session ratingForIdentity:identity error:error];
dispatch_async(queue, ^{
NSError *error = nil;
NSArray *trustwords = [[PEPSessionProvider session]
trustwordsForFingerprint:fingerprint
languageID:languageID
shortened:shortened
error:&error];
if (!error) {
successCallback(trustwords);
} else {
errorCallback(error);
}
});
}
- (NSArray * _Nullable)trustwordsForFingerprint:(NSString * _Nonnull)fingerprint
languageID:(NSString * _Nonnull)languageID
shortened:(BOOL)shortened
error:(NSError * _Nullable * _Nullable)error
- (void)mySelf:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPIdentity *identity))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, nil);
return [session
trustwordsForFingerprint:fingerprint
languageID:languageID
shortened:shortened
error:error];
__block PEPIdentity *theIdentity = [[PEPIdentity alloc] initWithIdentity:identity];
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] mySelf:theIdentity error:&error];
if (success) {
successCallback(theIdentity);
} else {
errorCallback(error);
}
});
}
- (BOOL)mySelf:(PEPIdentity * _Nonnull)identity
error:(NSError * _Nullable * _Nullable)error {
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, NO);
return [session mySelf:identity error:error];
}
- (BOOL)updateIdentity:(PEPIdentity * _Nonnull)identity
error:(NSError * _Nullable * _Nullable)error
- (void)updateIdentity:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(PEPIdentity *identity))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, NO);
return [session updateIdentity:identity error:error];
__block PEPIdentity *theIdentity = [[PEPIdentity alloc] initWithIdentity:identity];
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] updateIdentity:theIdentity error:&error];
if (success) {
successCallback(theIdentity);
} else {
errorCallback(error);
}
});
}
- (BOOL)trustPersonalKey:(PEPIdentity * _Nonnull)identity
error:(NSError * _Nullable * _Nullable)error
- (void)trustPersonalKey:(PEPIdentity *)identity
errorCallback:(void (^)(NSError *error))errorCallback
successCallback:(void (^)(void))successCallback
{
PEPInternalSession *session = [PEPSessionProvider session];
RETURN_ON_ERROR(session, error, NO);
return [session trustPersonalKey:identity error:error];
dispatch_async(queue, ^{
NSError *error = nil;
BOOL success = [[PEPSessionProvider session] trustPersonalKey:identity error:&error];
if (success) {
successCallback();
} else {
errorCallback(error);
}
});
}