diff --git a/enzevalos_iphone.xcodeproj/project.pbxproj b/enzevalos_iphone.xcodeproj/project.pbxproj index 02d892ea2a9d0e336902fc660fd479489556ff9f..5aca85367fa66a7d217b10303c058861829deae8 100644 --- a/enzevalos_iphone.xcodeproj/project.pbxproj +++ b/enzevalos_iphone.xcodeproj/project.pbxproj @@ -33,7 +33,6 @@ 4707092E2189C74200DF71A3 /* alicePublic.asc in Resources */ = {isa = PBXBuildFile; fileRef = 4707092C2189C74200DF71A3 /* alicePublic.asc */; }; 470709302189E1C100DF71A3 /* enc+signedThunderbird.eml in Resources */ = {isa = PBXBuildFile; fileRef = 4707092F2189E1C000DF71A3 /* enc+signedThunderbird.eml */; }; 4707096D1F8F9F4900657F41 /* ExportViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4707096C1F8F9F4900657F41 /* ExportViewController.swift */; }; - 47128FC9240BD3F70019F5CA /* Inbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47128FC8240BD3F70019F5CA /* Inbox.swift */; }; 4715F637202A0248001BFFD0 /* CoreDataTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4715F636202A0248001BFFD0 /* CoreDataTests.swift */; }; 47184C3922F0D8F200712A7A /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47184C3822F0D8F200712A7A /* CFNetwork.framework */; }; 471876F7223FACA900912135 /* BobPWTEST1234.asc in Resources */ = {isa = PBXBuildFile; fileRef = 471876F5223FACA900912135 /* BobPWTEST1234.asc */; }; @@ -65,17 +64,23 @@ 475B00431F7BB6D6006CDD41 /* PersistentKey+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475B00411F7BB6D6006CDD41 /* PersistentKey+CoreDataProperties.swift */; }; 475DF4791F0D54C9009D807F /* Folder+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475DF4771F0D54C9009D807F /* Folder+CoreDataClass.swift */; }; 475DF47A1F0D54C9009D807F /* Folder+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475DF4781F0D54C9009D807F /* Folder+CoreDataProperties.swift */; }; - 4760F438240D59CA0019A184 /* KeyRecordRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F437240D59CA0019A184 /* KeyRecordRow.swift */; }; - 4760F43B240D5C050019A184 /* CiricleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F43A240D5C050019A184 /* CiricleImage.swift */; }; - 4760F43D240D6E2B0019A184 /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F43C240D6E2B0019A184 /* MailView.swift */; }; - 4760F440240E520C0019A184 /* Stroke.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F43F240E520C0019A184 /* Stroke.swift */; }; - 4760F444240E9D150019A184 /* VCSwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F443240E9D150019A184 /* VCSwiftUIView.swift */; }; - 4760F45A241027370019A184 /* InboxCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F459241027370019A184 /* InboxCoordinator.swift */; }; - 4760F46224114DE50019A184 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F46124114DE50019A184 /* SearchBar.swift */; }; - 4760F466241195AB0019A184 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4760F465241195AB0019A184 /* SearchView.swift */; }; 476142081E07E52B00FD5E4F /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476142071E07E52B00FD5E4F /* Theme.swift */; }; 4761420A1E082F9C00FD5E4F /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 476142091E082F9C00FD5E4F /* Settings.bundle */; }; 476373C21E09BA88004D5EFE /* UserData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476373C11E09BA88004D5EFE /* UserData.swift */; }; + 4764067E2416AA6F00C7D426 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 476406092416AA6F00C7D426 /* libcrypto.a */; }; + 476406802416AA6F00C7D426 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4764060B2416AA6F00C7D426 /* libssl.a */; }; + 476406822416AA6F00C7D426 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 4764060F2416AA6F00C7D426 /* LICENSE */; }; + 476406842416AA9100C7D426 /* TestOpenSSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406832416AA9100C7D426 /* TestOpenSSL.swift */; }; + 476406952416B54D00C7D426 /* KeyRecordRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406892416B54D00C7D426 /* KeyRecordRow.swift */; }; + 476406962416B54D00C7D426 /* Inbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068A2416B54D00C7D426 /* Inbox.swift */; }; + 476406972416B54D00C7D426 /* InboxCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068B2416B54D00C7D426 /* InboxCoordinator.swift */; }; + 476406982416B54D00C7D426 /* CiricleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068D2416B54D00C7D426 /* CiricleImage.swift */; }; + 476406992416B54D00C7D426 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068E2416B54D00C7D426 /* SearchView.swift */; }; + 4764069A2416B54D00C7D426 /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068F2416B54D00C7D426 /* MailView.swift */; }; + 4764069C2416B54D00C7D426 /* VCSwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406922416B54D00C7D426 /* VCSwiftUIView.swift */; }; + 4764069D2416B54D00C7D426 /* Stroke.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406942416B54D00C7D426 /* Stroke.swift */; }; + 4764069F2416B5A600C7D426 /* NewOnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764069E2416B5A600C7D426 /* NewOnboardingView.swift */; }; + 476406A12416B5C800C7D426 /* OnboardingIntro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406A02416B5C800C7D426 /* OnboardingIntro.swift */; }; 476801DB218436B600F7F259 /* Autocrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476801DA218436B600F7F259 /* Autocrypt.swift */; }; 476801DE21846A5A00F7F259 /* OutgoingMail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476801DD21846A5A00F7F259 /* OutgoingMail.swift */; }; 476916A0216B86A100491527 /* PersistentMail +CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4769169F216B86A100491527 /* PersistentMail +CoreDataClass.swift */; }; @@ -134,6 +139,12 @@ 47E7BE5F22319B7D00C8EF94 /* SecureMailFromMac.eml in Resources */ = {isa = PBXBuildFile; fileRef = 47E7BE5E22319B7D00C8EF94 /* SecureMailFromMac.eml */; }; 47E7BE6122319B8F00C8EF94 /* PlainMailFromMac.eml in Resources */ = {isa = PBXBuildFile; fileRef = 47E7BE6022319B8F00C8EF94 /* PlainMailFromMac.eml */; }; 47E7BE632232BD0A00C8EF94 /* SignedEncMailFromMac.eml in Resources */ = {isa = PBXBuildFile; fileRef = 47E7BE622232BD0A00C8EF94 /* SignedEncMailFromMac.eml */; }; + 47EABF09241A9C8700774A93 /* AuthenticationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47EABF06241A9C8700774A93 /* AuthenticationModel.swift */; }; + 47EABF0A241A9C8700774A93 /* AuthenticationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47EABF07241A9C8700774A93 /* AuthenticationViewModel.swift */; }; + 47EABF0B241A9C8700774A93 /* AuthenticationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47EABF08241A9C8700774A93 /* AuthenticationScreen.swift */; }; + 47EABF0D241A9CA800774A93 /* MailAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47EABF0C241A9CA800774A93 /* MailAccount.swift */; }; + 47EABF0E2420C63600774A93 /* GeneratedMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C527A0241AA4090030BBC9 /* GeneratedMocks.swift */; }; + 47EABF0F2420C63600774A93 /* AuthenticationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C5279E241A9F7B0030BBC9 /* AuthenticationTests.swift */; }; 47F0376E22A7278A0005C9DE /* accounts.json in Resources */ = {isa = PBXBuildFile; fileRef = 47F0376D22A7278A0005C9DE /* accounts.json */; }; 47F79240203492E3005E7DB6 /* KeyRecord+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F7923E203492E3005E7DB6 /* KeyRecord+CoreDataClass.swift */; }; 47F79241203492E3005E7DB6 /* KeyRecord+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F7923F203492E3005E7DB6 /* KeyRecord+CoreDataProperties.swift */; }; @@ -141,10 +152,7 @@ 47F867E22052B48E00AA832F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 47F867E12052B48E00AA832F /* libz.tbd */; }; 47F867E42052B49800AA832F /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 47F867E32052B49800AA832F /* libbz2.tbd */; }; 50F2E7D66366C779705987A7 /* Pods_enzevalos_iphoneUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF67EF30BB065CC9C0D17940 /* Pods_enzevalos_iphoneUITests.framework */; }; - 7185E9612420F6300048AD91 /* EmailAdressTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7185E9602420F6300048AD91 /* EmailAdressTests.swift */; }; 71DFE5BA240679E80042019C /* HeaderExtractionValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71DFE5B9240679E80042019C /* HeaderExtractionValues.swift */; }; - 74ABD44C240D4E0B00671734 /* NewOnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74ABD44B240D4E0B00671734 /* NewOnboardingView.swift */; }; - 74ABD44F240E635E00671734 /* OnboardingIntro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74ABD44E240E635E00671734 /* OnboardingIntro.swift */; }; 7500EE9D4F3130671F5C1AE2 /* Pods_enzevalos_iphoneTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7977EA7012D8E98D186D5C60 /* Pods_enzevalos_iphoneTests.framework */; }; 8428A8531F4369C0007649A5 /* Gamification.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8428A8521F4369C0007649A5 /* Gamification.storyboard */; }; 8428A8551F4369CF007649A5 /* GamificationElements.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8428A8541F4369CF007649A5 /* GamificationElements.xcassets */; }; @@ -163,8 +171,6 @@ 8428A8711F436A1E007649A5 /* GamificationStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8428A86D1F436A1E007649A5 /* GamificationStatusViewController.swift */; }; 8428A8831F436AC9007649A5 /* GamificationDataUnitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8428A8561F4369EA007649A5 /* GamificationDataUnitTest.swift */; }; 8428A8841F436ACC007649A5 /* GamificationElements.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8428A8541F4369CF007649A5 /* GamificationElements.xcassets */; }; - 976EEBED240D47C3006FE574 /* AuthenticationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976EEBEC240D47C3006FE574 /* AuthenticationViewModel.swift */; }; - 97B2F4D6240D321B000DB34E /* AuthenticationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B2F4D5240D321B000DB34E /* AuthenticationScreen.swift */; }; 988C9C5D240D507A006213F0 /* PhishingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 988C9C5C240D507A006213F0 /* PhishingTests.swift */; }; A102AA8A1EDDB4F40024B457 /* videoOnboarding2.m4v in Resources */ = {isa = PBXBuildFile; fileRef = A102AA891EDDB4E80024B457 /* videoOnboarding2.m4v */; }; A1083A541E8BFEA6003666B7 /* Onboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1083A531E8BFEA6003666B7 /* Onboarding.swift */; }; @@ -310,7 +316,6 @@ 4707092C2189C74200DF71A3 /* alicePublic.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = alicePublic.asc; sourceTree = "<group>"; }; 4707092F2189E1C000DF71A3 /* enc+signedThunderbird.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "enc+signedThunderbird.eml"; sourceTree = "<group>"; }; 4707096C1F8F9F4900657F41 /* ExportViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExportViewController.swift; sourceTree = "<group>"; }; - 47128FC8240BD3F70019F5CA /* Inbox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Inbox.swift; sourceTree = "<group>"; }; 4715F636202A0248001BFFD0 /* CoreDataTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataTests.swift; sourceTree = "<group>"; }; 47184C3822F0D8F200712A7A /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 471876F5223FACA900912135 /* BobPWTEST1234.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BobPWTEST1234.asc; sourceTree = "<group>"; }; @@ -344,17 +349,133 @@ 475B00411F7BB6D6006CDD41 /* PersistentKey+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PersistentKey+CoreDataProperties.swift"; sourceTree = "<group>"; }; 475DF4771F0D54C9009D807F /* Folder+CoreDataClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Folder+CoreDataClass.swift"; sourceTree = "<group>"; }; 475DF4781F0D54C9009D807F /* Folder+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Folder+CoreDataProperties.swift"; sourceTree = "<group>"; }; - 4760F437240D59CA0019A184 /* KeyRecordRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyRecordRow.swift; sourceTree = "<group>"; }; - 4760F43A240D5C050019A184 /* CiricleImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CiricleImage.swift; sourceTree = "<group>"; }; - 4760F43C240D6E2B0019A184 /* MailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = "<group>"; }; - 4760F43F240E520C0019A184 /* Stroke.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stroke.swift; sourceTree = "<group>"; }; - 4760F443240E9D150019A184 /* VCSwiftUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VCSwiftUIView.swift; sourceTree = "<group>"; }; - 4760F459241027370019A184 /* InboxCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxCoordinator.swift; sourceTree = "<group>"; }; - 4760F46124114DE50019A184 /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; }; - 4760F465241195AB0019A184 /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = "<group>"; }; 476142071E07E52B00FD5E4F /* Theme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = "<group>"; }; 476142091E082F9C00FD5E4F /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; }; 476373C11E09BA88004D5EFE /* UserData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserData.swift; sourceTree = "<group>"; }; + 476406092416AA6F00C7D426 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcrypto.a; sourceTree = "<group>"; }; + 4764060B2416AA6F00C7D426 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libssl.a; sourceTree = "<group>"; }; + 4764060E2416AA6F00C7D426 /* opensslconf-template.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "opensslconf-template.h"; sourceTree = "<group>"; }; + 4764060F2416AA6F00C7D426 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; }; + 476406112416AA6F00C7D426 /* pem2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem2.h; sourceTree = "<group>"; }; + 476406122416AA6F00C7D426 /* kdf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kdf.h; sourceTree = "<group>"; }; + 476406132416AA6F00C7D426 /* pem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem.h; sourceTree = "<group>"; }; + 476406142416AA6F00C7D426 /* asyncerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asyncerr.h; sourceTree = "<group>"; }; + 476406152416AA6F00C7D426 /* md2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md2.h; sourceTree = "<group>"; }; + 476406162416AA6F00C7D426 /* ssl3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl3.h; sourceTree = "<group>"; }; + 476406172416AA6F00C7D426 /* ossl_typ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ossl_typ.h; sourceTree = "<group>"; }; + 476406182416AA6F00C7D426 /* dtls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtls1.h; sourceTree = "<group>"; }; + 476406192416AA6F00C7D426 /* err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = err.h; sourceTree = "<group>"; }; + 4764061A2416AA6F00C7D426 /* bn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bn.h; sourceTree = "<group>"; }; + 4764061B2416AA6F00C7D426 /* blowfish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = "<group>"; }; + 4764061C2416AA6F00C7D426 /* cms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cms.h; sourceTree = "<group>"; }; + 4764061D2416AA6F00C7D426 /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = "<group>"; }; + 4764061E2416AA6F00C7D426 /* conf_api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf_api.h; sourceTree = "<group>"; }; + 4764061F2416AA6F00C7D426 /* x509.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509.h; sourceTree = "<group>"; }; + 476406202416AA6F00C7D426 /* asn1_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1_mac.h; sourceTree = "<group>"; }; + 476406212416AA6F00C7D426 /* objectserr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objectserr.h; sourceTree = "<group>"; }; + 476406222416AA6F00C7D426 /* opensslconf_ios_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf_ios_x86_64.h; sourceTree = "<group>"; }; + 476406232416AA6F00C7D426 /* cmserr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmserr.h; sourceTree = "<group>"; }; + 476406242416AA6F00C7D426 /* ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = "<group>"; }; + 476406252416AA6F00C7D426 /* opensslconf_tvos_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf_tvos_x86_64.h; sourceTree = "<group>"; }; + 476406262416AA6F00C7D426 /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha.h; sourceTree = "<group>"; }; + 476406272416AA6F00C7D426 /* symhacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = symhacks.h; sourceTree = "<group>"; }; + 476406282416AA6F00C7D426 /* asn1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1.h; sourceTree = "<group>"; }; + 476406292416AA6F00C7D426 /* bioerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bioerr.h; sourceTree = "<group>"; }; + 4764062A2416AA6F00C7D426 /* opensslconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf.h; sourceTree = "<group>"; }; + 4764062B2416AA6F00C7D426 /* bio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bio.h; sourceTree = "<group>"; }; + 4764062C2416AA6F00C7D426 /* rc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc2.h; sourceTree = "<group>"; }; + 4764062D2416AA6F00C7D426 /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = "<group>"; }; + 4764062E2416AA6F00C7D426 /* x509v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3.h; sourceTree = "<group>"; }; + 4764062F2416AA6F00C7D426 /* conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = "<group>"; }; + 476406302416AA6F00C7D426 /* rand_drbg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rand_drbg.h; sourceTree = "<group>"; }; + 476406312416AA6F00C7D426 /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; }; + 476406322416AA6F00C7D426 /* pemerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pemerr.h; sourceTree = "<group>"; }; + 476406332416AA6F00C7D426 /* x509_vfy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509_vfy.h; sourceTree = "<group>"; }; + 476406342416AA6F00C7D426 /* txt_db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = txt_db.h; sourceTree = "<group>"; }; + 476406352416AA6F00C7D426 /* comperr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = comperr.h; sourceTree = "<group>"; }; + 476406362416AA6F00C7D426 /* cterr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cterr.h; sourceTree = "<group>"; }; + 476406372416AA6F00C7D426 /* safestack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safestack.h; sourceTree = "<group>"; }; + 476406382416AA6F00C7D426 /* ecdsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdsa.h; sourceTree = "<group>"; }; + 476406392416AA6F00C7D426 /* sslerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sslerr.h; sourceTree = "<group>"; }; + 4764063A2416AA6F00C7D426 /* rc5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc5.h; sourceTree = "<group>"; }; + 4764063B2416AA6F00C7D426 /* uierr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uierr.h; sourceTree = "<group>"; }; + 4764063C2416AA6F00C7D426 /* x509v3err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3err.h; sourceTree = "<group>"; }; + 4764063D2416AA6F00C7D426 /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = "<group>"; }; + 4764063E2416AA6F00C7D426 /* pkcs12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs12.h; sourceTree = "<group>"; }; + 4764063F2416AA6F00C7D426 /* crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto.h; sourceTree = "<group>"; }; + 476406402416AA6F00C7D426 /* opensslv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslv.h; sourceTree = "<group>"; }; + 476406412416AA6F00C7D426 /* evperr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = evperr.h; sourceTree = "<group>"; }; + 476406422416AA6F00C7D426 /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs7.h; sourceTree = "<group>"; }; + 476406432416AA6F00C7D426 /* obj_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = obj_mac.h; sourceTree = "<group>"; }; + 476406442416AA6F00C7D426 /* ct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ct.h; sourceTree = "<group>"; }; + 476406452416AA6F00C7D426 /* async.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = async.h; sourceTree = "<group>"; }; + 476406462416AA6F00C7D426 /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = "<group>"; }; + 476406472416AA6F00C7D426 /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl.h; sourceTree = "<group>"; }; + 476406482416AA6F00C7D426 /* srp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = srp.h; sourceTree = "<group>"; }; + 476406492416AA6F00C7D426 /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camellia.h; sourceTree = "<group>"; }; + 4764064A2416AA6F00C7D426 /* opensslconf_ios_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf_ios_arm64.h; sourceTree = "<group>"; }; + 4764064B2416AA6F00C7D426 /* dherr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dherr.h; sourceTree = "<group>"; }; + 4764064C2416AA6F00C7D426 /* evp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = evp.h; sourceTree = "<group>"; }; + 4764064D2416AA6F00C7D426 /* e_os2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = e_os2.h; sourceTree = "<group>"; }; + 4764064E2416AA6F00C7D426 /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md4.h; sourceTree = "<group>"; }; + 4764064F2416AA6F00C7D426 /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = "<group>"; }; + 476406502416AA6F00C7D426 /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = "<group>"; }; + 476406512416AA6F00C7D426 /* engineerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engineerr.h; sourceTree = "<group>"; }; + 476406522416AA6F00C7D426 /* comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = comp.h; sourceTree = "<group>"; }; + 476406532416AA6F00C7D426 /* pkcs12err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs12err.h; sourceTree = "<group>"; }; + 476406542416AA6F00C7D426 /* cast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cast.h; sourceTree = "<group>"; }; + 476406552416AA6F00C7D426 /* rc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc4.h; sourceTree = "<group>"; }; + 476406562416AA6F00C7D426 /* stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack.h; sourceTree = "<group>"; }; + 476406572416AA6F00C7D426 /* des.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des.h; sourceTree = "<group>"; }; + 476406582416AA6F00C7D426 /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocsp.h; sourceTree = "<group>"; }; + 476406592416AA6F00C7D426 /* ec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ec.h; sourceTree = "<group>"; }; + 4764065A2416AA6F00C7D426 /* ecdh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdh.h; sourceTree = "<group>"; }; + 4764065B2416AA6F00C7D426 /* rand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rand.h; sourceTree = "<group>"; }; + 4764065C2416AA6F00C7D426 /* opensslconf_tvos_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf_tvos_arm64.h; sourceTree = "<group>"; }; + 4764065D2416AA6F00C7D426 /* ecerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecerr.h; sourceTree = "<group>"; }; + 4764065E2416AA6F00C7D426 /* ts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ts.h; sourceTree = "<group>"; }; + 4764065F2416AA6F00C7D426 /* cryptoerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cryptoerr.h; sourceTree = "<group>"; }; + 476406602416AA6F00C7D426 /* storeerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = storeerr.h; sourceTree = "<group>"; }; + 476406612416AA6F00C7D426 /* buffererr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffererr.h; sourceTree = "<group>"; }; + 476406622416AA6F00C7D426 /* seed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seed.h; sourceTree = "<group>"; }; + 476406632416AA6F00C7D426 /* modes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modes.h; sourceTree = "<group>"; }; + 476406642416AA6F00C7D426 /* ssl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl2.h; sourceTree = "<group>"; }; + 476406652416AA6F00C7D426 /* tserr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tserr.h; sourceTree = "<group>"; }; + 476406662416AA6F00C7D426 /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rsa.h; sourceTree = "<group>"; }; + 476406672416AA6F00C7D426 /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ripemd.h; sourceTree = "<group>"; }; + 476406682416AA6F00C7D426 /* whrlpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = whrlpool.h; sourceTree = "<group>"; }; + 476406692416AA6F00C7D426 /* tls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tls1.h; sourceTree = "<group>"; }; + 4764066A2416AA6F00C7D426 /* rsaerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rsaerr.h; sourceTree = "<group>"; }; + 4764066B2416AA6F00C7D426 /* randerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = randerr.h; sourceTree = "<group>"; }; + 4764066C2416AA6F00C7D426 /* mdc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mdc2.h; sourceTree = "<group>"; }; + 4764066D2416AA6F00C7D426 /* ocsperr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocsperr.h; sourceTree = "<group>"; }; + 4764066E2416AA6F00C7D426 /* x509err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509err.h; sourceTree = "<group>"; }; + 4764066F2416AA6F00C7D426 /* pkcs7err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs7err.h; sourceTree = "<group>"; }; + 476406702416AA6F00C7D426 /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsa.h; sourceTree = "<group>"; }; + 476406712416AA6F00C7D426 /* kdferr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kdferr.h; sourceTree = "<group>"; }; + 476406722416AA6F00C7D426 /* srtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = srtp.h; sourceTree = "<group>"; }; + 476406732416AA6F00C7D426 /* asn1t.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1t.h; sourceTree = "<group>"; }; + 476406742416AA6F00C7D426 /* dsaerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsaerr.h; sourceTree = "<group>"; }; + 476406752416AA6F00C7D426 /* bnerr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bnerr.h; sourceTree = "<group>"; }; + 476406762416AA6F00C7D426 /* conferr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conferr.h; sourceTree = "<group>"; }; + 476406772416AA6F00C7D426 /* cmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmac.h; sourceTree = "<group>"; }; + 476406782416AA6F00C7D426 /* ebcdic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ebcdic.h; sourceTree = "<group>"; }; + 476406792416AA6F00C7D426 /* opensslconf_ios_arm64e.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf_ios_arm64e.h; sourceTree = "<group>"; }; + 4764067A2416AA6F00C7D426 /* store.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = store.h; sourceTree = "<group>"; }; + 4764067B2416AA6F00C7D426 /* idea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idea.h; sourceTree = "<group>"; }; + 4764067C2416AA6F00C7D426 /* lhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lhash.h; sourceTree = "<group>"; }; + 4764067D2416AA6F00C7D426 /* asn1err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1err.h; sourceTree = "<group>"; }; + 476406832416AA9100C7D426 /* TestOpenSSL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestOpenSSL.swift; sourceTree = "<group>"; }; + 476406892416B54D00C7D426 /* KeyRecordRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyRecordRow.swift; sourceTree = "<group>"; }; + 4764068A2416B54D00C7D426 /* Inbox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Inbox.swift; sourceTree = "<group>"; }; + 4764068B2416B54D00C7D426 /* InboxCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InboxCoordinator.swift; sourceTree = "<group>"; }; + 4764068D2416B54D00C7D426 /* CiricleImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CiricleImage.swift; sourceTree = "<group>"; }; + 4764068E2416B54D00C7D426 /* SearchView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = "<group>"; }; + 4764068F2416B54D00C7D426 /* MailView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = "<group>"; }; + 476406922416B54D00C7D426 /* VCSwiftUIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VCSwiftUIView.swift; sourceTree = "<group>"; }; + 476406942416B54D00C7D426 /* Stroke.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Stroke.swift; sourceTree = "<group>"; }; + 4764069E2416B5A600C7D426 /* NewOnboardingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewOnboardingView.swift; sourceTree = "<group>"; }; + 476406A02416B5C800C7D426 /* OnboardingIntro.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnboardingIntro.swift; sourceTree = "<group>"; }; 476801DA218436B600F7F259 /* Autocrypt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Autocrypt.swift; sourceTree = "<group>"; }; 476801DD21846A5A00F7F259 /* OutgoingMail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OutgoingMail.swift; sourceTree = "<group>"; }; 4769169F216B86A100491527 /* PersistentMail +CoreDataClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PersistentMail +CoreDataClass.swift"; sourceTree = "<group>"; }; @@ -415,6 +536,10 @@ 47E7BE5E22319B7D00C8EF94 /* SecureMailFromMac.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SecureMailFromMac.eml; sourceTree = "<group>"; }; 47E7BE6022319B8F00C8EF94 /* PlainMailFromMac.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PlainMailFromMac.eml; sourceTree = "<group>"; }; 47E7BE622232BD0A00C8EF94 /* SignedEncMailFromMac.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SignedEncMailFromMac.eml; sourceTree = "<group>"; }; + 47EABF06241A9C8700774A93 /* AuthenticationModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationModel.swift; sourceTree = "<group>"; }; + 47EABF07241A9C8700774A93 /* AuthenticationViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationViewModel.swift; sourceTree = "<group>"; }; + 47EABF08241A9C8700774A93 /* AuthenticationScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationScreen.swift; sourceTree = "<group>"; }; + 47EABF0C241A9CA800774A93 /* MailAccount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MailAccount.swift; sourceTree = "<group>"; }; 47F0376D22A7278A0005C9DE /* accounts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = accounts.json; sourceTree = "<group>"; }; 47F7923E203492E3005E7DB6 /* KeyRecord+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyRecord+CoreDataClass.swift"; sourceTree = "<group>"; }; 47F7923F203492E3005E7DB6 /* KeyRecord+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyRecord+CoreDataProperties.swift"; sourceTree = "<group>"; }; @@ -424,10 +549,7 @@ 48C250BB32BF11B683003BA1 /* Pods-enzevalos_iphone-enzevalos_iphoneUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphone-enzevalos_iphoneUITests.debug.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphone-enzevalos_iphoneUITests/Pods-enzevalos_iphone-enzevalos_iphoneUITests.debug.xcconfig"; sourceTree = "<group>"; }; 66E758F271CD65AB3E5FE7A7 /* Pods-enzevalos_iphoneUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneUITests.debug.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphoneUITests/Pods-enzevalos_iphoneUITests.debug.xcconfig"; sourceTree = "<group>"; }; 6EBCCD02AD3B95D8317810E2 /* Pods-enzevalos_iphoneTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneTests.debug.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphoneTests/Pods-enzevalos_iphoneTests.debug.xcconfig"; sourceTree = "<group>"; }; - 7185E9602420F6300048AD91 /* EmailAdressTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailAdressTests.swift; sourceTree = "<group>"; }; 71DFE5B9240679E80042019C /* HeaderExtractionValues.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderExtractionValues.swift; sourceTree = "<group>"; }; - 74ABD44B240D4E0B00671734 /* NewOnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewOnboardingView.swift; sourceTree = "<group>"; }; - 74ABD44E240E635E00671734 /* OnboardingIntro.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingIntro.swift; sourceTree = "<group>"; }; 796D16D79BED5D60B580E602 /* Pods-enzevalos_iphoneUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneUITests.release.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphoneUITests/Pods-enzevalos_iphoneUITests.release.xcconfig"; sourceTree = "<group>"; }; 7977EA7012D8E98D186D5C60 /* Pods_enzevalos_iphoneTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_enzevalos_iphoneTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8428A8521F4369C0007649A5 /* Gamification.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Gamification.storyboard; sourceTree = "<group>"; }; @@ -450,8 +572,10 @@ 8B87EFB6CEAA31452F744015 /* Pods-enzevalos_iphoneUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneUITests.release.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphoneUITests/Pods-enzevalos_iphoneUITests.release.xcconfig"; sourceTree = "<group>"; }; 91B6C9020C660BEA78FAEF28 /* Pods-enzevalos_iphone.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphone.debug.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphone/Pods-enzevalos_iphone.debug.xcconfig"; sourceTree = "<group>"; }; 94EE54279AB591E0CAB8EFD8 /* Pods_enzevalos_iphone.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_enzevalos_iphone.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 976EEBEC240D47C3006FE574 /* AuthenticationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationViewModel.swift; sourceTree = "<group>"; }; - 97B2F4D5240D321B000DB34E /* AuthenticationScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationScreen.swift; sourceTree = "<group>"; }; + 9771AA8B241161190023A096 /* MailAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailAccount.swift; sourceTree = "<group>"; }; + 97AACD2324178C230078A68E /* AuthenticationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationModel.swift; sourceTree = "<group>"; }; + 97C5279E241A9F7B0030BBC9 /* AuthenticationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationTests.swift; sourceTree = "<group>"; }; + 97C527A0241AA4090030BBC9 /* GeneratedMocks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GeneratedMocks.swift; path = enzevalos_iphoneTests/GeneratedMocks.swift; sourceTree = SOURCE_ROOT; }; 988C9C5C240D507A006213F0 /* PhishingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhishingTests.swift; sourceTree = "<group>"; }; 9A132EDE8BCA06ACDB505C22 /* Pods-enzevalos_iphoneUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneUITests.debug.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphoneUITests/Pods-enzevalos_iphoneUITests.debug.xcconfig"; sourceTree = "<group>"; }; 9B3D62838C729BAC6832270A /* Pods-enzevalos_iphone-AdHoc.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphone-AdHoc.debug.xcconfig"; path = "../enzevalos_iphone_workspace/Pods/Target Support Files/Pods-enzevalos_iphone-AdHoc/Pods-enzevalos_iphone-AdHoc.debug.xcconfig"; sourceTree = "<group>"; }; @@ -575,8 +699,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 476406802416AA6F00C7D426 /* libssl.a in Frameworks */, 47184C3922F0D8F200712A7A /* CFNetwork.framework in Frameworks */, 47CEF4ED2052C3E700887CDB /* ObjectivePGP.framework in Frameworks */, + 4764067E2416AA6F00C7D426 /* libcrypto.a in Frameworks */, 47F867E42052B49800AA832F /* libbz2.tbd in Frameworks */, 47F867E22052B48E00AA832F /* libz.tbd in Frameworks */, 47F867E02052B47C00AA832F /* Security.framework in Frameworks */, @@ -695,65 +821,208 @@ path = testKeys; sourceTree = "<group>"; }; - 47128FC6240BD3CC0019F5CA /* SwiftUI */ = { + 472F39921E279792009260FB /* protocols */ = { isa = PBXGroup; children = ( - 4760F439240D5BEF0019A184 /* SupportingViews */, - 47128FC7240BD3D90019F5CA /* Inbox */, + 472F398D1E251B8D009260FB /* MailAddress.swift */, + 472F39851E1FA34E009260FB /* Record.swift */, + 472F39891E251787009260FB /* Contact.swift */, + 47691A891ECB56D1004BCFC5 /* Mail.swift */, ); - path = SwiftUI; + name = protocols; sourceTree = "<group>"; }; - 47128FC7240BD3D90019F5CA /* Inbox */ = { + 476403FA2413F95300C7D426 /* OpenSSL */ = { isa = PBXGroup; children = ( - 47128FC8240BD3F70019F5CA /* Inbox.swift */, - 4760F437240D59CA0019A184 /* KeyRecordRow.swift */, - 4760F459241027370019A184 /* InboxCoordinator.swift */, + 4764060D2416AA6F00C7D426 /* include */, + 476406082416AA6F00C7D426 /* lib */, ); - path = Inbox; + path = OpenSSL; sourceTree = "<group>"; }; - 472F39921E279792009260FB /* protocols */ = { + 476406082416AA6F00C7D426 /* lib */ = { isa = PBXGroup; children = ( - 472F398D1E251B8D009260FB /* MailAddress.swift */, - 472F39851E1FA34E009260FB /* Record.swift */, - 472F39891E251787009260FB /* Contact.swift */, - 47691A891ECB56D1004BCFC5 /* Mail.swift */, + 476406092416AA6F00C7D426 /* libcrypto.a */, + 4764060B2416AA6F00C7D426 /* libssl.a */, ); - name = protocols; + path = lib; sourceTree = "<group>"; }; - 4760F439240D5BEF0019A184 /* SupportingViews */ = { + 4764060D2416AA6F00C7D426 /* include */ = { isa = PBXGroup; children = ( - 4760F44C240F9C010019A184 /* SwiftUI to UIKit */, - 4760F43E240E52010019A184 /* Geometry */, - 4760F43A240D5C050019A184 /* CiricleImage.swift */, - 4760F43C240D6E2B0019A184 /* MailView.swift */, - 4760F465241195AB0019A184 /* SearchView.swift */, + 4764060E2416AA6F00C7D426 /* opensslconf-template.h */, + 4764060F2416AA6F00C7D426 /* LICENSE */, + 476406102416AA6F00C7D426 /* openssl */, ); - path = SupportingViews; + path = include; + sourceTree = "<group>"; + }; + 476406102416AA6F00C7D426 /* openssl */ = { + isa = PBXGroup; + children = ( + 476406112416AA6F00C7D426 /* pem2.h */, + 476406122416AA6F00C7D426 /* kdf.h */, + 476406132416AA6F00C7D426 /* pem.h */, + 476406142416AA6F00C7D426 /* asyncerr.h */, + 476406152416AA6F00C7D426 /* md2.h */, + 476406162416AA6F00C7D426 /* ssl3.h */, + 476406172416AA6F00C7D426 /* ossl_typ.h */, + 476406182416AA6F00C7D426 /* dtls1.h */, + 476406192416AA6F00C7D426 /* err.h */, + 4764061A2416AA6F00C7D426 /* bn.h */, + 4764061B2416AA6F00C7D426 /* blowfish.h */, + 4764061C2416AA6F00C7D426 /* cms.h */, + 4764061D2416AA6F00C7D426 /* engine.h */, + 4764061E2416AA6F00C7D426 /* conf_api.h */, + 4764061F2416AA6F00C7D426 /* x509.h */, + 476406202416AA6F00C7D426 /* asn1_mac.h */, + 476406212416AA6F00C7D426 /* objectserr.h */, + 476406222416AA6F00C7D426 /* opensslconf_ios_x86_64.h */, + 476406232416AA6F00C7D426 /* cmserr.h */, + 476406242416AA6F00C7D426 /* ui.h */, + 476406252416AA6F00C7D426 /* opensslconf_tvos_x86_64.h */, + 476406262416AA6F00C7D426 /* sha.h */, + 476406272416AA6F00C7D426 /* symhacks.h */, + 476406282416AA6F00C7D426 /* asn1.h */, + 476406292416AA6F00C7D426 /* bioerr.h */, + 4764062A2416AA6F00C7D426 /* opensslconf.h */, + 4764062B2416AA6F00C7D426 /* bio.h */, + 4764062C2416AA6F00C7D426 /* rc2.h */, + 4764062D2416AA6F00C7D426 /* dh.h */, + 4764062E2416AA6F00C7D426 /* x509v3.h */, + 4764062F2416AA6F00C7D426 /* conf.h */, + 476406302416AA6F00C7D426 /* rand_drbg.h */, + 476406312416AA6F00C7D426 /* md5.h */, + 476406322416AA6F00C7D426 /* pemerr.h */, + 476406332416AA6F00C7D426 /* x509_vfy.h */, + 476406342416AA6F00C7D426 /* txt_db.h */, + 476406352416AA6F00C7D426 /* comperr.h */, + 476406362416AA6F00C7D426 /* cterr.h */, + 476406372416AA6F00C7D426 /* safestack.h */, + 476406382416AA6F00C7D426 /* ecdsa.h */, + 476406392416AA6F00C7D426 /* sslerr.h */, + 4764063A2416AA6F00C7D426 /* rc5.h */, + 4764063B2416AA6F00C7D426 /* uierr.h */, + 4764063C2416AA6F00C7D426 /* x509v3err.h */, + 4764063D2416AA6F00C7D426 /* objects.h */, + 4764063E2416AA6F00C7D426 /* pkcs12.h */, + 4764063F2416AA6F00C7D426 /* crypto.h */, + 476406402416AA6F00C7D426 /* opensslv.h */, + 476406412416AA6F00C7D426 /* evperr.h */, + 476406422416AA6F00C7D426 /* pkcs7.h */, + 476406432416AA6F00C7D426 /* obj_mac.h */, + 476406442416AA6F00C7D426 /* ct.h */, + 476406452416AA6F00C7D426 /* async.h */, + 476406462416AA6F00C7D426 /* buffer.h */, + 476406472416AA6F00C7D426 /* ssl.h */, + 476406482416AA6F00C7D426 /* srp.h */, + 476406492416AA6F00C7D426 /* camellia.h */, + 4764064A2416AA6F00C7D426 /* opensslconf_ios_arm64.h */, + 4764064B2416AA6F00C7D426 /* dherr.h */, + 4764064C2416AA6F00C7D426 /* evp.h */, + 4764064D2416AA6F00C7D426 /* e_os2.h */, + 4764064E2416AA6F00C7D426 /* md4.h */, + 4764064F2416AA6F00C7D426 /* hmac.h */, + 476406502416AA6F00C7D426 /* aes.h */, + 476406512416AA6F00C7D426 /* engineerr.h */, + 476406522416AA6F00C7D426 /* comp.h */, + 476406532416AA6F00C7D426 /* pkcs12err.h */, + 476406542416AA6F00C7D426 /* cast.h */, + 476406552416AA6F00C7D426 /* rc4.h */, + 476406562416AA6F00C7D426 /* stack.h */, + 476406572416AA6F00C7D426 /* des.h */, + 476406582416AA6F00C7D426 /* ocsp.h */, + 476406592416AA6F00C7D426 /* ec.h */, + 4764065A2416AA6F00C7D426 /* ecdh.h */, + 4764065B2416AA6F00C7D426 /* rand.h */, + 4764065C2416AA6F00C7D426 /* opensslconf_tvos_arm64.h */, + 4764065D2416AA6F00C7D426 /* ecerr.h */, + 4764065E2416AA6F00C7D426 /* ts.h */, + 4764065F2416AA6F00C7D426 /* cryptoerr.h */, + 476406602416AA6F00C7D426 /* storeerr.h */, + 476406612416AA6F00C7D426 /* buffererr.h */, + 476406622416AA6F00C7D426 /* seed.h */, + 476406632416AA6F00C7D426 /* modes.h */, + 476406642416AA6F00C7D426 /* ssl2.h */, + 476406652416AA6F00C7D426 /* tserr.h */, + 476406662416AA6F00C7D426 /* rsa.h */, + 476406672416AA6F00C7D426 /* ripemd.h */, + 476406682416AA6F00C7D426 /* whrlpool.h */, + 476406692416AA6F00C7D426 /* tls1.h */, + 4764066A2416AA6F00C7D426 /* rsaerr.h */, + 4764066B2416AA6F00C7D426 /* randerr.h */, + 4764066C2416AA6F00C7D426 /* mdc2.h */, + 4764066D2416AA6F00C7D426 /* ocsperr.h */, + 4764066E2416AA6F00C7D426 /* x509err.h */, + 4764066F2416AA6F00C7D426 /* pkcs7err.h */, + 476406702416AA6F00C7D426 /* dsa.h */, + 476406712416AA6F00C7D426 /* kdferr.h */, + 476406722416AA6F00C7D426 /* srtp.h */, + 476406732416AA6F00C7D426 /* asn1t.h */, + 476406742416AA6F00C7D426 /* dsaerr.h */, + 476406752416AA6F00C7D426 /* bnerr.h */, + 476406762416AA6F00C7D426 /* conferr.h */, + 476406772416AA6F00C7D426 /* cmac.h */, + 476406782416AA6F00C7D426 /* ebcdic.h */, + 476406792416AA6F00C7D426 /* opensslconf_ios_arm64e.h */, + 4764067A2416AA6F00C7D426 /* store.h */, + 4764067B2416AA6F00C7D426 /* idea.h */, + 4764067C2416AA6F00C7D426 /* lhash.h */, + 4764067D2416AA6F00C7D426 /* asn1err.h */, + ); + path = openssl; sourceTree = "<group>"; }; - 4760F43E240E52010019A184 /* Geometry */ = { + 476406872416B54D00C7D426 /* SwiftUI */ = { isa = PBXGroup; children = ( - 4760F43F240E520C0019A184 /* Stroke.swift */, + 476406882416B54D00C7D426 /* Inbox */, + 4764068C2416B54D00C7D426 /* SupportingViews */, ); - path = Geometry; + path = SwiftUI; + sourceTree = "<group>"; + }; + 476406882416B54D00C7D426 /* Inbox */ = { + isa = PBXGroup; + children = ( + 476406892416B54D00C7D426 /* KeyRecordRow.swift */, + 4764068A2416B54D00C7D426 /* Inbox.swift */, + 4764068B2416B54D00C7D426 /* InboxCoordinator.swift */, + ); + path = Inbox; sourceTree = "<group>"; }; - 4760F44C240F9C010019A184 /* SwiftUI to UIKit */ = { + 4764068C2416B54D00C7D426 /* SupportingViews */ = { isa = PBXGroup; children = ( - 4760F443240E9D150019A184 /* VCSwiftUIView.swift */, - 4760F46124114DE50019A184 /* SearchBar.swift */, + 4764068D2416B54D00C7D426 /* CiricleImage.swift */, + 4764068E2416B54D00C7D426 /* SearchView.swift */, + 4764068F2416B54D00C7D426 /* MailView.swift */, + 476406902416B54D00C7D426 /* SwiftUI to UIKit */, + 476406932416B54D00C7D426 /* Geometry */, + ); + path = SupportingViews; + sourceTree = "<group>"; + }; + 476406902416B54D00C7D426 /* SwiftUI to UIKit */ = { + isa = PBXGroup; + children = ( + 476406922416B54D00C7D426 /* VCSwiftUIView.swift */, ); path = "SwiftUI to UIKit"; sourceTree = "<group>"; }; + 476406932416B54D00C7D426 /* Geometry */ = { + isa = PBXGroup; + children = ( + 476406942416B54D00C7D426 /* Stroke.swift */, + ); + path = Geometry; + sourceTree = "<group>"; + }; 476EEF9722A872BF00BB4EF7 /* enzevalos_iphoneUITests */ = { isa = PBXGroup; children = ( @@ -856,29 +1125,32 @@ name = data; sourceTree = "<group>"; }; - 47F0376C22A7278A0005C9DE /* private */ = { + 47EABF04241A9C6400774A93 /* Recovered References */ = { isa = PBXGroup; children = ( - 47F0376D22A7278A0005C9DE /* accounts.json */, + 97AACD2324178C230078A68E /* AuthenticationModel.swift */, + 9771AA8B241161190023A096 /* MailAccount.swift */, ); - path = private; + name = "Recovered References"; sourceTree = "<group>"; }; - 7185E95F2420F5EF0048AD91 /* phishing */ = { + 47EABF05241A9C7000774A93 /* Authentication */ = { isa = PBXGroup; children = ( - 988C9C5C240D507A006213F0 /* PhishingTests.swift */, - 7185E9602420F6300048AD91 /* EmailAdressTests.swift */, + 47EABF0C241A9CA800774A93 /* MailAccount.swift */, + 47EABF06241A9C8700774A93 /* AuthenticationModel.swift */, + 47EABF08241A9C8700774A93 /* AuthenticationScreen.swift */, + 47EABF07241A9C8700774A93 /* AuthenticationViewModel.swift */, ); - path = phishing; + name = Authentication; sourceTree = "<group>"; }; - 74ABD44D240E633700671734 /* SwiftUI */ = { + 47F0376C22A7278A0005C9DE /* private */ = { isa = PBXGroup; children = ( - 74ABD44E240E635E00671734 /* OnboardingIntro.swift */, + 47F0376D22A7278A0005C9DE /* accounts.json */, ); - name = SwiftUI; + path = private; sourceTree = "<group>"; }; 78280F99990BFF65543B7F0B /* Frameworks */ = { @@ -948,13 +1220,13 @@ name = Data; sourceTree = "<group>"; }; - 97B2F4D4240D31E6000DB34E /* authentication */ = { + 97C5279D241A9F690030BBC9 /* authentication */ = { isa = PBXGroup; children = ( - 97B2F4D5240D321B000DB34E /* AuthenticationScreen.swift */, - 976EEBEC240D47C3006FE574 /* AuthenticationViewModel.swift */, + 97C527A0241AA4090030BBC9 /* GeneratedMocks.swift */, + 97C5279E241A9F7B0030BBC9 /* AuthenticationTests.swift */, ); - name = authentication; + path = authentication; sourceTree = "<group>"; }; A10DE41E1EFAA140005E8189 /* folders */ = { @@ -985,6 +1257,7 @@ 47A5D6E12294BF3A0084F81D /* TempKey.swift */, 475B00311F7B9565006CDD41 /* Cryptography.swift */, 475B00321F7B9565006CDD41 /* CryptoObject.swift */, + 476406832416AA9100C7D426 /* TestOpenSSL.swift */, ); name = Encryption; sourceTree = "<group>"; @@ -1007,6 +1280,7 @@ A13526761D955BDF00D3BFE1 /* Products */, 24472862977D71D3F0AD0D58 /* Pods */, 78280F99990BFF65543B7F0B /* Frameworks */, + 47EABF04241A9C6400774A93 /* Recovered References */, ); sourceTree = "<group>"; }; @@ -1023,8 +1297,9 @@ A13526771D955BDF00D3BFE1 /* enzevalos_iphone */ = { isa = PBXGroup; children = ( - 47128FC6240BD3CC0019F5CA /* SwiftUI */, - 97B2F4D4240D31E6000DB34E /* authentication */, + 47EABF05241A9C7000774A93 /* Authentication */, + 476406872416B54D00C7D426 /* SwiftUI */, + 476403FA2413F95300C7D426 /* OpenSSL */, A1B9999D21DE7CD2002563F6 /* Travel */, 477548DC21F5DA46000B22A8 /* mail */, F1866C84201F703200B72453 /* OAuth */, @@ -1065,7 +1340,8 @@ A135268F1D955BE000D3BFE1 /* enzevalos_iphoneTests */ = { isa = PBXGroup; children = ( - 7185E95F2420F5EF0048AD91 /* phishing */, + 97C5279D241A9F690030BBC9 /* authentication */, + 988C9C5C240D507A006213F0 /* PhishingTests.swift */, 47F0376C22A7278A0005C9DE /* private */, 470709202189C24800DF71A3 /* testKeys */, 470709112189BB4A00DF71A3 /* testMails */, @@ -1145,14 +1421,14 @@ A18C76851E8185ED00B21414 /* onboarding */ = { isa = PBXGroup; children = ( - 74ABD44D240E633700671734 /* SwiftUI */, + 476406A02416B5C800C7D426 /* OnboardingIntro.swift */, + 4764069E2416B5A600C7D426 /* NewOnboardingView.swift */, 479C649821F45DAF00A01071 /* HideShowPasswordTextField.swift */, 479C649921F45DAF00A01071 /* PasswordToggleVisibilityView.swift */, A1083A531E8BFEA6003666B7 /* Onboarding.swift */, 4751C6F72343B377006B2A4D /* Onboarding.Video.Click.Eng.m4v */, A102AA891EDDB4E80024B457 /* videoOnboarding2.m4v */, A1C62E992018F716000E5273 /* OnboardingValueState.swift */, - 74ABD44B240D4E0B00671734 /* NewOnboardingView.swift */, ); name = onboarding; sourceTree = "<group>"; @@ -1333,8 +1609,6 @@ dependencies = ( ); name = enzevalos_iphone; - packageProductDependencies = ( - ); productName = enzevalos_iphone; productReference = A13526751D955BDF00D3BFE1 /* enzevalos_iphone.app */; productType = "com.apple.product-type.application"; @@ -1344,6 +1618,7 @@ buildConfigurationList = A13526A31D955BE000D3BFE1 /* Build configuration list for PBXNativeTarget "enzevalos_iphoneTests" */; buildPhases = ( D6F0EB205D61EA8C8A045390 /* [CP] Check Pods Manifest.lock */, + 47EABF01241A99DA00774A93 /* Cockoo run script */, A13526881D955BE000D3BFE1 /* Sources */, A13526891D955BE000D3BFE1 /* Frameworks */, A135268A1D955BE000D3BFE1 /* Resources */, @@ -1416,8 +1691,6 @@ de, ); mainGroup = A135266C1D955BDF00D3BFE1; - packageReferences = ( - ); productRefGroup = A13526761D955BDF00D3BFE1 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -1451,6 +1724,7 @@ 4761420A1E082F9C00FD5E4F /* Settings.bundle in Resources */, A16BA2121E0439B6005E29E3 /* providers.json in Resources */, F12D8DBB2069422A0068788E /* About.storyboard in Resources */, + 476406822416AA6F00C7D426 /* LICENSE in Resources */, 477670C4228453FB00043604 /* ButtonCell.xib in Resources */, 47E7377022845F3A00972401 /* KeyViews.storyboard in Resources */, 4751C6F82343B37C006B2A4D /* Onboarding.Video.Click.Eng.m4v in Resources */, @@ -1528,6 +1802,7 @@ "${PODS_ROOT}/Target Support Files/Pods-enzevalos_iphone/Pods-enzevalos_iphone-frameworks.sh", "${BUILT_PRODUCTS_DIR}/AppAuth/AppAuth.framework", "${BUILT_PRODUCTS_DIR}/BZipCompression/BZipCompression.framework", + "${BUILT_PRODUCTS_DIR}/Cuckoo/Cuckoo.framework", "${BUILT_PRODUCTS_DIR}/FrameAccessor/FrameAccessor.framework", "${BUILT_PRODUCTS_DIR}/GTMAppAuth/GTMAppAuth.framework", "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework", @@ -1541,6 +1816,7 @@ outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppAuth.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BZipCompression.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Cuckoo.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FrameAccessor.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMAppAuth.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework", @@ -1555,6 +1831,24 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-enzevalos_iphone/Pods-enzevalos_iphone-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 47EABF01241A99DA00774A93 /* Cockoo run script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Cockoo run script"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Define output file. Change \"${PROJECT_DIR}/${PROJECT_NAME}Tests\" to your test's root source folder, if it's not the default name.\nOUTPUT_FILE=\"${PROJECT_DIR}/${PROJECT_NAME}Tests/GeneratedMocks.swift\"\necho \"Generated Mocks File = ${OUTPUT_FILE}\"\n\n# Define input directory. Change \"${PROJECT_DIR}/${PROJECT_NAME}\" to your project's root source folder, if it's not the default name.\nINPUT_DIR=\"${PROJECT_DIR}/${PROJECT_NAME}\"\necho \"Mocks Input Directory = ${INPUT_DIR}\"\n\n# Generate mock files, include as many input files as you'd like to create mocks for.\n\"${PODS_ROOT}/Cuckoo/run\" generate --testable \"${PROJECT_NAME}\" \\\n--output \"${OUTPUT_FILE}\" \\\n\"${INPUT_DIR}/AuthenticationModel.swift\" \\\n\"${INPUT_DIR}/AuthenticationViewModel.swift\" \n# ... and so forth, the last line should never end with a backslash\n\n# After running once, locate `GeneratedMocks.swift` and drag it into your Xcode test target group.\n"; + }; 47F867E52052B4B500AA832F /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 8; @@ -1650,10 +1944,11 @@ A1C3270E1DB907D900CE2ED5 /* TextFormatter.swift in Sources */, F12041FD1DA409A5002E4940 /* ListViewCell.swift in Sources */, A1EFF93321E6655C003BB240 /* IntroTableView.swift in Sources */, + 4764069A2416B54D00C7D426 /* MailView.swift in Sources */, A1E2324E1F0FA41A00DC9D40 /* FolderListCell.swift in Sources */, A1F8541021E8A60800614514 /* IntroSecretViewController.swift in Sources */, A1ACDD0921EB9C4C00A059D0 /* IntroInputViewController.swift in Sources */, - 4760F43B240D5C050019A184 /* CiricleImage.swift in Sources */, + 476406952416B54D00C7D426 /* KeyRecordRow.swift in Sources */, 476916A0216B86A100491527 /* PersistentMail +CoreDataClass.swift in Sources */, 4751C7002344D37C006B2A4D /* SecretKey+CoreDataClass.swift in Sources */, A1AEBA5921E808CB00C84E59 /* IntroYesNoViewController.swift in Sources */, @@ -1662,9 +1957,9 @@ 8428A8651F436A11007649A5 /* BadgeCaseCollectionViewCell.swift in Sources */, 472F39811E1E5347009260FB /* Mail_Address+CoreDataClass.swift in Sources */, A1EB05821D95685B008659C1 /* CollectionDataDelegate.swift in Sources */, - 4760F43D240D6E2B0019A184 /* MailView.swift in Sources */, 47A5D6E22294BF3B0084F81D /* TempKey.swift in Sources */, 4751C7012344D37C006B2A4D /* SecretKey+CoreDataProperties.swift in Sources */, + 476406992416B54D00C7D426 /* SearchView.swift in Sources */, 47D1302B1F7CEE6D007B14DF /* DebugSettings.swift in Sources */, A1EB05801D956851008659C1 /* SendViewController.swift in Sources */, 479C649B21F45DAF00A01071 /* PasswordToggleVisibilityView.swift in Sources */, @@ -1677,31 +1972,31 @@ 8428A8691F436A11007649A5 /* UserNameGamificationTableViewCell.swift in Sources */, A114E4321FACB23000E40243 /* StringExtension.swift in Sources */, 472F398C1E2519C8009260FB /* CNContactExtension.swift in Sources */, + 476406A12416B5C800C7D426 /* OnboardingIntro.swift in Sources */, + 476406972416B54D00C7D426 /* InboxCoordinator.swift in Sources */, F113C3851F30D06800E7F1D6 /* QRScannerView.swift in Sources */, 477670C6228454F700043604 /* ButtonCell.swift in Sources */, F18B44601E704C550080C041 /* ReplaceSegue.swift in Sources */, - 4760F46224114DE50019A184 /* SearchBar.swift in Sources */, 8428A8661F436A11007649A5 /* ArrowTableViewCell.swift in Sources */, F1ACF21C1E0C1C6800C1B843 /* ContactViewController.swift in Sources */, + 476406962416B54D00C7D426 /* Inbox.swift in Sources */, 475B00351F7B9565006CDD41 /* CryptoObject.swift in Sources */, A1EB057E1D956848008659C1 /* VENDataDelegate.swift in Sources */, 4706D661225CD21D00B3F1D3 /* ExportKeyHelper.swift in Sources */, 8428A86F1F436A1E007649A5 /* InviteFriendViewController.swift in Sources */, A1735DFA205AB88500B336DB /* SendViewState.swift in Sources */, 475B00331F7B9565006CDD41 /* SwiftPGP.swift in Sources */, - 4760F444240E9D150019A184 /* VCSwiftUIView.swift in Sources */, 477548E421F77BA0000B22A8 /* StudyParameterProtocol.swift in Sources */, 47A5D6E42294BFF50084F81D /* Logger.swift in Sources */, 3EB4FAA420120096001D0625 /* DialogOption.swift in Sources */, F14239C11F30A99C00998A83 /* QRCodeGenerator.swift in Sources */, + 4764069C2416B54D00C7D426 /* VCSwiftUIView.swift in Sources */, 478154A921FF3FF400A931EC /* Invitation.swift in Sources */, 47A2A56E2350A4EF0013883D /* MoreInformationViewController.swift in Sources */, - 97B2F4D6240D321B000DB34E /* AuthenticationScreen.swift in Sources */, F1AF938F1E2D04BA00755128 /* CustomCells.swift in Sources */, 8428A8711F436A1E007649A5 /* GamificationStatusViewController.swift in Sources */, F1866C86201F707200B72453 /* EmailHelper.m in Sources */, 47F79241203492E3005E7DB6 /* KeyRecord+CoreDataProperties.swift in Sources */, - 976EEBED240D47C3006FE574 /* AuthenticationViewModel.swift in Sources */, A10DE4201EFAA2CE005E8189 /* FolderViewController.swift in Sources */, 3EB4FA9F2012007C001D0625 /* DialogViewController.swift in Sources */, 476142081E07E52B00FD5E4F /* Theme.swift in Sources */, @@ -1710,10 +2005,7 @@ 476801DB218436B600F7F259 /* Autocrypt.swift in Sources */, A1EB057A1D956829008659C1 /* ContactCell.swift in Sources */, A12FC23120221A1400196008 /* ExportInfoViewController.swift in Sources */, - 74ABD44F240E635E00671734 /* OnboardingIntro.swift in Sources */, 4751C6EE233CA583006B2A4D /* DateExtension.swift in Sources */, - 74ABD44C240D4E0B00671734 /* NewOnboardingView.swift in Sources */, - 4760F440240E520C0019A184 /* Stroke.swift in Sources */, 477548DE21F5DABE000B22A8 /* MailServerConnectionError.swift in Sources */, 475DF47A1F0D54C9009D807F /* Folder+CoreDataProperties.swift in Sources */, 475B00431F7BB6D6006CDD41 /* PersistentKey+CoreDataProperties.swift in Sources */, @@ -1732,6 +2024,7 @@ 475B00421F7BB6D6006CDD41 /* PersistentKey+CoreDataClass.swift in Sources */, A10DAA5721F37600005D8BBB /* IntroInfoButton.swift in Sources */, 47A2A57223599D180013883D /* FeedbackButtonHelper.swift in Sources */, + 476406842416AA9100C7D426 /* TestOpenSSL.swift in Sources */, 3EC35F2420037651008BDF95 /* InvitationHelper.swift in Sources */, A1B49E6421E55ECD00ED86FC /* IntroPageViewController.swift in Sources */, A1D5076F1E80257A00B68B38 /* KeyViewController.swift in Sources */, @@ -1741,7 +2034,6 @@ A1EB05841D956867008659C1 /* TableViewDataDelegate.swift in Sources */, 8428A85E1F436A05007649A5 /* CircleView.swift in Sources */, A182182C21E5072200918A29 /* IntroDescriptionViewController.swift in Sources */, - 47128FC9240BD3F70019F5CA /* Inbox.swift in Sources */, F1C7AC821FED6473007629DB /* AboutViewController.swift in Sources */, A182183421E51DD200918A29 /* IntroContactCell.swift in Sources */, 472F397C1E1D0B0B009260FB /* PersistentMail +CoreDataProperties.swift in Sources */, @@ -1750,6 +2042,7 @@ A1EB05961D956939008659C1 /* InboxTableViewCell.swift in Sources */, 47F79240203492E3005E7DB6 /* KeyRecord+CoreDataClass.swift in Sources */, A1083A541E8BFEA6003666B7 /* Onboarding.swift in Sources */, + 476406982416B54D00C7D426 /* CiricleImage.swift in Sources */, A111F6AD1FA77B170060AFDE /* LoggerDetail.swift in Sources */, A13526791D955BDF00D3BFE1 /* AppDelegate.swift in Sources */, 476916A2216B86CF00491527 /* EnzevalosContact+CoreDataClass.swift in Sources */, @@ -1757,19 +2050,20 @@ 8428A85F1F436A05007649A5 /* GamificationData.swift in Sources */, 475DF4791F0D54C9009D807F /* Folder+CoreDataClass.swift in Sources */, A15D215B223BE5F4003E0CE0 /* TempAttachment.swift in Sources */, - 4760F438240D59CA0019A184 /* KeyRecordRow.swift in Sources */, 4706D65F225B7B6B00B3F1D3 /* ItunesHandler.swift in Sources */, 3EC35F2D200376A1008BDF95 /* SendViewController+Invitation.swift in Sources */, + 47EABF0A241A9C8700774A93 /* AuthenticationViewModel.swift in Sources */, 475B00341F7B9565006CDD41 /* Cryptography.swift in Sources */, A1EB057C1D956838008659C1 /* MailHandler.swift in Sources */, A182182E21E50D8D00918A29 /* IntroButtonViewController.swift in Sources */, + 4764069D2416B54D00C7D426 /* Stroke.swift in Sources */, 478AF715222FD5C600AEF69E /* IncomingMail.swift in Sources */, + 47EABF09241A9C8700774A93 /* AuthenticationModel.swift in Sources */, 47C036FF2347C0F5006295E8 /* ImportKeyOverviewController.swift in Sources */, A1EB05881D956879008659C1 /* AddressHandler.swift in Sources */, 472F39701E14F75C009260FB /* DataHandler.swift in Sources */, A1C62E9A2018F716000E5273 /* OnboardingValueState.swift in Sources */, A1EB05901D956923008659C1 /* ReadViewController.swift in Sources */, - 4760F466241195AB0019A184 /* SearchView.swift in Sources */, 0E6551A72406A42300DE30FC /* SearchHelper.swift in Sources */, 472F398E1E251B8D009260FB /* MailAddress.swift in Sources */, A198D2292056B384004CC838 /* SendViewDelegate.swift in Sources */, @@ -1778,13 +2072,15 @@ 474994022261E4E6000F8DA5 /* SimpleSendIcon.swift in Sources */, A12F91D821F3A99800AB0589 /* NSLayoutConstraintExtension.swift in Sources */, 71DFE5BA240679E80042019C /* HeaderExtractionValues.swift in Sources */, + 47EABF0D241A9CA800774A93 /* MailAccount.swift in Sources */, A18E7D771FBDE5D9002F7CC9 /* LoggingEventType.swift in Sources */, F1984D741E1E92B300804E1E /* LabelStyleKit.swift in Sources */, A1FA44A721E10E1400DB02AC /* TravelHandler.swift in Sources */, 47E7376E22845EC400972401 /* SecretKeyTableViewController.swift in Sources */, 478154A721FF3F0900A931EC /* Warning.swift in Sources */, + 4764069F2416B5A600C7D426 /* NewOnboardingView.swift in Sources */, + 47EABF0B241A9C8700774A93 /* AuthenticationScreen.swift in Sources */, 8428A8681F436A11007649A5 /* SubBadgeTableViewCell.swift in Sources */, - 4760F45A241027370019A184 /* InboxCoordinator.swift in Sources */, A1EB05861D956872008659C1 /* FrequentCell.swift in Sources */, F12041FB1DA3FBF7002E4940 /* ListViewController.swift in Sources */, F18B445E1E7044B70080C041 /* FlipTransition.swift in Sources */, @@ -1800,16 +2096,17 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7185E9612420F6300048AD91 /* EmailAdressTests.swift in Sources */, 8428A8831F436AC9007649A5 /* GamificationDataUnitTest.swift in Sources */, 3EC35F302003838E008BDF95 /* InvitationTests.swift in Sources */, 474054982244D7A9007CF83B /* MailServerConfigurationTest.swift in Sources */, 479B5977206914BE00B3944D /* CryptoTests.swift in Sources */, A15D215F223BE6E4003E0CE0 /* MailTest.swift in Sources */, + 47EABF0F2420C63600774A93 /* AuthenticationTests.swift in Sources */, 988C9C5D240D507A006213F0 /* PhishingTests.swift in Sources */, 4715F637202A0248001BFFD0 /* CoreDataTests.swift in Sources */, 47C22281218AFD6300BD2C2B /* AutocryptTest.swift in Sources */, 478154AE2200641900A931EC /* StudyTest.swift in Sources */, + 47EABF0E2420C63600774A93 /* GeneratedMocks.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2006,6 +2303,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-fprofile-instr-generate"; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = ""; @@ -2059,6 +2357,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-fprofile-instr-generate"; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = ""; @@ -2085,13 +2384,30 @@ "$(PROJECT_DIR)_workspace", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/BZipCompression/BZipCompression.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FrameAccessor/FrameAccessor.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Onboard/Onboard.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/QAKit/QAKit.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Travellib/Travellib.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/VENTokenField/VENTokenField.framework/Headers\"", + "\"${PODS_ROOT}/Headers/Public\"", + "\"${PODS_ROOT}/Headers/Public/mailcore2-ios\"", + "$(SRCROOT)/enzevalos_iphone/OpenSSL/include", + ); INFOPLIST_FILE = "enzevalos_iphone/PLists/enzevalos-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "\"${PODS_ROOT}/OpenSSL-Universal/lib-ios\"", "$(inherited)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/enzevalos_iphone/OpenSSL/lib", ); OTHER_LDFLAGS = ( "$(inherited)", @@ -2117,6 +2433,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_INCLUDE_PATHS = ""; + "SWIFT_INCLUDE_PATHS[arch=*]" = ""; SWIFT_OBJC_BRIDGING_HEADER = "enzevalos_iphone-Bridging-Header.h"; "SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = "enzevalos_iphone/enzevalos_iphone-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -2143,13 +2461,30 @@ "$(PROJECT_DIR)_workspace", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/BZipCompression/BZipCompression.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FrameAccessor/FrameAccessor.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Onboard/Onboard.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/QAKit/QAKit.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Travellib/Travellib.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/VENTokenField/VENTokenField.framework/Headers\"", + "\"${PODS_ROOT}/Headers/Public\"", + "\"${PODS_ROOT}/Headers/Public/mailcore2-ios\"", + "$(SRCROOT)/enzevalos_iphone/OpenSSL/include", + ); INFOPLIST_FILE = "enzevalos_iphone/PLists/enzevalos-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "\"${PODS_ROOT}/OpenSSL-Universal/lib-ios\"", "$(inherited)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/enzevalos_iphone/OpenSSL/lib", ); OTHER_LDFLAGS = ( "$(inherited)", @@ -2175,10 +2510,10 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_INCLUDE_PATHS = ""; SWIFT_OBJC_BRIDGING_HEADER = "enzevalos_iphone-Bridging-Header.h"; "SWIFT_OBJC_BRIDGING_HEADER[sdk=*]" = "enzevalos_iphone/enzevalos_iphone-Bridging-Header.h"; SWIFT_VERSION = 5.0; - "USER_HEADER_SEARCH_PATHS[arch=*]" = ""; }; name = Release; }; @@ -2193,12 +2528,28 @@ "$(PROJECT_DIR)_workspace", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/BZipCompression/BZipCompression.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FrameAccessor/FrameAccessor.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Onboard/Onboard.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/QAKit/QAKit.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Travellib/Travellib.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/VENTokenField/VENTokenField.framework/Headers\"", + "\"${PODS_ROOT}/Headers/Public\"", + "\"${PODS_ROOT}/Headers/Public/mailcore2-ios\"", + "$(SRCROOT)/enzevalos_iphone/OpenSSL/include", + ); INFOPLIST_FILE = enzevalos_iphoneTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "\"${PODS_ROOT}/OpenSSL-Universal/lib-ios\"", "$(inherited)", + "$(PROJECT_DIR)/enzevalos_iphone/OpenSSL/lib", ); PRODUCT_BUNDLE_IDENTIFIER = "fu-berlin.enzevalos-iphoneTests"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2218,12 +2569,28 @@ "$(PROJECT_DIR)_workspace", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/BZipCompression/BZipCompression.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FrameAccessor/FrameAccessor.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth/GTMAppAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/KeychainAccess/KeychainAccess.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Onboard/Onboard.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/QAKit/QAKit.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/Travellib/Travellib.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/VENTokenField/VENTokenField.framework/Headers\"", + "\"${PODS_ROOT}/Headers/Public\"", + "\"${PODS_ROOT}/Headers/Public/mailcore2-ios\"", + "$(SRCROOT)/enzevalos_iphone/OpenSSL/include", + ); INFOPLIST_FILE = enzevalos_iphoneTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "\"${PODS_ROOT}/OpenSSL-Universal/lib-ios\"", "$(inherited)", + "$(PROJECT_DIR)/enzevalos_iphone/OpenSSL/lib", ); PRODUCT_BUNDLE_IDENTIFIER = "fu-berlin.enzevalos-iphoneTests"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/enzevalos_iphone/Settings.bundle/Acknowledgements.plist b/enzevalos_iphone/Settings.bundle/Acknowledgements.plist index 140340f470708021a4119e1c7b168d14bc4a6ae9..f980e2ea72ba02630976c55d44c7a2fd0c029938 100644 --- a/enzevalos_iphone/Settings.bundle/Acknowledgements.plist +++ b/enzevalos_iphone/Settings.bundle/Acknowledgements.plist @@ -425,6 +425,37 @@ third-party archives. <key>Type</key> <string>PSGroupSpecifier</string> </dict> + <dict> + <key>FooterText</key> + <string>The MIT License (MIT) + +Copyright (c) 2016 Brightify.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +</string> + <key>License</key> + <string>MIT</string> + <key>Title</key> + <string>Cuckoo</string> + <key>Type</key> + <string>PSGroupSpecifier</string> + </dict> <dict> <key>FooterText</key> <string>Copyright (c) 2012 Alexey Denisov diff --git a/enzevalos_iphoneTests/GeneratedMocks.swift b/enzevalos_iphoneTests/GeneratedMocks.swift new file mode 100644 index 0000000000000000000000000000000000000000..552c2d20e7b914e47050b83687bff4fe6e5f7707 --- /dev/null +++ b/enzevalos_iphoneTests/GeneratedMocks.swift @@ -0,0 +1,1086 @@ +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-17 08:58:58 +0000 + +// +// AuthenticationModel.swift +// enzevalos_iphone +// +// Created by SWP Usable Security für Smartphones on 10.03.20. +// Copyright © 2020 fu-berlin. All rights reserved. +// +import Cuckoo +@testable import enzevalos_iphone + +import Combine +import Foundation + + + class MockAuthenticationModel: AuthenticationModel, Cuckoo.ClassMock { + + typealias MocksType = AuthenticationModel + + typealias Stubbing = __StubbingProxy_AuthenticationModel + typealias Verification = __VerificationProxy_AuthenticationModel + + let cuckoo_manager = Cuckoo.MockManager.preconfiguredManager ?? Cuckoo.MockManager(hasParent: true) + + + private var __defaultImplStub: AuthenticationModel? + + func enableDefaultImplementation(_ stub: AuthenticationModel) { + __defaultImplStub = stub + cuckoo_manager.enableDefaultStubImplementation() + } + + + + + + override var extendedValidation: Bool { + get { + return cuckoo_manager.getter("extendedValidation", + superclassCall: + + super.extendedValidation + , + defaultCall: __defaultImplStub!.extendedValidation) + } + + set { + cuckoo_manager.setter("extendedValidation", + value: newValue, + superclassCall: + + super.extendedValidation = newValue + , + defaultCall: __defaultImplStub!.extendedValidation = newValue) + } + + } + + + + override var imapCallback: AuthenticationCallback? { + get { + return cuckoo_manager.getter("imapCallback", + superclassCall: + + super.imapCallback + , + defaultCall: __defaultImplStub!.imapCallback) + } + + set { + cuckoo_manager.setter("imapCallback", + value: newValue, + superclassCall: + + super.imapCallback = newValue + , + defaultCall: __defaultImplStub!.imapCallback = newValue) + } + + } + + + + override var smtpCallback: AuthenticationCallback? { + get { + return cuckoo_manager.getter("smtpCallback", + superclassCall: + + super.smtpCallback + , + defaultCall: __defaultImplStub!.smtpCallback) + } + + set { + cuckoo_manager.setter("smtpCallback", + value: newValue, + superclassCall: + + super.smtpCallback = newValue + , + defaultCall: __defaultImplStub!.smtpCallback = newValue) + } + + } + + + + override var imapConfigurationSuccessful: Bool { + get { + return cuckoo_manager.getter("imapConfigurationSuccessful", + superclassCall: + + super.imapConfigurationSuccessful + , + defaultCall: __defaultImplStub!.imapConfigurationSuccessful) + } + + set { + cuckoo_manager.setter("imapConfigurationSuccessful", + value: newValue, + superclassCall: + + super.imapConfigurationSuccessful = newValue + , + defaultCall: __defaultImplStub!.imapConfigurationSuccessful = newValue) + } + + } + + + + override var smtpConfigurationSuccessful: Bool { + get { + return cuckoo_manager.getter("smtpConfigurationSuccessful", + superclassCall: + + super.smtpConfigurationSuccessful + , + defaultCall: __defaultImplStub!.smtpConfigurationSuccessful) + } + + set { + cuckoo_manager.setter("smtpConfigurationSuccessful", + value: newValue, + superclassCall: + + super.smtpConfigurationSuccessful = newValue + , + defaultCall: __defaultImplStub!.smtpConfigurationSuccessful = newValue) + } + + } + + + + override var dispatchGroup: DispatchGroup { + get { + return cuckoo_manager.getter("dispatchGroup", + superclassCall: + + super.dispatchGroup + , + defaultCall: __defaultImplStub!.dispatchGroup) + } + + set { + cuckoo_manager.setter("dispatchGroup", + value: newValue, + superclassCall: + + super.dispatchGroup = newValue + , + defaultCall: __defaultImplStub!.dispatchGroup = newValue) + } + + } + + + + + + + + override func checkConfig(mailAccount: MailAccount, extendedValidation: Bool) -> Future<AuthenticationResult, Never> { + + return cuckoo_manager.call("checkConfig(mailAccount: MailAccount, extendedValidation: Bool) -> Future<AuthenticationResult, Never>", + parameters: (mailAccount, extendedValidation), + escapingParameters: (mailAccount, extendedValidation), + superclassCall: + + super.checkConfig(mailAccount: mailAccount, extendedValidation: extendedValidation) + , + defaultCall: __defaultImplStub!.checkConfig(mailAccount: mailAccount, extendedValidation: extendedValidation)) + + } + + + + override func checkIMAPConfig(mailAccount: MailAccount, _ callback: AuthenticationCallback) { + + return cuckoo_manager.call("checkIMAPConfig(mailAccount: MailAccount, _: AuthenticationCallback)", + parameters: (mailAccount, callback), + escapingParameters: (mailAccount, callback), + superclassCall: + + super.checkIMAPConfig(mailAccount: mailAccount, callback) + , + defaultCall: __defaultImplStub!.checkIMAPConfig(mailAccount: mailAccount, callback)) + + } + + + + override func checkSMTPConfig(mailAccount: MailAccount, _ callback: AuthenticationCallback) { + + return cuckoo_manager.call("checkSMTPConfig(mailAccount: MailAccount, _: AuthenticationCallback)", + parameters: (mailAccount, callback), + escapingParameters: (mailAccount, callback), + superclassCall: + + super.checkSMTPConfig(mailAccount: mailAccount, callback) + , + defaultCall: __defaultImplStub!.checkSMTPConfig(mailAccount: mailAccount, callback)) + + } + + + + override func onTimeout(timeoutResult: DispatchTimeoutResult) -> AuthenticationResult { + + return cuckoo_manager.call("onTimeout(timeoutResult: DispatchTimeoutResult) -> AuthenticationResult", + parameters: (timeoutResult), + escapingParameters: (timeoutResult), + superclassCall: + + super.onTimeout(timeoutResult: timeoutResult) + , + defaultCall: __defaultImplStub!.onTimeout(timeoutResult: timeoutResult)) + + } + + + + override func onImapCompleted(imapWorks: Bool, _ login: String, _ password: String) { + + return cuckoo_manager.call("onImapCompleted(imapWorks: Bool, _: String, _: String)", + parameters: (imapWorks, login, password), + escapingParameters: (imapWorks, login, password), + superclassCall: + + super.onImapCompleted(imapWorks: imapWorks, login, password) + , + defaultCall: __defaultImplStub!.onImapCompleted(imapWorks: imapWorks, login, password)) + + } + + + + override func onSmtpCompleted(smtpWorks: Bool, _ login: String, _ password: String) { + + return cuckoo_manager.call("onSmtpCompleted(smtpWorks: Bool, _: String, _: String)", + parameters: (smtpWorks, login, password), + escapingParameters: (smtpWorks, login, password), + superclassCall: + + super.onSmtpCompleted(smtpWorks: smtpWorks, login, password) + , + defaultCall: __defaultImplStub!.onSmtpCompleted(smtpWorks: smtpWorks, login, password)) + + } + + + struct __StubbingProxy_AuthenticationModel: Cuckoo.StubbingProxy { + private let cuckoo_manager: Cuckoo.MockManager + + init(manager: Cuckoo.MockManager) { + self.cuckoo_manager = manager + } + + + var extendedValidation: Cuckoo.ClassToBeStubbedProperty<MockAuthenticationModel, Bool> { + return .init(manager: cuckoo_manager, name: "extendedValidation") + } + + + var imapCallback: Cuckoo.ClassToBeStubbedOptionalProperty<MockAuthenticationModel, AuthenticationCallback> { + return .init(manager: cuckoo_manager, name: "imapCallback") + } + + + var smtpCallback: Cuckoo.ClassToBeStubbedOptionalProperty<MockAuthenticationModel, AuthenticationCallback> { + return .init(manager: cuckoo_manager, name: "smtpCallback") + } + + + var imapConfigurationSuccessful: Cuckoo.ClassToBeStubbedProperty<MockAuthenticationModel, Bool> { + return .init(manager: cuckoo_manager, name: "imapConfigurationSuccessful") + } + + + var smtpConfigurationSuccessful: Cuckoo.ClassToBeStubbedProperty<MockAuthenticationModel, Bool> { + return .init(manager: cuckoo_manager, name: "smtpConfigurationSuccessful") + } + + + var dispatchGroup: Cuckoo.ClassToBeStubbedProperty<MockAuthenticationModel, DispatchGroup> { + return .init(manager: cuckoo_manager, name: "dispatchGroup") + } + + + func checkConfig<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(mailAccount: M1, extendedValidation: M2) -> Cuckoo.ClassStubFunction<(MailAccount, Bool), Future<AuthenticationResult, Never>> where M1.MatchedType == MailAccount, M2.MatchedType == Bool { + let matchers: [Cuckoo.ParameterMatcher<(MailAccount, Bool)>] = [wrap(matchable: mailAccount) { $0.0 }, wrap(matchable: extendedValidation) { $0.1 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationModel.self, method: "checkConfig(mailAccount: MailAccount, extendedValidation: Bool) -> Future<AuthenticationResult, Never>", parameterMatchers: matchers)) + } + + func checkIMAPConfig<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(mailAccount: M1, _ callback: M2) -> Cuckoo.ClassStubNoReturnFunction<(MailAccount, AuthenticationCallback)> where M1.MatchedType == MailAccount, M2.MatchedType == AuthenticationCallback { + let matchers: [Cuckoo.ParameterMatcher<(MailAccount, AuthenticationCallback)>] = [wrap(matchable: mailAccount) { $0.0 }, wrap(matchable: callback) { $0.1 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationModel.self, method: "checkIMAPConfig(mailAccount: MailAccount, _: AuthenticationCallback)", parameterMatchers: matchers)) + } + + func checkSMTPConfig<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(mailAccount: M1, _ callback: M2) -> Cuckoo.ClassStubNoReturnFunction<(MailAccount, AuthenticationCallback)> where M1.MatchedType == MailAccount, M2.MatchedType == AuthenticationCallback { + let matchers: [Cuckoo.ParameterMatcher<(MailAccount, AuthenticationCallback)>] = [wrap(matchable: mailAccount) { $0.0 }, wrap(matchable: callback) { $0.1 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationModel.self, method: "checkSMTPConfig(mailAccount: MailAccount, _: AuthenticationCallback)", parameterMatchers: matchers)) + } + + func onTimeout<M1: Cuckoo.Matchable>(timeoutResult: M1) -> Cuckoo.ClassStubFunction<(DispatchTimeoutResult), AuthenticationResult> where M1.MatchedType == DispatchTimeoutResult { + let matchers: [Cuckoo.ParameterMatcher<(DispatchTimeoutResult)>] = [wrap(matchable: timeoutResult) { $0 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationModel.self, method: "onTimeout(timeoutResult: DispatchTimeoutResult) -> AuthenticationResult", parameterMatchers: matchers)) + } + + func onImapCompleted<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable>(imapWorks: M1, _ login: M2, _ password: M3) -> Cuckoo.ClassStubNoReturnFunction<(Bool, String, String)> where M1.MatchedType == Bool, M2.MatchedType == String, M3.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(Bool, String, String)>] = [wrap(matchable: imapWorks) { $0.0 }, wrap(matchable: login) { $0.1 }, wrap(matchable: password) { $0.2 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationModel.self, method: "onImapCompleted(imapWorks: Bool, _: String, _: String)", parameterMatchers: matchers)) + } + + func onSmtpCompleted<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable>(smtpWorks: M1, _ login: M2, _ password: M3) -> Cuckoo.ClassStubNoReturnFunction<(Bool, String, String)> where M1.MatchedType == Bool, M2.MatchedType == String, M3.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(Bool, String, String)>] = [wrap(matchable: smtpWorks) { $0.0 }, wrap(matchable: login) { $0.1 }, wrap(matchable: password) { $0.2 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationModel.self, method: "onSmtpCompleted(smtpWorks: Bool, _: String, _: String)", parameterMatchers: matchers)) + } + + } + + struct __VerificationProxy_AuthenticationModel: Cuckoo.VerificationProxy { + private let cuckoo_manager: Cuckoo.MockManager + private let callMatcher: Cuckoo.CallMatcher + private let sourceLocation: Cuckoo.SourceLocation + + init(manager: Cuckoo.MockManager, callMatcher: Cuckoo.CallMatcher, sourceLocation: Cuckoo.SourceLocation) { + self.cuckoo_manager = manager + self.callMatcher = callMatcher + self.sourceLocation = sourceLocation + } + + + + var extendedValidation: Cuckoo.VerifyProperty<Bool> { + return .init(manager: cuckoo_manager, name: "extendedValidation", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var imapCallback: Cuckoo.VerifyOptionalProperty<AuthenticationCallback> { + return .init(manager: cuckoo_manager, name: "imapCallback", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var smtpCallback: Cuckoo.VerifyOptionalProperty<AuthenticationCallback> { + return .init(manager: cuckoo_manager, name: "smtpCallback", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var imapConfigurationSuccessful: Cuckoo.VerifyProperty<Bool> { + return .init(manager: cuckoo_manager, name: "imapConfigurationSuccessful", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var smtpConfigurationSuccessful: Cuckoo.VerifyProperty<Bool> { + return .init(manager: cuckoo_manager, name: "smtpConfigurationSuccessful", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var dispatchGroup: Cuckoo.VerifyProperty<DispatchGroup> { + return .init(manager: cuckoo_manager, name: "dispatchGroup", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + + @discardableResult + func checkConfig<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(mailAccount: M1, extendedValidation: M2) -> Cuckoo.__DoNotUse<(MailAccount, Bool), Future<AuthenticationResult, Never>> where M1.MatchedType == MailAccount, M2.MatchedType == Bool { + let matchers: [Cuckoo.ParameterMatcher<(MailAccount, Bool)>] = [wrap(matchable: mailAccount) { $0.0 }, wrap(matchable: extendedValidation) { $0.1 }] + return cuckoo_manager.verify("checkConfig(mailAccount: MailAccount, extendedValidation: Bool) -> Future<AuthenticationResult, Never>", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func checkIMAPConfig<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(mailAccount: M1, _ callback: M2) -> Cuckoo.__DoNotUse<(MailAccount, AuthenticationCallback), Void> where M1.MatchedType == MailAccount, M2.MatchedType == AuthenticationCallback { + let matchers: [Cuckoo.ParameterMatcher<(MailAccount, AuthenticationCallback)>] = [wrap(matchable: mailAccount) { $0.0 }, wrap(matchable: callback) { $0.1 }] + return cuckoo_manager.verify("checkIMAPConfig(mailAccount: MailAccount, _: AuthenticationCallback)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func checkSMTPConfig<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(mailAccount: M1, _ callback: M2) -> Cuckoo.__DoNotUse<(MailAccount, AuthenticationCallback), Void> where M1.MatchedType == MailAccount, M2.MatchedType == AuthenticationCallback { + let matchers: [Cuckoo.ParameterMatcher<(MailAccount, AuthenticationCallback)>] = [wrap(matchable: mailAccount) { $0.0 }, wrap(matchable: callback) { $0.1 }] + return cuckoo_manager.verify("checkSMTPConfig(mailAccount: MailAccount, _: AuthenticationCallback)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func onTimeout<M1: Cuckoo.Matchable>(timeoutResult: M1) -> Cuckoo.__DoNotUse<(DispatchTimeoutResult), AuthenticationResult> where M1.MatchedType == DispatchTimeoutResult { + let matchers: [Cuckoo.ParameterMatcher<(DispatchTimeoutResult)>] = [wrap(matchable: timeoutResult) { $0 }] + return cuckoo_manager.verify("onTimeout(timeoutResult: DispatchTimeoutResult) -> AuthenticationResult", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func onImapCompleted<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable>(imapWorks: M1, _ login: M2, _ password: M3) -> Cuckoo.__DoNotUse<(Bool, String, String), Void> where M1.MatchedType == Bool, M2.MatchedType == String, M3.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(Bool, String, String)>] = [wrap(matchable: imapWorks) { $0.0 }, wrap(matchable: login) { $0.1 }, wrap(matchable: password) { $0.2 }] + return cuckoo_manager.verify("onImapCompleted(imapWorks: Bool, _: String, _: String)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func onSmtpCompleted<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable>(smtpWorks: M1, _ login: M2, _ password: M3) -> Cuckoo.__DoNotUse<(Bool, String, String), Void> where M1.MatchedType == Bool, M2.MatchedType == String, M3.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(Bool, String, String)>] = [wrap(matchable: smtpWorks) { $0.0 }, wrap(matchable: login) { $0.1 }, wrap(matchable: password) { $0.2 }] + return cuckoo_manager.verify("onSmtpCompleted(smtpWorks: Bool, _: String, _: String)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + } +} + + class AuthenticationModelStub: AuthenticationModel { + + + override var extendedValidation: Bool { + get { + return DefaultValueRegistry.defaultValue(for: (Bool).self) + } + + set { } + + } + + + override var imapCallback: AuthenticationCallback? { + get { + return DefaultValueRegistry.defaultValue(for: (AuthenticationCallback?).self) + } + + set { } + + } + + + override var smtpCallback: AuthenticationCallback? { + get { + return DefaultValueRegistry.defaultValue(for: (AuthenticationCallback?).self) + } + + set { } + + } + + + override var imapConfigurationSuccessful: Bool { + get { + return DefaultValueRegistry.defaultValue(for: (Bool).self) + } + + set { } + + } + + + override var smtpConfigurationSuccessful: Bool { + get { + return DefaultValueRegistry.defaultValue(for: (Bool).self) + } + + set { } + + } + + + override var dispatchGroup: DispatchGroup { + get { + return DefaultValueRegistry.defaultValue(for: (DispatchGroup).self) + } + + set { } + + } + + + + + + override func checkConfig(mailAccount: MailAccount, extendedValidation: Bool) -> Future<AuthenticationResult, Never> { + return DefaultValueRegistry.defaultValue(for: (Future<AuthenticationResult, Never>).self) + } + + override func checkIMAPConfig(mailAccount: MailAccount, _ callback: AuthenticationCallback) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func checkSMTPConfig(mailAccount: MailAccount, _ callback: AuthenticationCallback) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func onTimeout(timeoutResult: DispatchTimeoutResult) -> AuthenticationResult { + return DefaultValueRegistry.defaultValue(for: (AuthenticationResult).self) + } + + override func onImapCompleted(imapWorks: Bool, _ login: String, _ password: String) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func onSmtpCompleted(smtpWorks: Bool, _ login: String, _ password: String) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + +} + + + + class MockAuthenticationCallback: AuthenticationCallback, Cuckoo.ClassMock { + + typealias MocksType = AuthenticationCallback + + typealias Stubbing = __StubbingProxy_AuthenticationCallback + typealias Verification = __VerificationProxy_AuthenticationCallback + + let cuckoo_manager = Cuckoo.MockManager.preconfiguredManager ?? Cuckoo.MockManager(hasParent: true) + + + private var __defaultImplStub: AuthenticationCallback? + + func enableDefaultImplementation(_ stub: AuthenticationCallback) { + __defaultImplStub = stub + cuckoo_manager.enableDefaultStubImplementation() + } + + + + + + override var callback: ((Bool, String, String) -> Void)? { + get { + return cuckoo_manager.getter("callback", + superclassCall: + + super.callback + , + defaultCall: __defaultImplStub!.callback) + } + + set { + cuckoo_manager.setter("callback", + value: newValue, + superclassCall: + + super.callback = newValue + , + defaultCall: __defaultImplStub!.callback = newValue) + } + + } + + + + + + + + override func onResult(worked: Bool, login: String, password: String) { + + return cuckoo_manager.call("onResult(worked: Bool, login: String, password: String)", + parameters: (worked, login, password), + escapingParameters: (worked, login, password), + superclassCall: + + super.onResult(worked: worked, login: login, password: password) + , + defaultCall: __defaultImplStub!.onResult(worked: worked, login: login, password: password)) + + } + + + struct __StubbingProxy_AuthenticationCallback: Cuckoo.StubbingProxy { + private let cuckoo_manager: Cuckoo.MockManager + + init(manager: Cuckoo.MockManager) { + self.cuckoo_manager = manager + } + + + var callback: Cuckoo.ClassToBeStubbedOptionalProperty<MockAuthenticationCallback, ((Bool, String, String) -> Void)> { + return .init(manager: cuckoo_manager, name: "callback") + } + + + func onResult<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable>(worked: M1, login: M2, password: M3) -> Cuckoo.ClassStubNoReturnFunction<(Bool, String, String)> where M1.MatchedType == Bool, M2.MatchedType == String, M3.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(Bool, String, String)>] = [wrap(matchable: worked) { $0.0 }, wrap(matchable: login) { $0.1 }, wrap(matchable: password) { $0.2 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationCallback.self, method: "onResult(worked: Bool, login: String, password: String)", parameterMatchers: matchers)) + } + + } + + struct __VerificationProxy_AuthenticationCallback: Cuckoo.VerificationProxy { + private let cuckoo_manager: Cuckoo.MockManager + private let callMatcher: Cuckoo.CallMatcher + private let sourceLocation: Cuckoo.SourceLocation + + init(manager: Cuckoo.MockManager, callMatcher: Cuckoo.CallMatcher, sourceLocation: Cuckoo.SourceLocation) { + self.cuckoo_manager = manager + self.callMatcher = callMatcher + self.sourceLocation = sourceLocation + } + + + + var callback: Cuckoo.VerifyOptionalProperty<((Bool, String, String) -> Void)> { + return .init(manager: cuckoo_manager, name: "callback", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + + @discardableResult + func onResult<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable>(worked: M1, login: M2, password: M3) -> Cuckoo.__DoNotUse<(Bool, String, String), Void> where M1.MatchedType == Bool, M2.MatchedType == String, M3.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(Bool, String, String)>] = [wrap(matchable: worked) { $0.0 }, wrap(matchable: login) { $0.1 }, wrap(matchable: password) { $0.2 }] + return cuckoo_manager.verify("onResult(worked: Bool, login: String, password: String)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + } +} + + class AuthenticationCallbackStub: AuthenticationCallback { + + + override var callback: ((Bool, String, String) -> Void)? { + get { + return DefaultValueRegistry.defaultValue(for: (((Bool, String, String) -> Void)?).self) + } + + set { } + + } + + + + + + override func onResult(worked: Bool, login: String, password: String) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + +} + + +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-17 08:58:58 +0000 + +// +// AuthenticationViewModel.swift +// enzevalos_iphone +// +// Created by SWP Usable Security für Smartphones on 02.03.20. +// Copyright © 2020 fu-berlin. All rights reserved. +// +import Cuckoo +@testable import enzevalos_iphone + +import Combine +import Foundation + + + class MockAuthenticationViewModel: AuthenticationViewModel, Cuckoo.ClassMock { + + typealias MocksType = AuthenticationViewModel + + typealias Stubbing = __StubbingProxy_AuthenticationViewModel + typealias Verification = __VerificationProxy_AuthenticationViewModel + + let cuckoo_manager = Cuckoo.MockManager.preconfiguredManager ?? Cuckoo.MockManager(hasParent: true) + + + private var __defaultImplStub: AuthenticationViewModel? + + func enableDefaultImplementation(_ stub: AuthenticationViewModel) { + __defaultImplStub = stub + cuckoo_manager.enableDefaultStubImplementation() + } + + + + + + override var errorMessage: String? { + get { + return cuckoo_manager.getter("errorMessage", + superclassCall: + + super.errorMessage + , + defaultCall: __defaultImplStub!.errorMessage) + } + + set { + cuckoo_manager.setter("errorMessage", + value: newValue, + superclassCall: + + super.errorMessage = newValue + , + defaultCall: __defaultImplStub!.errorMessage = newValue) + } + + } + + + + override var isDetailedAuthentication: Bool { + get { + return cuckoo_manager.getter("isDetailedAuthentication", + superclassCall: + + super.isDetailedAuthentication + , + defaultCall: __defaultImplStub!.isDetailedAuthentication) + } + + set { + cuckoo_manager.setter("isDetailedAuthentication", + value: newValue, + superclassCall: + + super.isDetailedAuthentication = newValue + , + defaultCall: __defaultImplStub!.isDetailedAuthentication = newValue) + } + + } + + + + override var showProgressSpinner: Bool { + get { + return cuckoo_manager.getter("showProgressSpinner", + superclassCall: + + super.showProgressSpinner + , + defaultCall: __defaultImplStub!.showProgressSpinner) + } + + set { + cuckoo_manager.setter("showProgressSpinner", + value: newValue, + superclassCall: + + super.showProgressSpinner = newValue + , + defaultCall: __defaultImplStub!.showProgressSpinner = newValue) + } + + } + + + + override var cancellable: AnyCancellable? { + get { + return cuckoo_manager.getter("cancellable", + superclassCall: + + super.cancellable + , + defaultCall: __defaultImplStub!.cancellable) + } + + set { + cuckoo_manager.setter("cancellable", + value: newValue, + superclassCall: + + super.cancellable = newValue + , + defaultCall: __defaultImplStub!.cancellable = newValue) + } + + } + + + + + + + + override func validate(_ login: String, _ password: String) { + + return cuckoo_manager.call("validate(_: String, _: String)", + parameters: (login, password), + escapingParameters: (login, password), + superclassCall: + + super.validate(login, password) + , + defaultCall: __defaultImplStub!.validate(login, password)) + + } + + + + override func detailValidation(_ login: String, _ password: String, _ username: String, _ imapServer: String, _ imapPort: String, _ imapEncryption: Int, _ smtpServer: String, _ smtpPort: String, _ smtpEncryption: Int) { + + return cuckoo_manager.call("detailValidation(_: String, _: String, _: String, _: String, _: String, _: Int, _: String, _: String, _: Int)", + parameters: (login, password, username, imapServer, imapPort, imapEncryption, smtpServer, smtpPort, smtpEncryption), + escapingParameters: (login, password, username, imapServer, imapPort, imapEncryption, smtpServer, smtpPort, smtpEncryption), + superclassCall: + + super.detailValidation(login, password, username, imapServer, imapPort, imapEncryption, smtpServer, smtpPort, smtpEncryption) + , + defaultCall: __defaultImplStub!.detailValidation(login, password, username, imapServer, imapPort, imapEncryption, smtpServer, smtpPort, smtpEncryption)) + + } + + + + override func startGoogleOauth() { + + return cuckoo_manager.call("startGoogleOauth()", + parameters: (), + escapingParameters: (), + superclassCall: + + super.startGoogleOauth() + , + defaultCall: __defaultImplStub!.startGoogleOauth()) + + } + + + + override func authenticationSucceed() { + + return cuckoo_manager.call("authenticationSucceed()", + parameters: (), + escapingParameters: (), + superclassCall: + + super.authenticationSucceed() + , + defaultCall: __defaultImplStub!.authenticationSucceed()) + + } + + + + override func authenticationFailed(error: MailServerConnectionError) { + + return cuckoo_manager.call("authenticationFailed(error: MailServerConnectionError)", + parameters: (error), + escapingParameters: (error), + superclassCall: + + super.authenticationFailed(error: error) + , + defaultCall: __defaultImplStub!.authenticationFailed(error: error)) + + } + + + + override func timeoutNotification() { + + return cuckoo_manager.call("timeoutNotification()", + parameters: (), + escapingParameters: (), + superclassCall: + + super.timeoutNotification() + , + defaultCall: __defaultImplStub!.timeoutNotification()) + + } + + + struct __StubbingProxy_AuthenticationViewModel: Cuckoo.StubbingProxy { + private let cuckoo_manager: Cuckoo.MockManager + + init(manager: Cuckoo.MockManager) { + self.cuckoo_manager = manager + } + + + var errorMessage: Cuckoo.ClassToBeStubbedOptionalProperty<MockAuthenticationViewModel, String> { + return .init(manager: cuckoo_manager, name: "errorMessage") + } + + + var isDetailedAuthentication: Cuckoo.ClassToBeStubbedProperty<MockAuthenticationViewModel, Bool> { + return .init(manager: cuckoo_manager, name: "isDetailedAuthentication") + } + + + var showProgressSpinner: Cuckoo.ClassToBeStubbedProperty<MockAuthenticationViewModel, Bool> { + return .init(manager: cuckoo_manager, name: "showProgressSpinner") + } + + + var cancellable: Cuckoo.ClassToBeStubbedOptionalProperty<MockAuthenticationViewModel, AnyCancellable> { + return .init(manager: cuckoo_manager, name: "cancellable") + } + + + func validate<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(_ login: M1, _ password: M2) -> Cuckoo.ClassStubNoReturnFunction<(String, String)> where M1.MatchedType == String, M2.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(String, String)>] = [wrap(matchable: login) { $0.0 }, wrap(matchable: password) { $0.1 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationViewModel.self, method: "validate(_: String, _: String)", parameterMatchers: matchers)) + } + + func detailValidation<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable, M4: Cuckoo.Matchable, M5: Cuckoo.Matchable, M6: Cuckoo.Matchable, M7: Cuckoo.Matchable, M8: Cuckoo.Matchable, M9: Cuckoo.Matchable>(_ login: M1, _ password: M2, _ username: M3, _ imapServer: M4, _ imapPort: M5, _ imapEncryption: M6, _ smtpServer: M7, _ smtpPort: M8, _ smtpEncryption: M9) -> Cuckoo.ClassStubNoReturnFunction<(String, String, String, String, String, Int, String, String, Int)> where M1.MatchedType == String, M2.MatchedType == String, M3.MatchedType == String, M4.MatchedType == String, M5.MatchedType == String, M6.MatchedType == Int, M7.MatchedType == String, M8.MatchedType == String, M9.MatchedType == Int { + let matchers: [Cuckoo.ParameterMatcher<(String, String, String, String, String, Int, String, String, Int)>] = [wrap(matchable: login) { $0.0 }, wrap(matchable: password) { $0.1 }, wrap(matchable: username) { $0.2 }, wrap(matchable: imapServer) { $0.3 }, wrap(matchable: imapPort) { $0.4 }, wrap(matchable: imapEncryption) { $0.5 }, wrap(matchable: smtpServer) { $0.6 }, wrap(matchable: smtpPort) { $0.7 }, wrap(matchable: smtpEncryption) { $0.8 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationViewModel.self, method: "detailValidation(_: String, _: String, _: String, _: String, _: String, _: Int, _: String, _: String, _: Int)", parameterMatchers: matchers)) + } + + func startGoogleOauth() -> Cuckoo.ClassStubNoReturnFunction<()> { + let matchers: [Cuckoo.ParameterMatcher<Void>] = [] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationViewModel.self, method: "startGoogleOauth()", parameterMatchers: matchers)) + } + + func authenticationSucceed() -> Cuckoo.ClassStubNoReturnFunction<()> { + let matchers: [Cuckoo.ParameterMatcher<Void>] = [] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationViewModel.self, method: "authenticationSucceed()", parameterMatchers: matchers)) + } + + func authenticationFailed<M1: Cuckoo.Matchable>(error: M1) -> Cuckoo.ClassStubNoReturnFunction<(MailServerConnectionError)> where M1.MatchedType == MailServerConnectionError { + let matchers: [Cuckoo.ParameterMatcher<(MailServerConnectionError)>] = [wrap(matchable: error) { $0 }] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationViewModel.self, method: "authenticationFailed(error: MailServerConnectionError)", parameterMatchers: matchers)) + } + + func timeoutNotification() -> Cuckoo.ClassStubNoReturnFunction<()> { + let matchers: [Cuckoo.ParameterMatcher<Void>] = [] + return .init(stub: cuckoo_manager.createStub(for: MockAuthenticationViewModel.self, method: "timeoutNotification()", parameterMatchers: matchers)) + } + + } + + struct __VerificationProxy_AuthenticationViewModel: Cuckoo.VerificationProxy { + private let cuckoo_manager: Cuckoo.MockManager + private let callMatcher: Cuckoo.CallMatcher + private let sourceLocation: Cuckoo.SourceLocation + + init(manager: Cuckoo.MockManager, callMatcher: Cuckoo.CallMatcher, sourceLocation: Cuckoo.SourceLocation) { + self.cuckoo_manager = manager + self.callMatcher = callMatcher + self.sourceLocation = sourceLocation + } + + + + var errorMessage: Cuckoo.VerifyOptionalProperty<String> { + return .init(manager: cuckoo_manager, name: "errorMessage", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var isDetailedAuthentication: Cuckoo.VerifyProperty<Bool> { + return .init(manager: cuckoo_manager, name: "isDetailedAuthentication", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var showProgressSpinner: Cuckoo.VerifyProperty<Bool> { + return .init(manager: cuckoo_manager, name: "showProgressSpinner", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + var cancellable: Cuckoo.VerifyOptionalProperty<AnyCancellable> { + return .init(manager: cuckoo_manager, name: "cancellable", callMatcher: callMatcher, sourceLocation: sourceLocation) + } + + + + @discardableResult + func validate<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable>(_ login: M1, _ password: M2) -> Cuckoo.__DoNotUse<(String, String), Void> where M1.MatchedType == String, M2.MatchedType == String { + let matchers: [Cuckoo.ParameterMatcher<(String, String)>] = [wrap(matchable: login) { $0.0 }, wrap(matchable: password) { $0.1 }] + return cuckoo_manager.verify("validate(_: String, _: String)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func detailValidation<M1: Cuckoo.Matchable, M2: Cuckoo.Matchable, M3: Cuckoo.Matchable, M4: Cuckoo.Matchable, M5: Cuckoo.Matchable, M6: Cuckoo.Matchable, M7: Cuckoo.Matchable, M8: Cuckoo.Matchable, M9: Cuckoo.Matchable>(_ login: M1, _ password: M2, _ username: M3, _ imapServer: M4, _ imapPort: M5, _ imapEncryption: M6, _ smtpServer: M7, _ smtpPort: M8, _ smtpEncryption: M9) -> Cuckoo.__DoNotUse<(String, String, String, String, String, Int, String, String, Int), Void> where M1.MatchedType == String, M2.MatchedType == String, M3.MatchedType == String, M4.MatchedType == String, M5.MatchedType == String, M6.MatchedType == Int, M7.MatchedType == String, M8.MatchedType == String, M9.MatchedType == Int { + let matchers: [Cuckoo.ParameterMatcher<(String, String, String, String, String, Int, String, String, Int)>] = [wrap(matchable: login) { $0.0 }, wrap(matchable: password) { $0.1 }, wrap(matchable: username) { $0.2 }, wrap(matchable: imapServer) { $0.3 }, wrap(matchable: imapPort) { $0.4 }, wrap(matchable: imapEncryption) { $0.5 }, wrap(matchable: smtpServer) { $0.6 }, wrap(matchable: smtpPort) { $0.7 }, wrap(matchable: smtpEncryption) { $0.8 }] + return cuckoo_manager.verify("detailValidation(_: String, _: String, _: String, _: String, _: String, _: Int, _: String, _: String, _: Int)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func startGoogleOauth() -> Cuckoo.__DoNotUse<(), Void> { + let matchers: [Cuckoo.ParameterMatcher<Void>] = [] + return cuckoo_manager.verify("startGoogleOauth()", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func authenticationSucceed() -> Cuckoo.__DoNotUse<(), Void> { + let matchers: [Cuckoo.ParameterMatcher<Void>] = [] + return cuckoo_manager.verify("authenticationSucceed()", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func authenticationFailed<M1: Cuckoo.Matchable>(error: M1) -> Cuckoo.__DoNotUse<(MailServerConnectionError), Void> where M1.MatchedType == MailServerConnectionError { + let matchers: [Cuckoo.ParameterMatcher<(MailServerConnectionError)>] = [wrap(matchable: error) { $0 }] + return cuckoo_manager.verify("authenticationFailed(error: MailServerConnectionError)", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + @discardableResult + func timeoutNotification() -> Cuckoo.__DoNotUse<(), Void> { + let matchers: [Cuckoo.ParameterMatcher<Void>] = [] + return cuckoo_manager.verify("timeoutNotification()", callMatcher: callMatcher, parameterMatchers: matchers, sourceLocation: sourceLocation) + } + + } +} + + class AuthenticationViewModelStub: AuthenticationViewModel { + + + override var errorMessage: String? { + get { + return DefaultValueRegistry.defaultValue(for: (String?).self) + } + + set { } + + } + + + override var isDetailedAuthentication: Bool { + get { + return DefaultValueRegistry.defaultValue(for: (Bool).self) + } + + set { } + + } + + + override var showProgressSpinner: Bool { + get { + return DefaultValueRegistry.defaultValue(for: (Bool).self) + } + + set { } + + } + + + override var cancellable: AnyCancellable? { + get { + return DefaultValueRegistry.defaultValue(for: (AnyCancellable?).self) + } + + set { } + + } + + + + + + override func validate(_ login: String, _ password: String) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func detailValidation(_ login: String, _ password: String, _ username: String, _ imapServer: String, _ imapPort: String, _ imapEncryption: Int, _ smtpServer: String, _ smtpPort: String, _ smtpEncryption: Int) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func startGoogleOauth() { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func authenticationSucceed() { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func authenticationFailed(error: MailServerConnectionError) { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + + override func timeoutNotification() { + return DefaultValueRegistry.defaultValue(for: (Void).self) + } + +} + diff --git a/enzevalos_iphoneTests/authentication/AuthenticationTests.swift b/enzevalos_iphoneTests/authentication/AuthenticationTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..46ec9c172820eb352888e6d9e3d4c017ad595b6a --- /dev/null +++ b/enzevalos_iphoneTests/authentication/AuthenticationTests.swift @@ -0,0 +1,109 @@ +// +// AuthenticationTests.swift +// enzevalos_iphoneTests +// +// Created by Cezary Pilaszewicz on 12.03.20. +// Copyright © 2020 fu-berlin. All rights reserved. +// + +import Cuckoo +import XCTest +import Combine + +@testable import enzevalos_iphone +class AuthenticationTests: XCTestCase { + let login = "test_login" + let password = "test_password" + let username = "test_uesrname" + let imapServer = "test.imap.server.de" + let imapPort = 997 + let imapEncryption = MCOConnectionType.startTLS.rawValue + let smtpServer = "test.smtp.server.com" + let smtpPort = 1234 + let smtpEncryption = MCOConnectionType.startTLS.rawValue + + + //Test whether correct arguments are passed to the model + func testValidate() { + let model = MockAuthenticationModel().withEnabledSuperclassSpy() + let viewModel = MockAuthenticationViewModel(authenticationModel: model).withEnabledSuperclassSpy() + let future: Future<AuthenticationModel.AuthenticationResult, Never> = Future { + promise in promise(.success(AuthenticationModel.AuthenticationResult.Success)) + } + stub(model) { stub in + when(stub.checkConfig(mailAccount: any(), extendedValidation: false)).thenReturn(future) + } + viewModel.validate(self.login, self.password) + let argumentCaptor = ArgumentCaptor<MailAccount>() + verify(model).checkConfig(mailAccount: argumentCaptor.capture(), extendedValidation: false) + let passedMailAccount = argumentCaptor.value + XCTAssertEqual(passedMailAccount?.emailAddress, self.login) + XCTAssertEqual(passedMailAccount?.password, self.password) + } + + func testDetailValidate() { + let model = MockAuthenticationModel().withEnabledSuperclassSpy() + let viewModel = MockAuthenticationViewModel(authenticationModel: model).withEnabledSuperclassSpy() + let future: Future<AuthenticationModel.AuthenticationResult, Never> = Future { + promise in promise(.success(AuthenticationModel.AuthenticationResult.Success)) + } + stub(model) { stub in + when(stub.checkConfig(mailAccount: any(), extendedValidation: true)).thenReturn(future) + } + viewModel.detailValidation(login, password, username, imapServer, String(imapPort), imapEncryption, smtpServer, String(smtpPort), smtpEncryption) + let argumentCaptor = ArgumentCaptor<MailAccount>() + verify(model).checkConfig(mailAccount: argumentCaptor.capture(), extendedValidation: true) + let passedMailAccount = argumentCaptor.value + XCTAssertEqual(passedMailAccount?.emailAddress, self.login) + XCTAssertEqual(passedMailAccount?.password, self.password) + XCTAssertEqual(passedMailAccount?.username, self.username) + XCTAssertEqual(passedMailAccount?.imapServer, self.imapServer) + XCTAssertEqual(passedMailAccount?.imapPort, self.imapPort) + XCTAssertEqual(passedMailAccount?.imapEncryption, self.imapEncryption) + XCTAssertEqual(passedMailAccount?.smtpServer, self.smtpServer) + XCTAssertEqual(passedMailAccount?.smtpPort, self.smtpPort) + XCTAssertEqual(passedMailAccount?.smtpEncryption, self.smtpEncryption) + } + + //Test authentification results + func testAuthenticationSuccessful() { + let model = MockAuthenticationModel().withEnabledSuperclassSpy() + let viewModel = MockAuthenticationViewModel(authenticationModel: model).withEnabledSuperclassSpy() + let future: Future<AuthenticationModel.AuthenticationResult, Never> = Future { + promise in promise(.success(AuthenticationModel.AuthenticationResult.Success)) + } + stub(model) { stub in + when(stub.checkConfig(mailAccount: any(), extendedValidation: false)).thenReturn(future) + } + viewModel.validate(self.login, self.password) + verify(viewModel).authenticationSucceed() + } + + func testAuthenticationFailed() { + let model = MockAuthenticationModel().withEnabledSuperclassSpy() + let viewModel = MockAuthenticationViewModel(authenticationModel: model).withEnabledSuperclassSpy() + let future: Future<AuthenticationModel.AuthenticationResult, Never> = Future { + promise in promise(.success(AuthenticationModel.AuthenticationResult.Error(value: MailServerConnectionError.AuthenticationError))) + } + stub(model) { stub in + when(stub.checkConfig(mailAccount: any(), extendedValidation: false)).thenReturn(future) + } + viewModel.validate(self.login, self.password) + let argumentCaptor = ArgumentCaptor<MailServerConnectionError>() + verify(viewModel).authenticationFailed(error: argumentCaptor.capture()) + XCTAssertEqual(argumentCaptor.value, MailServerConnectionError.AuthenticationError) + } + + func testAuthenticationTimeout() { + let model = MockAuthenticationModel().withEnabledSuperclassSpy() + let viewModel = MockAuthenticationViewModel(authenticationModel: model).withEnabledSuperclassSpy() + let future: Future<AuthenticationModel.AuthenticationResult, Never> = Future { + promise in promise(.success(AuthenticationModel.AuthenticationResult.Timeout)) + } + stub(model) { stub in + when(stub.checkConfig(mailAccount: any(), extendedValidation: false)).thenReturn(future) + } + viewModel.validate(self.login, self.password) + verify(viewModel).timeoutNotification() + } +}