merge default

IOSAD-12
Dirk Zimmermann 3 years ago
commit 017b462e20

@ -0,0 +1,58 @@
//
// PEPPassphraseProviderProtocol.h
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 08.07.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// Delegate methods that an app can utilize to provide passphrases to the adapter after
/// asking the user.
///
/// If this delegate (passphrase provider) exists (see `+ [PEPObjCAdapter passphraseProvider]`),
/// then any supported engine call that returns the engine equivalent of
/// PEPStatusPassphraseRequired or PEPStatusWrongPassphrase
/// leads to an invocation of the delegate, which then can indicate the user's respone
/// via the given callback.
///
/// If no passphrase provider exists, the error status is thrown directly to
/// the caller.
typedef void (^PEPPassphraseProviderCallback)(NSString * _Nullable passphrase);
@protocol PEPPassphraseProviderProtocol <NSObject>
/// Called by the adapter when the engine signals PEPStatusPassphraseRequired.
///
/// See `PEPPassphraseProviderProtocol` for a general description.
///
/// @param completion Callback that either retries the engine call that lead
/// to the adapter calling into the PEPPassphraseProviderProtocol delegate,
/// or, if the given passphrase is nil, return the error to the caller.
- (void)passphraseRequired:(PEPPassphraseProviderCallback)completion;
/// Called by the adapter when the engine signals PEPStatusWrongPassphrase.
///
/// See `PEPPassphraseProviderProtocol` for a general description.
///
/// @param completion Callback that either retries the engine call that lead
/// to the adapter calling into the PEPPassphraseProviderProtocol delegate,
/// or, if the given passphrase is nil, return the error to the caller.
- (void)wrongPassphrase:(PEPPassphraseProviderCallback)completion;
/// Signals that the passphrase indicated by the callback in one of the calls of
/// this delegate was too long and cannot be used.
///
/// See `PEPPassphraseProviderProtocol` for a general description.
///
/// @param completion Callback that either retries the engine call that lead
/// to the adapter calling into the PEPPassphraseProviderProtocol delegate,
/// or, if the given passphrase is nil, return the error to the caller.
- (void)passphraseTooLong:(PEPPassphraseProviderCallback)completion;
@end
NS_ASSUME_NONNULL_END

@ -7,10 +7,11 @@
objects = {
/* Begin PBXBuildFile section */
152A9C472010F50400F962ED /* PEPSessionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 152A9C462010F50400F962ED /* PEPSessionTest.m */; };
152D58EF201B6DB200036219 /* PEPMessageUtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 152D58EE201B6DB200036219 /* PEPMessageUtilTest.m */; };
152A9C472010F50400F962ED /* PEPInternalSessionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 152A9C462010F50400F962ED /* PEPInternalSessionTest.m */; };
155674ED22B82D710097930C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 155674EC22B82D710097930C /* libz.dylib */; };
15D3D761200F61BB00A0DA20 /* PEPSessionProviderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D3D760200F61BB00A0DA20 /* PEPSessionProviderTest.m */; };
3A68CB28252E244900F1B71C /* pEp4iosIntern.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A68CB27252E244900F1B71C /* pEp4iosIntern.framework */; };
43062BAD24EEC83400489258 /* PEPIdentity+isPEPUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 43062BAC24EEC83400489258 /* PEPIdentity+isPEPUser.m */; };
430CD9B12292AC4900AAC37F /* PEPSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 430CD9B02292AC4900AAC37F /* PEPSync.h */; settings = {ATTRIBUTES = (Public, ); }; };
430CD9B62292ADAC00AAC37F /* PEPSendMessageDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 430CD9B52292ADAC00AAC37F /* PEPSendMessageDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
430CD9BB2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 430CD9BA2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -23,8 +24,21 @@
432FA2D81C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_sec.asc in Resources */ = {isa = PBXBuildFile; fileRef = 432FA2D61C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_sec.asc */; };
4331CE94229C2AAF00DDDC65 /* PEPSizeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4331CE93229C2AAF00DDDC65 /* PEPSizeTest.m */; };
4336853F203D5CE60069A451 /* PEPTestUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D3D77C2010DDC500A0DA20 /* PEPTestUtils.m */; };
433DFBAC24A5E04000AB373B /* PEPPassphraseCacheEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 433DFBAA24A5E04000AB373B /* PEPPassphraseCacheEntry.h */; };
433DFBAD24A5E04000AB373B /* PEPPassphraseCacheEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 433DFBAB24A5E04000AB373B /* PEPPassphraseCacheEntry.m */; };
433DFBB724A61D4B00AB373B /* PEPInternalSession+PassphraseCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 433DFBB524A61D4B00AB373B /* PEPInternalSession+PassphraseCache.h */; };
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 */; };
435C0C8C22291FFB0025C6B5 /* PEPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 15206CC51F8E078B003FF880 /* PEPSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
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 /* PEPSessionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 434707F824C30E9700E05485 /* PEPSessionTest.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 */; };
4349CD7924ADDB8800A22A13 /* PEPPassphraseCache+Reset.m in Sources */ = {isa = PBXBuildFile; fileRef = 4349CD7824ADDB8800A22A13 /* PEPPassphraseCache+Reset.m */; };
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 */; };
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, ); }; };
@ -32,18 +46,14 @@
435C0CBB2229380E0025C6B5 /* NSNumber+PEPRating.h in Headers */ = {isa = PBXBuildFile; fileRef = 435665CA2080A6CB00EC5B10 /* NSNumber+PEPRating.h */; settings = {ATTRIBUTES = (Public, ); }; };
435C0CD922296B660025C6B5 /* PEPAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 439D91A3208479EE003F6AC2 /* PEPAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; };
435F5164222045FB006EB11F /* PEPIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = 435F5163222045FB006EB11F /* PEPIdentity.h */; settings = {ATTRIBUTES = (Public, ); }; };
435F5168222046C2006EB11F /* NSArray+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B271ECC2ACD007E7E2E /* NSArray+Extension.m */; };
435F5168222046C2006EB11F /* NSArray+Take.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B271ECC2ACD007E7E2E /* NSArray+Take.m */; };
435F5169222046C2006EB11F /* PEPCSVScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B291ECC2ACD007E7E2E /* PEPCSVScanner.m */; };
435F516A222046C2006EB11F /* PEPLanguage.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B2B1ECC2ACD007E7E2E /* PEPLanguage.m */; };
435F516B222046C2006EB11F /* PEPMessageUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B2D1ECC2ACD007E7E2E /* PEPMessageUtil.m */; };
435F516C222046C2006EB11F /* PEPObjCAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B301ECC2ACD007E7E2E /* PEPObjCAdapter.m */; };
435F516D222046C2006EB11F /* PEPQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B321ECC2ACD007E7E2E /* PEPQueue.m */; };
435F516E222046C2006EB11F /* PEPInternalSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 43209B351ECC2ACD007E7E2E /* PEPInternalSession.m */; };
435F516F222046C2006EB11F /* NSDictionary+CommType.m in Sources */ = {isa = PBXBuildFile; fileRef = 43D27DE51F5DA7B700795687 /* NSDictionary+CommType.m */; };
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 */; };
@ -51,23 +61,32 @@
435F5178222046C2006EB11F /* PEPAutoPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 434ED6D5207E27B8000A7590 /* PEPAutoPointer.m */; };
435F5179222046C2006EB11F /* NSNumber+PEPRating.m in Sources */ = {isa = PBXBuildFile; fileRef = 435665CB2080A6CB00EC5B10 /* NSNumber+PEPRating.m */; };
435F517A222046C2006EB11F /* NSObject+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 439393E5208F375800EB1DBD /* NSObject+Extension.m */; };
435F517B222046C2006EB11F /* NSMutableDictionary+PEP.m in Sources */ = {isa = PBXBuildFile; fileRef = 439393F7208F5B5E00EB1DBD /* NSMutableDictionary+PEP.m */; };
435F517D222046C2006EB11F /* PEPSync.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F73BE92166248E00AB4524 /* PEPSync.m */; };
435F519022204A67006EB11F /* PEPSessionProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 435F518F22204A67006EB11F /* PEPSessionProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
4360AA0E2227F22900E62E5A /* PEPObjCAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 43209B2F1ECC2ACD007E7E2E /* PEPObjCAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; };
43676B661C57EA1A00233933 /* B623F674_sec.asc in Resources */ = {isa = PBXBuildFile; fileRef = 43676B641C57EA1A00233933 /* B623F674_sec.asc */; };
436C9A3E24DC532600007A3D /* PEPPassphraseUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 436C9A3224DC48B600007A3D /* PEPPassphraseUtil.m */; };
436E916E24B65805000296FF /* PEPPassphraseProviderProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 436E916D24B65805000296FF /* PEPPassphraseProviderProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
436E917224B714A2000296FF /* Rick Deckard (43F270EC) Secret.asc in Resources */ = {isa = PBXBuildFile; fileRef = 436E917124B714A1000296FF /* Rick Deckard (43F270EC) Secret.asc */; };
436E917724B71E12000296FF /* PEPPassphraseProviderMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 436E917624B71E12000296FF /* PEPPassphraseProviderMock.m */; };
43753CFB222D4911002EE98B /* PEPLanguage.h in Headers */ = {isa = PBXBuildFile; fileRef = 43209B2A1ECC2ACD007E7E2E /* PEPLanguage.h */; settings = {ATTRIBUTES = (Public, ); }; };
437BEA9122328E570051E3A1 /* pEpTrustWords.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 64AE6B211BE15E3A000867E4 /* pEpTrustWords.bundle */; };
4396CEB82187196600FDD398 /* PEPSessionTestNotifyHandshakeDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4396CEB62187190F00FDD398 /* PEPSessionTestNotifyHandshakeDelegate.m */; };
4396CECB2187220200FDD398 /* PEPSessionTestSendMessageDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4396CEC8218721F900FDD398 /* PEPSessionTestSendMessageDelegate.m */; };
43BCEFF7222FBA2400148303 /* NSDictionary+CommType.h in Headers */ = {isa = PBXBuildFile; fileRef = 43D27DE41F5DA78700795687 /* NSDictionary+CommType.h */; settings = {ATTRIBUTES = (Public, ); }; };
438C0ED52540215A00337922 /* NSArray+Engine.m in Sources */ = {isa = PBXBuildFile; fileRef = 438C0ECB254020F000337922 /* NSArray+Engine.m */; };
438C0EDA2540216100337922 /* NSArray+Engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 438C0ECA254020A400337922 /* NSArray+Engine.h */; };
438C0F1325402D6400337922 /* PEPIdentity+Engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 438C0F1125402D6400337922 /* PEPIdentity+Engine.h */; };
438C0F1425402D6400337922 /* PEPIdentity+Engine.m in Sources */ = {isa = PBXBuildFile; fileRef = 438C0F1225402D6400337922 /* PEPIdentity+Engine.m */; };
4396CEB82187196600FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4396CEB62187190F00FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.m */; };
4396CECB2187220200FDD398 /* PEPInternalSessionTestSendMessageDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4396CEC8218721F900FDD398 /* PEPInternalSessionTestSendMessageDelegate.m */; };
43AD0E3022E99ECE00D46F56 /* PEPInternalConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 43AD0E2E22E99ECE00D46F56 /* PEPInternalConstants.h */; };
43AD0E3122E99ECE00D46F56 /* PEPInternalConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 43AD0E2F22E99ECE00D46F56 /* PEPInternalConstants.m */; };
43E02A201C71F65B008F05E9 /* A3FC7F0A_sec.asc in Resources */ = {isa = PBXBuildFile; fileRef = 43E02A1C1C71F65B008F05E9 /* A3FC7F0A_sec.asc */; };
43E02A211C71F65B008F05E9 /* A3FC7F0A.asc in Resources */ = {isa = PBXBuildFile; fileRef = 43E02A1D1C71F65B008F05E9 /* A3FC7F0A.asc */; };
43E02A221C71F65B008F05E9 /* account_A3FC7F0A.ser in Resources */ = {isa = PBXBuildFile; fileRef = 43E02A1E1C71F65B008F05E9 /* account_A3FC7F0A.ser */; };
43E02A231C71F65B008F05E9 /* msg_to_A3FC7F0A_from_mutt.ser in Resources */ = {isa = PBXBuildFile; fileRef = 43E02A1F1C71F65B008F05E9 /* msg_to_A3FC7F0A_from_mutt.ser */; };
43E1A7A7252B41B300307A7D /* pEpIOSToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43E1A7A6252B41B300307A7D /* pEpIOSToolbox.framework */; };
43E3985F221D7E56008E7983 /* PEPObjCAdapterFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 43E3985D221D7E56008E7983 /* PEPObjCAdapterFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
43E39867221D7EB1008E7983 /* libpEpEngine.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 64289E561B8B70E800FC617B /* libpEpEngine.a */; };
43E3986B221D7EDD008E7983 /* libiconv.2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 43E3986A221D7EDD008E7983 /* libiconv.2.tbd */; };
43ECE9C925407FF3005F1925 /* PEPMessage+Engine.m in Sources */ = {isa = PBXBuildFile; fileRef = 43ECE9C725407FF2005F1925 /* PEPMessage+Engine.m */; };
43ECE9CA25407FF3005F1925 /* PEPMessage+Engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 43ECE9C825407FF3005F1925 /* PEPMessage+Engine.h */; };
43FF2ED12226AFE9000D9567 /* PEPEngineTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 43FF2ECC2226AE7E000D9567 /* PEPEngineTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
640F79231C9B517C00DBEC4E /* 5CB2C182_sec.asc in Resources */ = {isa = PBXBuildFile; fileRef = 640F79211C9B517C00DBEC4E /* 5CB2C182_sec.asc */; };
640F79241C9B517C00DBEC4E /* 5CB2C182.asc in Resources */ = {isa = PBXBuildFile; fileRef = 640F79221C9B517C00DBEC4E /* 5CB2C182.asc */; };
@ -125,28 +144,26 @@
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 /* PEPSessionTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSessionTest.m; sourceTree = "<group>"; };
152D58EE201B6DB200036219 /* PEPMessageUtilTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPMessageUtilTest.m; sourceTree = "<group>"; };
152A9C462010F50400F962ED /* PEPInternalSessionTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPInternalSessionTest.m; sourceTree = "<group>"; };
155674EC22B82D710097930C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
15D3D760200F61BB00A0DA20 /* PEPSessionProviderTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSessionProviderTest.m; sourceTree = "<group>"; };
15D3D77B2010DDC500A0DA20 /* PEPTestUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPTestUtils.h; sourceTree = "<group>"; };
15D3D77C2010DDC500A0DA20 /* PEPTestUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPTestUtils.m; sourceTree = "<group>"; };
35FB0ABB1B57F97E00377032 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
35FB0ABD1B57F99D00377032 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
430CD9B02292AC4900AAC37F /* PEPSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPSync.h; path = pEpObjCAdapterFramework/PEPSync.h; sourceTree = SOURCE_ROOT; };
430CD9B52292ADAC00AAC37F /* PEPSendMessageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPSendMessageDelegate.h; path = pEpObjCAdapterFramework/PEPSendMessageDelegate.h; sourceTree = SOURCE_ROOT; };
430CD9BA2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPNotifyHandshakeDelegate.h; path = pEpObjCAdapterFramework/PEPNotifyHandshakeDelegate.h; sourceTree = SOURCE_ROOT; };
3A68CB27252E244900F1B71C /* pEp4iosIntern.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = pEp4iosIntern.framework; sourceTree = BUILT_PRODUCTS_DIR; };
43062BAB24EEC59800489258 /* PEPIdentity+isPEPUser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPIdentity+isPEPUser.h"; sourceTree = "<group>"; };
43062BAC24EEC83400489258 /* PEPIdentity+isPEPUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PEPIdentity+isPEPUser.m"; sourceTree = "<group>"; };
430CD9B02292AC4900AAC37F /* PEPSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPSync.h; path = PEPObjCAdapterFramework/PEPSync.h; sourceTree = SOURCE_ROOT; };
430CD9B52292ADAC00AAC37F /* PEPSendMessageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPSendMessageDelegate.h; path = PEPObjCAdapterFramework/PEPSendMessageDelegate.h; sourceTree = SOURCE_ROOT; };
430CD9BA2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPNotifyHandshakeDelegate.h; path = PEPObjCAdapterFramework/PEPNotifyHandshakeDelegate.h; sourceTree = SOURCE_ROOT; };
430CD9BF2292B1EA00AAC37F /* PEPSync_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPSync_Internal.h; sourceTree = "<group>"; };
43209B261ECC2ACD007E7E2E /* NSArray+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Extension.h"; sourceTree = "<group>"; };
43209B271ECC2ACD007E7E2E /* NSArray+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Extension.m"; sourceTree = "<group>"; };
43209B261ECC2ACD007E7E2E /* NSArray+Take.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Take.h"; sourceTree = "<group>"; };
43209B271ECC2ACD007E7E2E /* NSArray+Take.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Take.m"; sourceTree = "<group>"; };
43209B281ECC2ACD007E7E2E /* PEPCSVScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPCSVScanner.h; sourceTree = "<group>"; };
43209B291ECC2ACD007E7E2E /* PEPCSVScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPCSVScanner.m; sourceTree = "<group>"; };
43209B2A1ECC2ACD007E7E2E /* PEPLanguage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPLanguage.h; sourceTree = "<group>"; };
43209B2B1ECC2ACD007E7E2E /* PEPLanguage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPLanguage.m; sourceTree = "<group>"; };
43209B2C1ECC2ACD007E7E2E /* PEPMessageUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPMessageUtil.h; sourceTree = "<group>"; };
43209B2D1ECC2ACD007E7E2E /* PEPMessageUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPMessageUtil.m; sourceTree = "<group>"; };
43209B2E1ECC2ACD007E7E2E /* PEPObjCAdapter+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PEPObjCAdapter+Internal.h"; sourceTree = "<group>"; };
43209B2F1ECC2ACD007E7E2E /* PEPObjCAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPObjCAdapter.h; sourceTree = "<group>"; };
43209B301ECC2ACD007E7E2E /* PEPObjCAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPObjCAdapter.m; sourceTree = "<group>"; };
@ -163,49 +180,73 @@
432FA2D51C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_pub.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = meATdontcare_E3BFBCA9248FC681_pub.asc; sourceTree = "<group>"; };
432FA2D61C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_sec.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = meATdontcare_E3BFBCA9248FC681_sec.asc; sourceTree = "<group>"; };
4331CE93229C2AAF00DDDC65 /* PEPSizeTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSizeTest.m; sourceTree = "<group>"; };
433DFBAA24A5E04000AB373B /* PEPPassphraseCacheEntry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPPassphraseCacheEntry.h; sourceTree = "<group>"; };
433DFBAB24A5E04000AB373B /* PEPPassphraseCacheEntry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPPassphraseCacheEntry.m; sourceTree = "<group>"; };
433DFBAE24A5ED0D00AB373B /* PEPPassphraseCacheInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPPassphraseCacheInternal.h; sourceTree = "<group>"; };
433DFBB524A61D4B00AB373B /* PEPInternalSession+PassphraseCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPInternalSession+PassphraseCache.h"; sourceTree = "<group>"; };
433DFBB624A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPInternalSession+PassphraseCache.m"; sourceTree = "<group>"; };
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 /* 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 /* PEPSessionTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSessionTest.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>"; };
4349CD7724ADDB8800A22A13 /* PEPPassphraseCache+Reset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPPassphraseCache+Reset.h"; sourceTree = "<group>"; };
4349CD7824ADDB8800A22A13 /* PEPPassphraseCache+Reset.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPPassphraseCache+Reset.m"; sourceTree = "<group>"; };
434ED6D4207E27B8000A7590 /* PEPAutoPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPAutoPointer.h; sourceTree = "<group>"; };
434ED6D5207E27B8000A7590 /* PEPAutoPointer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPAutoPointer.m; sourceTree = "<group>"; };
435665CA2080A6CB00EC5B10 /* NSNumber+PEPRating.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSNumber+PEPRating.h"; sourceTree = "<group>"; };
435665CB2080A6CB00EC5B10 /* NSNumber+PEPRating.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+PEPRating.m"; sourceTree = "<group>"; };
435796E11FB5E51A00395A9E /* PEPMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPMessage.h; sourceTree = "<group>"; };
435796E21FB5E51A00395A9E /* PEPMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPMessage.m; sourceTree = "<group>"; };
435C0CA022292E7C0025C6B5 /* PEPTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PEPTypes.h; path = pEpObjCAdapterFramework/PEPTypes.h; sourceTree = SOURCE_ROOT; };
43589EF524A4A3B70079BEA2 /* PEPPassphraseCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPPassphraseCache.h; sourceTree = "<group>"; };
43589EF624A4A3B70079BEA2 /* PEPPassphraseCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPPassphraseCache.m; sourceTree = "<group>"; };
43589EFA24A4ACFC0079BEA2 /* PEPPassphraseCacheTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPPassphraseCacheTest.m; sourceTree = "<group>"; };
435C0CA022292E7C0025C6B5 /* PEPTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PEPTypes.h; path = PEPObjCAdapterFramework/PEPTypes.h; sourceTree = SOURCE_ROOT; };
435C0CAA222930340025C6B5 /* PEPConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPConstants.h; sourceTree = "<group>"; };
435C0CAB222930340025C6B5 /* PEPConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPConstants.m; sourceTree = "<group>"; };
435F5163222045FB006EB11F /* PEPIdentity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPIdentity.h; path = pEpObjCAdapterFramework/PEPIdentity.h; sourceTree = SOURCE_ROOT; };
435F518F22204A67006EB11F /* PEPSessionProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPSessionProtocol.h; path = pEpObjCAdapterFramework/PEPSessionProtocol.h; sourceTree = SOURCE_ROOT; };
435F5163222045FB006EB11F /* PEPIdentity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPIdentity.h; path = PEPObjCAdapterFramework/PEPIdentity.h; sourceTree = SOURCE_ROOT; };
435F518F22204A67006EB11F /* PEPSessionProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PEPSessionProtocol.h; path = PEPObjCAdapterFramework/PEPSessionProtocol.h; sourceTree = SOURCE_ROOT; };
4360A9FD2227CFA300E62E5A /* NSError+PEP+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+PEP+Internal.h"; sourceTree = "<group>"; };
4360A9FE2227EBB200E62E5A /* NSNumber+PEPRating+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSNumber+PEPRating+Internal.h"; sourceTree = "<group>"; };
43676B631C57EA1A00233933 /* 0xB623F674.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 0xB623F674.asc; sourceTree = "<group>"; };
43676B641C57EA1A00233933 /* B623F674_sec.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = B623F674_sec.asc; sourceTree = "<group>"; };
436C9A3124DC48B600007A3D /* PEPPassphraseUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPPassphraseUtil.h; sourceTree = "<group>"; };
436C9A3224DC48B600007A3D /* PEPPassphraseUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPPassphraseUtil.m; sourceTree = "<group>"; };
436E916D24B65805000296FF /* PEPPassphraseProviderProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPPassphraseProviderProtocol.h; sourceTree = "<group>"; };
436E917124B714A1000296FF /* Rick Deckard (43F270EC) Secret.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Rick Deckard (43F270EC) Secret.asc"; sourceTree = "<group>"; };
436E917524B71E12000296FF /* PEPPassphraseProviderMock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPPassphraseProviderMock.h; sourceTree = "<group>"; };
436E917624B71E12000296FF /* PEPPassphraseProviderMock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPPassphraseProviderMock.m; sourceTree = "<group>"; };
438C0ECA254020A400337922 /* NSArray+Engine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSArray+Engine.h"; sourceTree = "<group>"; };
438C0ECB254020F000337922 /* NSArray+Engine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Engine.m"; sourceTree = "<group>"; };
438C0F1125402D6400337922 /* PEPIdentity+Engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PEPIdentity+Engine.h"; sourceTree = "<group>"; };
438C0F1225402D6400337922 /* PEPIdentity+Engine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PEPIdentity+Engine.m"; sourceTree = "<group>"; };
439393E4208F375800EB1DBD /* NSObject+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSObject+Extension.h"; sourceTree = "<group>"; };
439393E5208F375800EB1DBD /* NSObject+Extension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSObject+Extension.m"; sourceTree = "<group>"; };
439393F6208F5B5E00EB1DBD /* NSMutableDictionary+PEP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+PEP.h"; sourceTree = "<group>"; };
439393F7208F5B5E00EB1DBD /* NSMutableDictionary+PEP.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+PEP.m"; sourceTree = "<group>"; };
43953B3320C91E2B001C7DDB /* NSDictionary+Debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Debug.h"; sourceTree = "<group>"; };
43953B3420C91E2B001C7DDB /* NSDictionary+Debug.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Debug.m"; sourceTree = "<group>"; };
4396CEB52187190F00FDD398 /* PEPSessionTestNotifyHandshakeDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPSessionTestNotifyHandshakeDelegate.h; sourceTree = "<group>"; };
4396CEB62187190F00FDD398 /* PEPSessionTestNotifyHandshakeDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSessionTestNotifyHandshakeDelegate.m; sourceTree = "<group>"; };
4396CEC8218721F900FDD398 /* PEPSessionTestSendMessageDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPSessionTestSendMessageDelegate.m; sourceTree = "<group>"; };
4396CEC9218721F900FDD398 /* PEPSessionTestSendMessageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPSessionTestSendMessageDelegate.h; sourceTree = "<group>"; };
4396CEB52187190F00FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPInternalSessionTestNotifyHandshakeDelegate.h; sourceTree = "<group>"; };
4396CEB62187190F00FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPInternalSessionTestNotifyHandshakeDelegate.m; sourceTree = "<group>"; };
4396CEC8218721F900FDD398 /* PEPInternalSessionTestSendMessageDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PEPInternalSessionTestSendMessageDelegate.m; sourceTree = "<group>"; };
4396CEC9218721F900FDD398 /* PEPInternalSessionTestSendMessageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PEPInternalSessionTestSendMessageDelegate.h; sourceTree = "<group>"; };
439D91A3208479EE003F6AC2 /* PEPAttachment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPAttachment.h; sourceTree = "<group>"; };
439D91A4208479EE003F6AC2 /* PEPAttachment.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPAttachment.m; sourceTree = "<group>"; };
43D27DE41F5DA78700795687 /* NSDictionary+CommType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+CommType.h"; sourceTree = "<group>"; };
43D27DE51F5DA7B700795687 /* NSDictionary+CommType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+CommType.m"; sourceTree = "<group>"; };
43AD0E2E22E99ECE00D46F56 /* PEPInternalConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPInternalConstants.h; sourceTree = "<group>"; };
43AD0E2F22E99ECE00D46F56 /* PEPInternalConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPInternalConstants.m; sourceTree = "<group>"; };
43DED784203C25E200D45CD6 /* NSError+PEP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+PEP.h"; sourceTree = "<group>"; };
43DED785203C25E200D45CD6 /* NSError+PEP.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSError+PEP.m"; sourceTree = "<group>"; };
43E02A1C1C71F65B008F05E9 /* A3FC7F0A_sec.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = A3FC7F0A_sec.asc; sourceTree = "<group>"; };
43E02A1D1C71F65B008F05E9 /* A3FC7F0A.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = A3FC7F0A.asc; sourceTree = "<group>"; };
43E02A1E1C71F65B008F05E9 /* account_A3FC7F0A.ser */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = account_A3FC7F0A.ser; sourceTree = "<group>"; };
43E02A1F1C71F65B008F05E9 /* msg_to_A3FC7F0A_from_mutt.ser */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = msg_to_A3FC7F0A_from_mutt.ser; sourceTree = "<group>"; };
43E1A7A6252B41B300307A7D /* pEpIOSToolbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = pEpIOSToolbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
43E1A7AB252B421D00307A7D /* Logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Logger.h; sourceTree = "<group>"; };
43E3985B221D7E56008E7983 /* PEPObjCAdapterFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PEPObjCAdapterFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
43E3985D221D7E56008E7983 /* PEPObjCAdapterFramework.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPObjCAdapterFramework.h; sourceTree = "<group>"; };
43E3985E221D7E56008E7983 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
43E3986A221D7EDD008E7983 /* libiconv.2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.2.tbd; path = usr/lib/libiconv.2.tbd; sourceTree = SDKROOT; };
43ECE9C725407FF2005F1925 /* PEPMessage+Engine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PEPMessage+Engine.m"; sourceTree = "<group>"; };
43ECE9C825407FF3005F1925 /* PEPMessage+Engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PEPMessage+Engine.h"; sourceTree = "<group>"; };
43F73BE92166248E00AB4524 /* PEPSync.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSync.m; sourceTree = "<group>"; };
43FF2ECC2226AE7E000D9567 /* PEPEngineTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PEPEngineTypes.h; path = pEpObjCAdapterFramework/PEPEngineTypes.h; sourceTree = SOURCE_ROOT; };
43FF2ECC2226AE7E000D9567 /* PEPEngineTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PEPEngineTypes.h; path = PEPObjCAdapterFramework/PEPEngineTypes.h; sourceTree = SOURCE_ROOT; };
640F79211C9B517C00DBEC4E /* 5CB2C182_sec.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 5CB2C182_sec.asc; sourceTree = "<group>"; };
640F79221C9B517C00DBEC4E /* 5CB2C182.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 5CB2C182.asc; sourceTree = "<group>"; };
64415E171BE94FCB00F6CBB2 /* pEpObjCAdapterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = pEpObjCAdapterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
@ -224,8 +265,10 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
3A68CB28252E244900F1B71C /* pEp4iosIntern.framework in Frameworks */,
43E3986B221D7EDD008E7983 /* libiconv.2.tbd in Frameworks */,
155674ED22B82D710097930C /* libz.dylib in Frameworks */,
43E1A7A7252B41B300307A7D /* pEpIOSToolbox.framework in Frameworks */,
43E39867221D7EB1008E7983 /* libpEpEngine.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -247,10 +290,16 @@
children = (
15D3D77B2010DDC500A0DA20 /* PEPTestUtils.h */,
15D3D77C2010DDC500A0DA20 /* PEPTestUtils.m */,
4396CEB52187190F00FDD398 /* PEPSessionTestNotifyHandshakeDelegate.h */,
4396CEB62187190F00FDD398 /* PEPSessionTestNotifyHandshakeDelegate.m */,
4396CEC9218721F900FDD398 /* PEPSessionTestSendMessageDelegate.h */,
4396CEC8218721F900FDD398 /* PEPSessionTestSendMessageDelegate.m */,
4396CEB52187190F00FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.h */,
4396CEB62187190F00FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.m */,
4396CEC9218721F900FDD398 /* PEPInternalSessionTestSendMessageDelegate.h */,
4396CEC8218721F900FDD398 /* PEPInternalSessionTestSendMessageDelegate.m */,
4349CD7724ADDB8800A22A13 /* PEPPassphraseCache+Reset.h */,
4349CD7824ADDB8800A22A13 /* PEPPassphraseCache+Reset.m */,
436E917524B71E12000296FF /* PEPPassphraseProviderMock.h */,
436E917624B71E12000296FF /* PEPPassphraseProviderMock.m */,
43062BAB24EEC59800489258 /* PEPIdentity+isPEPUser.h */,
43062BAC24EEC83400489258 /* PEPIdentity+isPEPUser.m */,
);
path = TestUtils;
sourceTree = "<group>";
@ -258,6 +307,7 @@
15DE372B200F5F93007FBD94 /* Recources */ = {
isa = PBXGroup;
children = (
436E917124B714A1000296FF /* Rick Deckard (43F270EC) Secret.asc */,
640F79211C9B517C00DBEC4E /* 5CB2C182_sec.asc */,
640F79221C9B517C00DBEC4E /* 5CB2C182.asc */,
432FA2D51C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_pub.asc */,
@ -267,8 +317,6 @@
432FA2D11C884C5F00DDF874 /* partner2_F9D9CCD0A401311F_pub.asc */,
43E02A1C1C71F65B008F05E9 /* A3FC7F0A_sec.asc */,
43E02A1D1C71F65B008F05E9 /* A3FC7F0A.asc */,
43E02A1E1C71F65B008F05E9 /* account_A3FC7F0A.ser */,
43E02A1F1C71F65B008F05E9 /* msg_to_A3FC7F0A_from_mutt.ser */,
43676B631C57EA1A00233933 /* 0xB623F674.asc */,
43676B641C57EA1A00233933 /* B623F674_sec.asc */,
432EF60B1C58B77900B6782A /* msg_to_B623F674.asc */,
@ -310,43 +358,39 @@
43209B251ECC2ACD007E7E2E /* pEpObjCAdapter */ = {
isa = PBXGroup;
children = (
43209B261ECC2ACD007E7E2E /* NSArray+Extension.h */,
43209B271ECC2ACD007E7E2E /* NSArray+Extension.m */,
438C0EE1254026E200337922 /* Extensions */,
43209B281ECC2ACD007E7E2E /* PEPCSVScanner.h */,
43209B291ECC2ACD007E7E2E /* PEPCSVScanner.m */,
43209B2B1ECC2ACD007E7E2E /* PEPLanguage.m */,
43209B2C1ECC2ACD007E7E2E /* PEPMessageUtil.h */,
43209B2D1ECC2ACD007E7E2E /* PEPMessageUtil.m */,
43209B2E1ECC2ACD007E7E2E /* PEPObjCAdapter+Internal.h */,
43209B301ECC2ACD007E7E2E /* PEPObjCAdapter.m */,
43209B311ECC2ACD007E7E2E /* PEPQueue.h */,
43209B321ECC2ACD007E7E2E /* PEPQueue.m */,
43209B341ECC2ACD007E7E2E /* PEPInternalSession.h */,
43209B351ECC2ACD007E7E2E /* PEPInternalSession.m */,
43D27DE51F5DA7B700795687 /* NSDictionary+CommType.m */,
43953B3320C91E2B001C7DDB /* NSDictionary+Debug.h */,
43953B3420C91E2B001C7DDB /* NSDictionary+Debug.m */,
1508AEAD1F8792AC001D5230 /* PEPCopyableThread.h */,
1508AEAE1F8792AC001D5230 /* PEPCopyableThread.m */,
15206CA81F8BA183003FF880 /* PEPSessionProvider.h */,
15206CA91F8BA183003FF880 /* PEPSessionProvider.m */,
15206CC61F8E078B003FF880 /* PEPSession.m */,
433E28901FA741DE00E359B3 /* PEPIdentity.m */,
435796E21FB5E51A00395A9E /* PEPMessage.m */,
439D91A4208479EE003F6AC2 /* PEPAttachment.m */,
43DED784203C25E200D45CD6 /* NSError+PEP.h */,
4360A9FD2227CFA300E62E5A /* NSError+PEP+Internal.h */,
43DED785203C25E200D45CD6 /* NSError+PEP.m */,
434ED6D4207E27B8000A7590 /* PEPAutoPointer.h */,
434ED6D5207E27B8000A7590 /* PEPAutoPointer.m */,
4360A9FE2227EBB200E62E5A /* NSNumber+PEPRating+Internal.h */,
435665CB2080A6CB00EC5B10 /* NSNumber+PEPRating.m */,
439393E4208F375800EB1DBD /* NSObject+Extension.h */,
439393E5208F375800EB1DBD /* NSObject+Extension.m */,
439393F6208F5B5E00EB1DBD /* NSMutableDictionary+PEP.h */,
439393F7208F5B5E00EB1DBD /* NSMutableDictionary+PEP.m */,
43F73BE92166248E00AB4524 /* PEPSync.m */,
430CD9BF2292B1EA00AAC37F /* PEPSync_Internal.h */,
43AD0E2E22E99ECE00D46F56 /* PEPInternalConstants.h */,
43AD0E2F22E99ECE00D46F56 /* PEPInternalConstants.m */,
43589EF524A4A3B70079BEA2 /* PEPPassphraseCache.h */,
433DFBAE24A5ED0D00AB373B /* PEPPassphraseCacheInternal.h */,
43589EF624A4A3B70079BEA2 /* PEPPassphraseCache.m */,
433DFBAA24A5E04000AB373B /* PEPPassphraseCacheEntry.h */,
433DFBAB24A5E04000AB373B /* PEPPassphraseCacheEntry.m */,
434707F524C210CA00E05485 /* PEPSession.m */,
436C9A3124DC48B600007A3D /* PEPPassphraseUtil.h */,
436C9A3224DC48B600007A3D /* PEPPassphraseUtil.m */,
433DFBBB24A73AD400AB373B /* PEPSessionProtocol.m */,
43E1A7AB252B421D00307A7D /* Logger.h */,
);
path = pEpObjCAdapter;
sourceTree = "<group>";
@ -354,31 +398,59 @@
43447C51221D448500B6323E /* Frameworks */ = {
isa = PBXGroup;
children = (
3A68CB27252E244900F1B71C /* pEp4iosIntern.framework */,
43E1A7A6252B41B300307A7D /* pEpIOSToolbox.framework */,
43E3986A221D7EDD008E7983 /* libiconv.2.tbd */,
155674EC22B82D710097930C /* libz.dylib */,
);
name = Frameworks;
sourceTree = "<group>";
};
438C0EE1254026E200337922 /* Extensions */ = {
isa = PBXGroup;
children = (
43209B261ECC2ACD007E7E2E /* NSArray+Take.h */,
43209B271ECC2ACD007E7E2E /* NSArray+Take.m */,
438C0ECA254020A400337922 /* NSArray+Engine.h */,
438C0ECB254020F000337922 /* NSArray+Engine.m */,
438C0F1125402D6400337922 /* PEPIdentity+Engine.h */,
438C0F1225402D6400337922 /* PEPIdentity+Engine.m */,
43ECE9C825407FF3005F1925 /* PEPMessage+Engine.h */,
43ECE9C725407FF2005F1925 /* PEPMessage+Engine.m */,
43DED784203C25E200D45CD6 /* NSError+PEP.h */,
4360A9FD2227CFA300E62E5A /* NSError+PEP+Internal.h */,
43DED785203C25E200D45CD6 /* NSError+PEP.m */,
4360A9FE2227EBB200E62E5A /* NSNumber+PEPRating+Internal.h */,
435665CB2080A6CB00EC5B10 /* NSNumber+PEPRating.m */,
439393E4208F375800EB1DBD /* NSObject+Extension.h */,
439393E5208F375800EB1DBD /* NSObject+Extension.m */,
4349CD6D24AC73FC00A22A13 /* NSString+NormalizePassphrase.h */,
4349CD6E24AC73FC00A22A13 /* NSString+NormalizePassphrase.m */,
433DFBB524A61D4B00AB373B /* PEPInternalSession+PassphraseCache.h */,
433DFBB624A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m */,
);
path = Extensions;
sourceTree = "<group>";
};
43E3985C221D7E56008E7983 /* PEPObjCAdapterFramework */ = {
isa = PBXGroup;
children = (
434707F424C210CA00E05485 /* PEPSession.h */,
435F518F22204A67006EB11F /* PEPSessionProtocol.h */,
430CD9BA2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h */,
430CD9B52292ADAC00AAC37F /* PEPSendMessageDelegate.h */,
430CD9B02292AC4900AAC37F /* PEPSync.h */,
43D27DE41F5DA78700795687 /* NSDictionary+CommType.h */,
43209B2A1ECC2ACD007E7E2E /* PEPLanguage.h */,
439D91A3208479EE003F6AC2 /* PEPAttachment.h */,
435665CA2080A6CB00EC5B10 /* NSNumber+PEPRating.h */,
435C0CAA222930340025C6B5 /* PEPConstants.h */,
435C0CAB222930340025C6B5 /* PEPConstants.m */,
435796E11FB5E51A00395A9E /* PEPMessage.h */,
15206CC51F8E078B003FF880 /* PEPSession.h */,
43209B2F1ECC2ACD007E7E2E /* PEPObjCAdapter.h */,
435C0CA022292E7C0025C6B5 /* PEPTypes.h */,
43FF2ECC2226AE7E000D9567 /* PEPEngineTypes.h */,
435F518F22204A67006EB11F /* PEPSessionProtocol.h */,
435F5163222045FB006EB11F /* PEPIdentity.h */,
436E916D24B65805000296FF /* PEPPassphraseProviderProtocol.h */,
43E3985D221D7E56008E7983 /* PEPObjCAdapterFramework.h */,
43E3985E221D7E56008E7983 /* Info.plist */,
);
@ -400,11 +472,12 @@
15D3D762200F6C6A00A0DA20 /* TestUtils */,
15DE372B200F5F93007FBD94 /* Recources */,
434226801D4F60000083ED79 /* PepTests.m */,
152D58EE201B6DB200036219 /* PEPMessageUtilTest.m */,
15D3D760200F61BB00A0DA20 /* PEPSessionProviderTest.m */,
152A9C462010F50400F962ED /* PEPSessionTest.m */,
152A9C462010F50400F962ED /* PEPInternalSessionTest.m */,
64415E1B1BE94FCB00F6CBB2 /* Info.plist */,
4331CE93229C2AAF00DDDC65 /* PEPSizeTest.m */,
43589EFA24A4ACFC0079BEA2 /* PEPPassphraseCacheTest.m */,
434707F824C30E9700E05485 /* PEPSessionTest.m */,
);
path = pEpObjCTests;
sourceTree = "<group>";
@ -417,21 +490,29 @@
buildActionMask = 2147483647;
files = (
43753CFB222D4911002EE98B /* PEPLanguage.h in Headers */,
433DFBB724A61D4B00AB373B /* PEPInternalSession+PassphraseCache.h in Headers */,
4360AA0E2227F22900E62E5A /* PEPObjCAdapter.h in Headers */,
436E916E24B65805000296FF /* PEPPassphraseProviderProtocol.h in Headers */,
430CD9BB2292AEDD00AAC37F /* PEPNotifyHandshakeDelegate.h in Headers */,
435C0C9922292C080025C6B5 /* PEPMessage.h in Headers */,
43589EF724A4A3B70079BEA2 /* PEPPassphraseCache.h in Headers */,
435C0CA222292E7C0025C6B5 /* PEPTypes.h in Headers */,
433DFBAC24A5E04000AB373B /* PEPPassphraseCacheEntry.h in Headers */,
435F5164222045FB006EB11F /* PEPIdentity.h in Headers */,
43ECE9CA25407FF3005F1925 /* PEPMessage+Engine.h in Headers */,
438C0EDA2540216100337922 /* NSArray+Engine.h in Headers */,
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 /* PEPSession.h in Headers */,
43FF2ED12226AFE9000D9567 /* PEPEngineTypes.h in Headers */,
438C0F1325402D6400337922 /* PEPIdentity+Engine.h in Headers */,
430CD9B12292AC4900AAC37F /* PEPSync.h in Headers */,
435F519022204A67006EB11F /* PEPSessionProtocol.h in Headers */,
435C0CD922296B660025C6B5 /* PEPAttachment.h in Headers */,
435C0CBB2229380E0025C6B5 /* NSNumber+PEPRating.h in Headers */,
43BCEFF7222FBA2400148303 /* NSDictionary+CommType.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -484,7 +565,7 @@
isa = PBXProject;
attributes = {
CLASSPREFIX = PEP;
LastUpgradeCheck = 1020;
LastUpgradeCheck = 1200;
ORGANIZATIONNAME = "p≡p";
TargetAttributes = {
43E3985A221D7E56008E7983 = {
@ -561,14 +642,13 @@
43E02A201C71F65B008F05E9 /* A3FC7F0A_sec.asc in Resources */,
432FA2D31C884C5F00DDF874 /* partner1_F2D281C2789DD7F6_sec.asc in Resources */,
64415E4D1BEA523300F6CBB2 /* C9C2EE39_sec.asc in Resources */,
43E02A221C71F65B008F05E9 /* account_A3FC7F0A.ser in Resources */,
64415E4A1BEA523300F6CBB2 /* 0x70DCF575.asc in Resources */,
64415E4B1BEA523300F6CBB2 /* 70DCF575_sec.asc in Resources */,
640F79241C9B517C00DBEC4E /* 5CB2C182.asc in Resources */,
43E02A211C71F65B008F05E9 /* A3FC7F0A.asc in Resources */,
432FA2D71C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_pub.asc in Resources */,
436E917224B714A2000296FF /* Rick Deckard (43F270EC) Secret.asc in Resources */,
432EF60C1C58B77900B6782A /* 0xB623F674.asc in Resources */,
43E02A231C71F65B008F05E9 /* msg_to_A3FC7F0A_from_mutt.ser in Resources */,
64415E491BEA523300F6CBB2 /* 6FF00E97_sec.asc in Resources */,
432FA2D81C884FF500DDF874 /* meATdontcare_E3BFBCA9248FC681_sec.asc in Resources */,
64415E481BEA523300F6CBB2 /* 6FF00E97.asc in Resources */,
@ -605,28 +685,34 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
435F5170222046C2006EB11F /* NSDictionary+Debug.m in Sources */,
433DFBB824A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m in Sources */,
435F5176222046C2006EB11F /* PEPAttachment.m in Sources */,
4349CD7024AC73FC00A22A13 /* NSString+NormalizePassphrase.m in Sources */,
435F5178222046C2006EB11F /* PEPAutoPointer.m in Sources */,
435F516C222046C2006EB11F /* PEPObjCAdapter.m in Sources */,
435F5177222046C2006EB11F /* NSError+PEP.m in Sources */,
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 */,
435F5168222046C2006EB11F /* NSArray+Take.m in Sources */,
435F516E222046C2006EB11F /* PEPInternalSession.m in Sources */,
43ECE9C925407FF3005F1925 /* PEPMessage+Engine.m in Sources */,
435F5172222046C2006EB11F /* PEPSessionProvider.m in Sources */,
435C0CAD222930340025C6B5 /* PEPConstants.m in Sources */,
433DFBAD24A5E04000AB373B /* PEPPassphraseCacheEntry.m in Sources */,
435F5169222046C2006EB11F /* PEPCSVScanner.m in Sources */,
433DFBBC24A73AD400AB373B /* PEPSessionProtocol.m in Sources */,
435F5179222046C2006EB11F /* NSNumber+PEPRating.m in Sources */,
435F516B222046C2006EB11F /* PEPMessageUtil.m in Sources */,
438C0ED52540215A00337922 /* NSArray+Engine.m in Sources */,
435F5171222046C2006EB11F /* PEPCopyableThread.m in Sources */,
43589EF924A4A3B70079BEA2 /* PEPPassphraseCache.m in Sources */,
435F5175222046C2006EB11F /* PEPMessage.m in Sources */,
434707F724C210CA00E05485 /* PEPSession.m in Sources */,
435F5174222046C2006EB11F /* PEPIdentity.m in Sources */,
435F517A222046C2006EB11F /* NSObject+Extension.m in Sources */,
438C0F1425402D6400337922 /* PEPIdentity+Engine.m in Sources */,
435F517D222046C2006EB11F /* PEPSync.m in Sources */,
435F516D222046C2006EB11F /* PEPQueue.m in Sources */,
43AD0E3122E99ECE00D46F56 /* PEPInternalConstants.m in Sources */,
436C9A3E24DC532600007A3D /* PEPPassphraseUtil.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -635,13 +721,17 @@
buildActionMask = 2147483647;
files = (
4331CE94229C2AAF00DDDC65 /* PEPSizeTest.m in Sources */,
4396CECB2187220200FDD398 /* PEPSessionTestSendMessageDelegate.m in Sources */,
152D58EF201B6DB200036219 /* PEPMessageUtilTest.m in Sources */,
152A9C472010F50400F962ED /* PEPSessionTest.m in Sources */,
4396CECB2187220200FDD398 /* PEPInternalSessionTestSendMessageDelegate.m in Sources */,
434707F924C30E9700E05485 /* PEPSessionTest.m in Sources */,
152A9C472010F50400F962ED /* PEPInternalSessionTest.m in Sources */,
434226811D4F60000083ED79 /* PepTests.m in Sources */,
4336853F203D5CE60069A451 /* PEPTestUtils.m in Sources */,
4396CEB82187196600FDD398 /* PEPSessionTestNotifyHandshakeDelegate.m in Sources */,
4349CD7924ADDB8800A22A13 /* PEPPassphraseCache+Reset.m in Sources */,
43062BAD24EEC83400489258 /* PEPIdentity+isPEPUser.m in Sources */,
4396CEB82187196600FDD398 /* PEPInternalSessionTestNotifyHandshakeDelegate.m in Sources */,
15D3D761200F61BB00A0DA20 /* PEPSessionProviderTest.m in Sources */,
43589EFB24A4ACFC0079BEA2 /* PEPPassphraseCacheTest.m in Sources */,
436E917724B71E12000296FF /* PEPPassphraseProviderMock.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -687,6 +777,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -711,13 +802,13 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../Sequoia4iOS/build/include";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../Sequoia4iOS/build/lib";
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
VALID_ARCHS = "$(inherited)";
VALID_ARCHS = "arm64 x86_64";
};
name = Debug;
};
@ -742,6 +833,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -761,14 +853,14 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../Sequoia4iOS/build/include";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../Sequoia4iOS/build/lib";
MTL_ENABLE_DEBUG_INFO = NO;
ONLY_ACTIVE_ARCH = NO;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
VALIDATE_PRODUCT = YES;
VALID_ARCHS = "$(inherited)";
VALID_ARCHS = "arm64 x86_64";
};
name = Release;
};
@ -795,7 +887,7 @@
GCC_DYNAMIC_NO_PIC = NO;
INFOPLIST_FILE = PEPObjCAdapterFramework/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
IPHONEOS_DEPLOYMENT_TARGET = "${inherited}";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
@ -831,7 +923,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = PEPObjCAdapterFramework/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
IPHONEOS_DEPLOYMENT_TARGET = "${inherited}";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = security.pEp.app.framework.PEPObjCAdapterFramework;
@ -857,7 +949,7 @@
ENABLE_TESTABILITY = YES;
GCC_DYNAMIC_NO_PIC = NO;
INFOPLIST_FILE = pEpObjCTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
@ -887,7 +979,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = NQLYU6MGPN;
INFOPLIST_FILE = pEpObjCTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
OTHER_LDFLAGS = (
"-letpan-ios",

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -14,9 +14,9 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "352988A91AEF964100FA7E2E"
BuildableName = "libpEpObjCAdapter.a"
BlueprintName = "pEpObjCAdapter"
BlueprintIdentifier = "43E3985A221D7E56008E7983"
BuildableName = "PEPObjCAdapterFramework.framework"
BlueprintName = "PEPObjCAdapterFramework"
ReferencedContainer = "container:pEpObjCAdapter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
@ -28,9 +28,17 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "64415E161BE94FCB00F6CBB2"
BuildableName = "pEpObjCAdapterTests.xctest"
BlueprintName = "pEpObjCAdapterTests"
ReferencedContainer = "container:pEpObjCAdapter.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -45,14 +53,12 @@
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "352988A91AEF964100FA7E2E"
BuildableName = "libpEpObjCAdapter.a"
BlueprintName = "pEpObjCAdapter"
BlueprintIdentifier = "43E3985A221D7E56008E7983"
BuildableName = "PEPObjCAdapterFramework.framework"
BlueprintName = "PEPObjCAdapterFramework"
ReferencedContainer = "container:pEpObjCAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
@ -63,9 +69,9 @@
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "352988A91AEF964100FA7E2E"
BuildableName = "libpEpObjCAdapter.a"
BlueprintName = "pEpObjCAdapter"
BlueprintIdentifier = "43E3985A221D7E56008E7983"
BuildableName = "PEPObjCAdapterFramework.framework"
BlueprintName = "PEPObjCAdapterFramework"
ReferencedContainer = "container:pEpObjCAdapter.xcodeproj">
</BuildableReference>
</MacroExpansion>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1200"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -23,8 +23,6 @@
</BuildableReference>
</TestableReference>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -36,8 +34,6 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

@ -0,0 +1,36 @@
//
// NSArray+Engine.h
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 21.10.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "stringlist.h"
#import "identity_list.h"
#import "bloblist.h"
@class PEPIdentity;
NS_ASSUME_NONNULL_BEGIN
@interface NSArray (Engine)
+ (instancetype)arrayFromStringlist:(stringlist_t *)stringList;
+ (NSArray<PEPIdentity *> *)arrayFromIdentityList:(identity_list *)identityList;
+ (instancetype)arrayFromStringPairlist:(stringpair_list_t * _Nonnull)stringPairList;
+ (instancetype)arrayFromBloblist:(bloblist_t * _Nonnull)blobList;
- (stringlist_t * _Nullable)toStringList;
/// Converts `NSArray<PEPIdentity *>` to an engine identity list
- (identity_list * _Nullable)toIdentityList;
- (stringpair_list_t * _Nullable)toStringPairlist;
- (bloblist_t * _Nullable)toBloblist;
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,157 @@
//
// NSArray+Engine.m
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 21.10.20.
// Copyright © 2020 pp. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "NSArray+Engine.h"
#import "PEPIdentity.h"
#import "PEPIdentity+Engine.h"
#import "PEPAttachment.h"
@implementation NSArray (Engine)
+ (instancetype)arrayFromStringlist:(stringlist_t * _Nonnull)stringList
{
NSMutableArray *array = [NSMutableArray array];
for (stringlist_t *_sl = stringList; _sl && _sl->value; _sl = _sl->next) {
[array addObject:[NSString stringWithUTF8String:_sl->value]];
}
return array;
}
+ (NSArray<PEPIdentity *> *)arrayFromIdentityList:(identity_list *)identityList
{
NSMutableArray *array = [NSMutableArray array];
for (identity_list *_il = identityList; _il && _il->ident; _il = _il->next) {
[array addObject:[PEPIdentity fromStruct:_il->ident]];
}
return array;
}
+ (instancetype)arrayFromStringPairlist:(stringpair_list_t * _Nonnull)stringPairList
{
NSMutableArray *array = [NSMutableArray array];
for (stringpair_list_t *_sl = stringPairList; _sl && _sl->value; _sl = _sl->next) {
[array addObject:[[NSMutableArray alloc ]initWithObjects:
[NSString stringWithUTF8String:_sl->value->key],
[NSString stringWithUTF8String:_sl->value->value],
nil]];
}
return array;
}
+ (instancetype)arrayFromBloblist:(bloblist_t * _Nonnull)blobList
{
NSMutableArray *array = [NSMutableArray array];
for (bloblist_t *_bl = blobList; _bl && _bl->value; _bl = _bl->next) {
PEPAttachment* theAttachment = [[PEPAttachment alloc]
initWithData:[NSData
dataWithBytes:_bl->value length:_bl->size]];
if(_bl->filename && _bl->filename[0]) {
theAttachment.filename = [NSString stringWithUTF8String:_bl->filename];
}
if(_bl->mime_type && _bl->mime_type[0]) {
theAttachment.mimeType = [NSString stringWithUTF8String:_bl->mime_type];
}
theAttachment.contentDisposition = (PEPContentDisposition) _bl->disposition;
[array addObject:theAttachment];
}
return array;
}
- (stringlist_t * _Nullable)toStringList
{
stringlist_t *sl = new_stringlist(NULL);
if (!sl)
return NULL;
stringlist_t *_sl = sl;
for (NSString *str in self) {
_sl = stringlist_add(_sl, [[str precomposedStringWithCanonicalMapping] UTF8String]);
}
return sl;
}
- (identity_list * _Nullable)toIdentityList
{
identity_list *il = new_identity_list(NULL);
if (!il)
return NULL;
identity_list *_il = il;
for (PEPIdentity *address in self) {
_il = identity_list_add(_il, [address toStruct]);
}
return il;
}
- (stringpair_list_t * _Nullable)toStringPairlist
{
stringpair_list_t *sl = new_stringpair_list(NULL);
if (!sl)
return NULL;
stringpair_list_t *_sl = sl;
for (NSArray *pair in self) {
stringpair_t *_sp = new_stringpair(
[[pair[0] precomposedStringWithCanonicalMapping] UTF8String],
[[pair[1] precomposedStringWithCanonicalMapping] UTF8String]);
_sl = stringpair_list_add(_sl, _sp);
}
return sl;
}
- (bloblist_t * _Nullable)toBloblist
{
if (self.count == 0) {
return nil;
}
bloblist_t *_bl = new_bloblist(NULL, 0, NULL, NULL);
bloblist_t *bl =_bl;
// free() might be the default, but let's be explicit
bl->release_value = (void (*) (char *)) free;
for (PEPAttachment *theAttachment in self) {
NSData *data = theAttachment.data;
size_t size = [data length];
char *buf = malloc(size);
assert(buf);
memcpy(buf, [data bytes], size);
bl = bloblist_add(bl, buf, size,
[[theAttachment.mimeType
precomposedStringWithCanonicalMapping]
UTF8String],
[[theAttachment.filename
precomposedStringWithCanonicalMapping]
UTF8String]);
bl->disposition = (content_disposition_type) theAttachment.contentDisposition;
}
return _bl;
}
@end

@ -1,5 +1,5 @@
//
// NSArray+Extension.h
// NSArray+Take.h
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 03.05.17.
@ -15,7 +15,7 @@
@end
@interface NSArray (Extension)
@interface NSArray (Take)
/**
@Return The next count elements or nil, if less than that amount available.

@ -1,12 +1,12 @@
//
// NSArray+Extension.m
// NSArray+Take.m
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 03.05.17.
// Copyright © 2017 pp. All rights reserved.
//
#import "NSArray+Extension.h"
#import "NSArray+Take.h"
@implementation ArrayTake
@ -21,7 +21,7 @@
@end
@implementation NSArray (Extension)
@implementation NSArray (Take)
- (ArrayTake * _Nullable)takeOrNil:(NSInteger)count
{

@ -0,0 +1,31 @@
//
// NSError+PEP+Internal.h
// pEpObjCAdapter
//
// Created by Dirk Zimmermann on 28.02.19.
// Copyright © 2019 p≡p. All rights reserved.
//
#ifndef NSError_PEP_Internal_h
#define NSError_PEP_Internal_h
#import "PEPEngineTypes.h"
/**
Extension for creating `NSError`s from `PEP_STATUS`
*/
@interface NSError (Internal)
+ (NSError * _Nullable)errorWithPEPStatus:(PEPStatus)status;
+ (NSError * _Nullable)errorWithPEPStatusInternal:(PEP_STATUS)status;
/**
If the given status indicates an error, tries to set the given error accordingly.
@return YES if the given status indicates an error condition, NO otherwise.
*/
+ (BOOL)setError:(NSError * _Nullable * _Nullable)error fromPEPStatus:(PEPStatus)status;
@end
#endif /* NSError_PEP_Internal_h */

@ -0,0 +1,90 @@
//
// NSError+PEP.m
// pEpObjCAdapter
//
// Created by Dirk Zimmermann on 20.02.18.
// Copyright © 2018 pp. All rights reserved.
//
#import "PEPTypes.h"
#import "NSError+PEP.h"
#import "NSError+PEP+Internal.h"
#import "status_to_string.h"
#import "PEPSessionProtocol.h"
@implementation NSError (Extension)
+ (NSError * _Nullable)errorWithPEPStatusInternal:(PEP_STATUS)status
{
switch (status) {
case PEP_STATUS_OK:
case PEP_DECRYPTED:
case PEP_UNENCRYPTED:
case PEP_DECRYPT_NO_KEY:
case PEP_KEY_IMPORTED:
case PEP_KEY_IMPORT_STATUS_UNKNOWN:
case PEP_VERIFY_SIGNER_KEY_REVOKED:
return nil;
break;
default: {
NSDictionary *dict = [NSDictionary
dictionaryWithObjectsAndKeys:localizedErrorStringFromPEPStatus(status),
NSLocalizedDescriptionKey, nil];
return [NSError
errorWithDomain:PEPObjCAdapterEngineStatusErrorDomain
code:status
userInfo:dict];
}
break;
}
}
+ (NSError * _Nullable)errorWithPEPStatus:(PEPStatus)status
{
return [self errorWithPEPStatusInternal:(PEP_STATUS) status];
}
+ (BOOL)setError:(NSError * _Nullable * _Nullable)error fromPEPStatus:(PEPStatus)status
{
// Determine if the given status is an error.
NSError *errorFromStatus = [self errorWithPEPStatus:status];
// Set caller's error, if given
if (error) {
*error = errorFromStatus;
}
// Indicate error status.
if (errorFromStatus) {
return YES;
} else {
return NO;
}
}
/**
Could in theory return a fully localized version of the underlying error.
*/
NSString * _Nonnull localizedErrorStringFromPEPStatus(PEP_STATUS status) {
return stringFromPEPStatus(status);
}
NSString * _Nonnull stringFromPEPStatus(PEP_STATUS status) {
const char *pstrStatus = pEp_status_to_string(status);
return [NSString stringWithUTF8String:pstrStatus];
}
- (NSString * _Nullable)pEpErrorString
{
if ([self.domain isEqualToString:PEPObjCAdapterEngineStatusErrorDomain]) {
return stringFromPEPStatus((PEP_STATUS) self.code);
} else {
return nil;
}
}
@end

@ -0,0 +1,24 @@
//
// NSString+NormalizePassphrase.h
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 01.07.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSString (NormalizePassphrase)
/// Returns a normalized (unicode NFC) version of the given passphrase,
/// checking for length as well.
/// @param error The (optional) error, maybe PEPAdapterErrorPassphraseTooLong
/// with a domain of PEPObjCAdapterErrorDomain.
/// @Return `nil` if an error occurred.
- (NSString * _Nullable)normalizedPassphraseWithError:(NSError * _Nullable * _Nullable)error;
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,34 @@
//
// NSString+NormalizePassphrase.m
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 01.07.20.
// Copyright © 2020 pp. All rights reserved.
//
#import "NSString+NormalizePassphrase.h"
#import "PEPSessionProtocol.h"
/// The maximum number of code points allowed in a passphrase
static NSUInteger s_passphraseMaxNumberOfCodePoints = 250;
@implementation NSString (NormalizePassphrase)
- (NSString * _Nullable)normalizedPassphraseWithError:(NSError * _Nullable * _Nullable)error
{
NSString *normalizedPassphrase = [self precomposedStringWithCanonicalMapping];
if ([normalizedPassphrase length] > s_passphraseMaxNumberOfCodePoints) {
if (error) {
*error = [NSError errorWithDomain:PEPObjCAdapterErrorDomain
code:PEPAdapterErrorPassphraseTooLong
userInfo:nil];
}
return nil;
}
return normalizedPassphrase;
}
@end

@ -0,0 +1,27 @@
//
// PEPIdentity+Engine.h
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 21.10.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PEPIdentity.h"
#import "pEpEngine.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPIdentity (Engine)
/// @Note: If the ident does not contain an address, no PEPIdentity can be constructed.
+ (instancetype _Nullable)fromStruct:(pEp_identity * _Nonnull)identityStruct;
- (pEp_identity *)toStruct;
- (void)overWriteFromStruct:(pEp_identity * _Nonnull)identityStruct;
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,81 @@
//
// PEPIdentity+Engine.m
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 21.10.20.
// Copyright © 2020 pp. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PEPIdentity+Engine.h"
@implementation PEPIdentity (Engine)
+ (instancetype _Nullable)fromStruct:(pEp_identity * _Nonnull)identityStruct
{
PEPIdentity *identity = nil;
if (identityStruct->address && identityStruct->address[0]) {
identity = [[PEPIdentity alloc]
initWithAddress:[NSString stringWithUTF8String:identityStruct->address]];
}
[identity overWriteFromStruct:identityStruct];
return identity;
}
- (pEp_identity *)toStruct
{
pEp_identity *ident = new_identity([[self.address
precomposedStringWithCanonicalMapping] UTF8String],
[[self.fingerPrint
precomposedStringWithCanonicalMapping] UTF8String],
[[self.userID
precomposedStringWithCanonicalMapping] UTF8String],
[[self.userName
precomposedStringWithCanonicalMapping] UTF8String]);
ident->me = self.isOwn;
ident->flags = self.flags;
if (self.language) {
strncpy(ident->lang, [[self.language
precomposedStringWithCanonicalMapping] UTF8String], 2);
}
ident->comm_type = (PEP_comm_type) self.commType;
return ident;
}
- (void)overWriteFromStruct:(pEp_identity * _Nonnull)identityStruct
{
if (identityStruct->address && identityStruct->address[0]) {
self.address = [NSString stringWithUTF8String:identityStruct->address];
}
if (identityStruct->fpr && identityStruct->fpr[0]) {
self.fingerPrint = [NSString stringWithUTF8String:identityStruct->fpr];
}
if (identityStruct->user_id && identityStruct->user_id[0]) {
self.userID = [NSString stringWithUTF8String:identityStruct->user_id];
}
if (identityStruct->username && identityStruct->username[0]) {
self.userName = [NSString stringWithUTF8String:identityStruct->username];
}
if (identityStruct->lang[0]) {
self.language = [NSString stringWithUTF8String:identityStruct->lang];
}
self.commType = (PEPCommType) identityStruct->comm_type;
self.isOwn = identityStruct->me;
self.flags = identityStruct->flags;
}
@end

@ -0,0 +1,28 @@
//
// PEPInternalSession+PassphraseCache.h
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 26.06.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PEPInternalSession.h"
#import "pEpEngine.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPInternalSession (PassphraseCache)
/// Gets the currently cached passwords,
/// and executes the given block after setting each password in turn
/// until it returns something else other than PEP_PASSPHRASE_REQUIRED
/// or PEP_WRONG_PASSPHRASE, or there are no passwords anymore.
/// @param block The status-returning block to execute against different passwords
- (PEPStatus)runWithPasswords:(PEP_STATUS (^)(PEP_SESSION session))block;
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,25 @@
//
// PEPInternalSession+PassphraseCache.m
// PEPObjCAdapterFramework
//
// Created by Dirk Zimmermann on 26.06.20.
// Copyright © 2020 pp. All rights reserved.
//
#import "PEPInternalSession+PassphraseCache.h"
#import "pEpEngine.h"
#import "PEPPassphraseCache.h"
#import "PEPObjCAdapter+Internal.h"
#import "NSString+NormalizePassphrase.h"
#import "PEPPassphraseUtil.h"
@implementation PEPInternalSession (PassphraseCache)
- (PEPStatus)runWithPasswords:(PEP_STATUS (^)(PEP_SESSION session))block
{
return [PEPPassphraseUtil runWithPasswordsSession:self.session block:block];
}
@end

@ -0,0 +1,30 @@
//
// PEPMessage+Engine.h
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 21.10.20.
// Copyright © 2020 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "message.h"
#import "PEPMessage.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPMessage (Engine)
+ (instancetype _Nullable)fromStruct:(message * _Nullable)msg;
- (message * _Nullable)toStruct;
/// Sets recipients with 0 member to nil
- (instancetype)removeEmptyRecipients;
- (void)overWriteFromStruct:(message * _Nonnull)message;
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,216 @@
//
// PEPMessage+Engine.m
// pEpiOSAdapter
//
// Created by Dirk Zimmermann on 21.10.20.
// Copyright © 2020 pp. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PEPMessage+Engine.h"
#import "pEp_string.h"
#import "PEPMessage.h"
#import "PEPIdentity+Engine.h"
#import "NSArray+Engine.h"
@implementation PEPMessage (Engine)
+ (instancetype _Nullable)fromStruct:(message * _Nullable)msg
{
if (!msg) {
return nil;
}
PEPMessage *theMessage = [PEPMessage new];
[theMessage overWriteFromStruct:msg];
return theMessage;
}
- (message * _Nullable)toStruct
{
PEP_msg_direction dir = self.direction == PEPMsgDirectionIncoming ? PEP_dir_incoming : PEP_dir_outgoing;
message *msg = new_message(dir);
if (!msg) {
return NULL;
}
if (self.messageID)
msg->id = new_string([[self.messageID precomposedStringWithCanonicalMapping]
UTF8String], 0);
if (self.shortMessage)
msg->shortmsg = new_string([[self.shortMessage
precomposedStringWithCanonicalMapping] UTF8String], 0);
if (self.sentDate)
msg->sent = new_timestamp([self.sentDate timeIntervalSince1970]);
if (self.receivedDate)
msg->recv = new_timestamp([self.receivedDate timeIntervalSince1970]);
if (self.from)
msg->from = [self.from toStruct];
if (self.to)
msg->to = [self.to toIdentityList];
if (self.receivedBy)
msg->recv_by = [self.receivedBy toStruct];
if (self.cc)
msg->cc = [self.cc toIdentityList];
if (self.bcc)
msg->bcc = [self.bcc toIdentityList];
if (self.replyTo)
msg->reply_to = [self.replyTo toIdentityList];
if (self.inReplyTo)
msg->in_reply_to = [self.inReplyTo toStringList];