diff --git a/ObjectivePGP.framework/ObjectivePGP b/ObjectivePGP.framework/ObjectivePGP
index 0cd3ebdddc3510dc5b6114e47a03071eed9cc115..d055662492d5c48d881aa65eee82d996e9d6fc20 100755
Binary files a/ObjectivePGP.framework/ObjectivePGP and b/ObjectivePGP.framework/ObjectivePGP differ
diff --git a/enzevalos_iphone.xcodeproj/project.pbxproj b/enzevalos_iphone.xcodeproj/project.pbxproj
index 069345f277c54c98b6f50a0749fd3044c0dd8fe0..d3afdb029c92e8e11262f34ffc2a7f11c44cc207 100644
--- a/enzevalos_iphone.xcodeproj/project.pbxproj
+++ b/enzevalos_iphone.xcodeproj/project.pbxproj
@@ -15,6 +15,9 @@
 		3EC35F2D200376A1008BDF95 /* SendViewController+Invitation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC35F2C200376A1008BDF95 /* SendViewController+Invitation.swift */; };
 		3EC35F302003838E008BDF95 /* InvitationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC35F2F2003838E008BDF95 /* InvitationTests.swift */; };
 		45262931B4C72A96C686C533 /* Pods_enzevalos_iphoneTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9B9CE43043CF806E1C02FCA /* Pods_enzevalos_iphoneTests.framework */; };
+		4706D65F225B7B6B00B3F1D3 /* ItunesHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706D65E225B7B6B00B3F1D3 /* ItunesHandler.swift */; };
+		4706D661225CD21D00B3F1D3 /* ExportKeyHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706D660225CD21D00B3F1D3 /* ExportKeyHelper.swift */; };
+		4706D663225CDFE200B3F1D3 /* TempKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4706D662225CDFE200B3F1D3 /* TempKey.swift */; };
 		4707091E2189BC3500DF71A3 /* plainThunderbird.eml in Resources */ = {isa = PBXBuildFile; fileRef = 470709172189BC3500DF71A3 /* plainThunderbird.eml */; };
 		470709262189C73900DF71A3 /* enc+signedInlineThunderbird.eml in Resources */ = {isa = PBXBuildFile; fileRef = 470709212189C73900DF71A3 /* enc+signedInlineThunderbird.eml */; };
 		470709272189C73900DF71A3 /* encThunderbird.eml in Resources */ = {isa = PBXBuildFile; fileRef = 470709222189C73900DF71A3 /* encThunderbird.eml */; };
@@ -60,11 +63,14 @@
 		477548DE21F5DABE000B22A8 /* MailServerConnectionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477548DD21F5DABE000B22A8 /* MailServerConnectionError.swift */; };
 		477548E221F77466000B22A8 /* SecurityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477548E121F77466000B22A8 /* SecurityIndicator.swift */; };
 		477548E421F77BA0000B22A8 /* StudyParameterProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477548E321F77BA0000B22A8 /* StudyParameterProtocol.swift */; };
+		477670C4228453FB00043604 /* ButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 477670C3228453FB00043604 /* ButtonCell.xib */; };
+		477670C6228454F700043604 /* ButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477670C5228454F700043604 /* ButtonCell.swift */; };
 		478154A721FF3F0900A931EC /* Warning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478154A621FF3F0900A931EC /* Warning.swift */; };
 		478154A921FF3FF400A931EC /* Invitation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478154A821FF3FF400A931EC /* Invitation.swift */; };
 		478154AC21FF6A9600A931EC /* Mailbot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478154AB21FF6A9600A931EC /* Mailbot.swift */; };
 		478154AE2200641900A931EC /* StudyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478154AD2200641900A931EC /* StudyTest.swift */; };
 		478AF715222FD5C600AEF69E /* IncomingMail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478AF714222FD5C600AEF69E /* IncomingMail.swift */; };
+		479011492289975D0057AB04 /* NoSecIconStyleKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479011482289975C0057AB04 /* NoSecIconStyleKit.swift */; };
 		479AFDA222571AB90063A332 /* EccAlice(777879D4)–Public.asc in Resources */ = {isa = PBXBuildFile; fileRef = 479AFDA122571AB90063A332 /* EccAlice(777879D4)–Public.asc */; };
 		479B5977206914BE00B3944D /* CryptoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479B5976206914BE00B3944D /* CryptoTests.swift */; };
 		479B597820691BE400B3944D /* ObjectivePGP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47CEF4EC2052C3E600887CDB /* ObjectivePGP.framework */; };
@@ -82,6 +88,10 @@
 		47CEF4EB2052C3C800887CDB /* ObjectivePGP.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 47CEF4EA2052C3C700887CDB /* ObjectivePGP.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		47CEF4ED2052C3E700887CDB /* ObjectivePGP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47CEF4EC2052C3E600887CDB /* ObjectivePGP.framework */; };
 		47D1302B1F7CEE6D007B14DF /* DebugSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D1302A1F7CEE6D007B14DF /* DebugSettings.swift */; };
+		47E7376E22845EC400972401 /* SecretKeyTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E7376D22845EC400972401 /* SecretKeyTableViewController.swift */; };
+		47E7377022845F3A00972401 /* KeyViews.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 47E7376F22845F3A00972401 /* KeyViews.storyboard */; };
+		47E737742284610E00972401 /* KeyCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 47E737732284610E00972401 /* KeyCell.xib */; };
+		47E737762284632F00972401 /* KeyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E737752284632F00972401 /* KeyCell.swift */; };
 		47E7BE5B22319B6900C8EF94 /* EncMailFromMac.eml in Resources */ = {isa = PBXBuildFile; fileRef = 47E7BE5A22319B6900C8EF94 /* EncMailFromMac.eml */; };
 		47E7BE5D22319B7100C8EF94 /* SignedMailFromMac.eml in Resources */ = {isa = PBXBuildFile; fileRef = 47E7BE5C22319B7000C8EF94 /* SignedMailFromMac.eml */; };
 		47E7BE5F22319B7D00C8EF94 /* SecureMailFromMac.eml in Resources */ = {isa = PBXBuildFile; fileRef = 47E7BE5E22319B7D00C8EF94 /* SecureMailFromMac.eml */; };
@@ -178,7 +188,7 @@
 		F12041FD1DA409A5002E4940 /* ListViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F12041FC1DA409A5002E4940 /* ListViewCell.swift */; };
 		F12060801DA540FE00F6EF37 /* RefreshControlExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F120607F1DA540FE00F6EF37 /* RefreshControlExtension.swift */; };
 		F12060821DA552FC00F6EF37 /* MailHandlerDelegator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F12060811DA552FC00F6EF37 /* MailHandlerDelegator.swift */; };
-		F120A7D31F7937BB006D5BF1 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; };
+		F120A7D31F7937BB006D5BF1 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
 		F12D8DBB2069422A0068788E /* About.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F12D8DBD2069422A0068788E /* About.storyboard */; };
 		F14239C11F30A99C00998A83 /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F14239C01F30A99C00998A83 /* QRCodeGenerator.swift */; };
 		F1737ACB2031D7D70000312B /* StudySettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A17FDFF2202C685800F7BA89 /* StudySettings.swift */; };
@@ -237,6 +247,9 @@
 		3EC35F2C200376A1008BDF95 /* SendViewController+Invitation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SendViewController+Invitation.swift"; sourceTree = "<group>"; };
 		3EC35F2F2003838E008BDF95 /* InvitationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitationTests.swift; sourceTree = "<group>"; };
 		411EB2B85F99B48FFD36F966 /* 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>"; };
+		4706D65E225B7B6B00B3F1D3 /* ItunesHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItunesHandler.swift; sourceTree = "<group>"; };
+		4706D660225CD21D00B3F1D3 /* ExportKeyHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportKeyHelper.swift; sourceTree = "<group>"; };
+		4706D662225CDFE200B3F1D3 /* TempKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TempKey.swift; sourceTree = "<group>"; };
 		470709172189BC3500DF71A3 /* plainThunderbird.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plainThunderbird.eml; sourceTree = "<group>"; };
 		470709212189C73900DF71A3 /* enc+signedInlineThunderbird.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "enc+signedInlineThunderbird.eml"; sourceTree = "<group>"; };
 		470709222189C73900DF71A3 /* encThunderbird.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = encThunderbird.eml; sourceTree = "<group>"; };
@@ -282,11 +295,14 @@
 		477548DD21F5DABE000B22A8 /* MailServerConnectionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailServerConnectionError.swift; sourceTree = "<group>"; };
 		477548E121F77466000B22A8 /* SecurityIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecurityIndicator.swift; sourceTree = "<group>"; };
 		477548E321F77BA0000B22A8 /* StudyParameterProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyParameterProtocol.swift; sourceTree = "<group>"; };
+		477670C3228453FB00043604 /* ButtonCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ButtonCell.xib; sourceTree = "<group>"; };
+		477670C5228454F700043604 /* ButtonCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonCell.swift; sourceTree = "<group>"; };
 		478154A621FF3F0900A931EC /* Warning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Warning.swift; sourceTree = "<group>"; };
 		478154A821FF3FF400A931EC /* Invitation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Invitation.swift; sourceTree = "<group>"; };
 		478154AB21FF6A9600A931EC /* Mailbot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Mailbot.swift; sourceTree = "<group>"; };
 		478154AD2200641900A931EC /* StudyTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyTest.swift; sourceTree = "<group>"; };
 		478AF714222FD5C600AEF69E /* IncomingMail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = IncomingMail.swift; path = mail/IncomingMail.swift; sourceTree = "<group>"; };
+		479011482289975C0057AB04 /* NoSecIconStyleKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NoSecIconStyleKit.swift; sourceTree = "<group>"; };
 		479AFDA122571AB90063A332 /* EccAlice(777879D4)–Public.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "EccAlice(777879D4)–Public.asc"; sourceTree = "<group>"; };
 		479B5976206914BE00B3944D /* CryptoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CryptoTests.swift; sourceTree = "<group>"; };
 		479C649521F2139B00A01071 /* support_pk.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = support_pk.asc; sourceTree = "<group>"; };
@@ -301,6 +317,10 @@
 		47CEF4EA2052C3C700887CDB /* ObjectivePGP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ObjectivePGP.framework; sourceTree = "<group>"; };
 		47CEF4EC2052C3E600887CDB /* ObjectivePGP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjectivePGP.framework; path = ../enzevalos_iphone_workspace/ObjectivePGP.framework; sourceTree = "<group>"; };
 		47D1302A1F7CEE6D007B14DF /* DebugSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugSettings.swift; sourceTree = "<group>"; };
+		47E7376D22845EC400972401 /* SecretKeyTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecretKeyTableViewController.swift; sourceTree = "<group>"; };
+		47E7376F22845F3A00972401 /* KeyViews.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyViews.storyboard; sourceTree = "<group>"; };
+		47E737732284610E00972401 /* KeyCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KeyCell.xib; sourceTree = "<group>"; };
+		47E737752284632F00972401 /* KeyCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyCell.swift; sourceTree = "<group>"; };
 		47E7BE5A22319B6900C8EF94 /* EncMailFromMac.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EncMailFromMac.eml; sourceTree = "<group>"; };
 		47E7BE5C22319B7000C8EF94 /* SignedMailFromMac.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SignedMailFromMac.eml; sourceTree = "<group>"; };
 		47E7BE5E22319B7D00C8EF94 /* SecureMailFromMac.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SecureMailFromMac.eml; sourceTree = "<group>"; };
@@ -455,7 +475,7 @@
 				47F867E42052B49800AA832F /* libbz2.tbd in Frameworks */,
 				47F867E22052B48E00AA832F /* libz.tbd in Frameworks */,
 				47F867E02052B47C00AA832F /* Security.framework in Frameworks */,
-				F120A7D31F7937BB006D5BF1 /* BuildFile in Frameworks */,
+				F120A7D31F7937BB006D5BF1 /* (null) in Frameworks */,
 				472F396E1E14F384009260FB /* CoreData.framework in Frameworks */,
 				9935BC866A86C4A4B9819F35 /* Pods_enzevalos_iphone.framework in Frameworks */,
 			);
@@ -609,6 +629,16 @@
 			path = "New Group";
 			sourceTree = "<group>";
 		};
+		4790114A228997620057AB04 /* StyleKits */ = {
+			isa = PBXGroup;
+			children = (
+				479011482289975C0057AB04 /* NoSecIconStyleKit.swift */,
+				F1984D711E1D327200804E1E /* IconsStyleKit.swift */,
+				F1984D731E1E92B300804E1E /* LabelStyleKit.swift */,
+			);
+			path = StyleKits;
+			sourceTree = "<group>";
+		};
 		47B91AC01EC0C1CF000AE3EE /* coredata */ = {
 			isa = PBXGroup;
 			children = (
@@ -730,6 +760,7 @@
 			isa = PBXGroup;
 			children = (
 				475B00301F7B9565006CDD41 /* SwiftPGP.swift */,
+				4706D662225CDFE200B3F1D3 /* TempKey.swift */,
 				476801DA218436B600F7F259 /* Autocrypt.swift */,
 				475B00311F7B9565006CDD41 /* Cryptography.swift */,
 				475B00321F7B9565006CDD41 /* CryptoObject.swift */,
@@ -796,8 +827,7 @@
 				476373C11E09BA88004D5EFE /* UserData.swift */,
 				A198270D1D9A8ABC0027F65C /* enzevalos_iphone-Bridging-Header.h */,
 				A1F9922B1DA7C9100073BF1B /* Main.storyboard */,
-				F1984D731E1E92B300804E1E /* LabelStyleKit.swift */,
-				F1984D711E1D327200804E1E /* IconsStyleKit.swift */,
+				4790114A228997620057AB04 /* StyleKits */,
 				A1123E6C1DA682850069551C /* Localizable.strings */,
 				A13526841D955BDF00D3BFE1 /* LaunchScreen.storyboard */,
 				A1EB05A31D956E32008659C1 /* Assets.xcassets */,
@@ -913,6 +943,8 @@
 				A12FC23020221A1400196008 /* ExportInfoViewController.swift */,
 				4707096C1F8F9F4900657F41 /* ExportViewController.swift */,
 				A1A9DE721F864B0500B808AA /* ExportCells.swift */,
+				4706D65E225B7B6B00B3F1D3 /* ItunesHandler.swift */,
+				4706D660225CD21D00B3F1D3 /* ExportKeyHelper.swift */,
 			);
 			name = exportKey;
 			sourceTree = "<group>";
@@ -941,6 +973,12 @@
 			isa = PBXGroup;
 			children = (
 				A1D5076E1E80257A00B68B38 /* KeyViewController.swift */,
+				477670C3228453FB00043604 /* ButtonCell.xib */,
+				477670C5228454F700043604 /* ButtonCell.swift */,
+				47E7376D22845EC400972401 /* SecretKeyTableViewController.swift */,
+				47E7376F22845F3A00972401 /* KeyViews.storyboard */,
+				47E737732284610E00972401 /* KeyCell.xib */,
+				47E737752284632F00972401 /* KeyCell.swift */,
 			);
 			name = keyView;
 			sourceTree = "<group>";
@@ -1162,12 +1200,15 @@
 			files = (
 				A102AA8A1EDDB4F40024B457 /* videoOnboarding2.m4v in Resources */,
 				A1F992391DA7DD2E0073BF1B /* InboxTableViewCell.xib in Resources */,
+				47E737742284610E00972401 /* KeyCell.xib in Resources */,
 				47CD5AAD2012369400E771A1 /* support_pk2.asc in Resources */,
 				A1EB058A1D956890008659C1 /* ContactCell.xib in Resources */,
 				F1F070281FA0DF3F004A860A /* Inbox.storyboard in Resources */,
 				4761420A1E082F9C00FD5E4F /* Settings.bundle in Resources */,
 				A16BA2121E0439B6005E29E3 /* providers.json in Resources */,
 				F12D8DBB2069422A0068788E /* About.storyboard in Resources */,
+				477670C4228453FB00043604 /* ButtonCell.xib in Resources */,
+				47E7377022845F3A00972401 /* KeyViews.storyboard in Resources */,
 				A1E5960E1FCC871F003791E9 /* researchteam.asc in Resources */,
 				A1123E6A1DA682850069551C /* Localizable.strings in Resources */,
 				A1F992291DA7C9100073BF1B /* Main.storyboard in Resources */,
@@ -1368,11 +1409,13 @@
 				A114E4321FACB23000E40243 /* StringExtension.swift in Sources */,
 				472F398C1E2519C8009260FB /* CNContactExtension.swift in Sources */,
 				F113C3851F30D06800E7F1D6 /* QRScannerView.swift in Sources */,
+				477670C6228454F700043604 /* ButtonCell.swift in Sources */,
 				F18B44601E704C550080C041 /* ReplaceSegue.swift in Sources */,
 				8428A8661F436A11007649A5 /* ArrowTableViewCell.swift in Sources */,
 				F1ACF21C1E0C1C6800C1B843 /* ContactViewController.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 */,
@@ -1420,16 +1463,19 @@
 				A182183421E51DD200918A29 /* IntroContactCell.swift in Sources */,
 				472F397C1E1D0B0B009260FB /* PersistentMail +CoreDataProperties.swift in Sources */,
 				8428A85C1F436A05007649A5 /* ArrowView.swift in Sources */,
+				47E737762284632F00972401 /* KeyCell.swift in Sources */,
 				A1EB05961D956939008659C1 /* InboxTableViewCell.swift in Sources */,
 				47F79240203492E3005E7DB6 /* KeyRecord+CoreDataClass.swift in Sources */,
 				A1083A541E8BFEA6003666B7 /* Onboarding.swift in Sources */,
 				A111F6AD1FA77B170060AFDE /* Logger.swift in Sources */,
+				4706D663225CDFE200B3F1D3 /* TempKey.swift in Sources */,
 				A13526791D955BDF00D3BFE1 /* AppDelegate.swift in Sources */,
 				476916A2216B86CF00491527 /* EnzevalosContact+CoreDataClass.swift in Sources */,
 				A1ECE54B1EFBE7ED0009349F /* FolderCell.swift in Sources */,
 				8428A85F1F436A05007649A5 /* GamificationData.swift in Sources */,
 				475DF4791F0D54C9009D807F /* Folder+CoreDataClass.swift in Sources */,
 				A15D215B223BE5F4003E0CE0 /* TempAttachment.swift in Sources */,
+				4706D65F225B7B6B00B3F1D3 /* ItunesHandler.swift in Sources */,
 				3EC35F2D200376A1008BDF95 /* SendViewController+Invitation.swift in Sources */,
 				475B00341F7B9565006CDD41 /* Cryptography.swift in Sources */,
 				A1EB057C1D956838008659C1 /* MailHandler.swift in Sources */,
@@ -1441,11 +1487,13 @@
 				A1EB05901D956923008659C1 /* ReadViewController.swift in Sources */,
 				472F398E1E251B8D009260FB /* MailAddress.swift in Sources */,
 				A198D2292056B384004CC838 /* SendViewDelegate.swift in Sources */,
+				479011492289975D0057AB04 /* NoSecIconStyleKit.swift in Sources */,
 				F12060821DA552FC00F6EF37 /* MailHandlerDelegator.swift in Sources */,
 				A12F91D821F3A99800AB0589 /* NSLayoutConstraintExtension.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 */,
 				8428A8681F436A11007649A5 /* SubBadgeTableViewCell.swift in Sources */,
 				A1EB05861D956872008659C1 /* FrequentCell.swift in Sources */,
diff --git a/enzevalos_iphone/AppDelegate.swift b/enzevalos_iphone/AppDelegate.swift
index 4dbd15bad971398e0828385f943ada6bb901d118..69dd886f71b21f48eb8bdb4a3015bbac062cbf57 100644
--- a/enzevalos_iphone/AppDelegate.swift
+++ b/enzevalos_iphone/AppDelegate.swift
@@ -34,6 +34,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     var orientationLock = UIInterfaceOrientationMask.allButUpsideDown
     var counterBackgroundFetch = 0
     var start: Date = Date()
+    let showAlertNoConnection = false
 
     
     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
@@ -44,7 +45,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
             kDefaultTitleFontSize = 33
             kDefaultBodyFontSize = 23
         }
-        
         resetApp()
         StudySettings.setupStudy()
         //StudySettings.firstMail()
@@ -84,6 +84,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
         UIApplication.shared.setMinimumBackgroundFetchInterval(backgroundFetchInterval)
         
         if hasUser() {
+            if let con = window?.rootViewController {
+                ItunesKeyHandling.simpleImportSecretKey(con: con)
+            }
             DataHandler.handler.startToSendMore()
         }
         return true
@@ -113,13 +116,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     func googleLogin(vc: UIViewController) {
         Logger.log(onboardingState: "oAuth")
         if self.currentReachabilityStatus == .notReachable {
-            let alert = UIAlertController(title: NSLocalizedString("Error.noInternet.Title", comment: ""), message: NSLocalizedString("Error.noInternet.Message", comment: ""), preferredStyle: .alert)
-            alert.addAction(UIAlertAction(title: "On", style: .default, handler: { [weak self] _ in
-                let contr = (Onboarding.onboarding() as! OnboardingViewController)
-                self?.window?.rootViewController = contr
-                contr.gotoLastPage()
-            }))
-            self.window?.rootViewController?.present(alert, animated: true)
+            if showAlertNoConnection {
+                let alert = UIAlertController(title: NSLocalizedString("Error.noInternet.Title", comment: ""), message: NSLocalizedString("Error.noInternet.Message", comment: ""), preferredStyle: .alert)
+                alert.addAction(UIAlertAction(title: "On", style: .default, handler: { [weak self] _ in
+                    let contr = (Onboarding.onboarding() as! OnboardingViewController)
+                    self?.window?.rootViewController = contr
+                    contr.gotoLastPage()
+                }))
+                self.window?.rootViewController?.present(alert, animated: true)
+            }
         } else {
             EmailHelper.singleton().doEmailLoginIfRequired(onVC: vc, completionBlock: {
                 guard let userEmail = EmailHelper.singleton().authorization?.userEmail, EmailHelper.singleton().authorization?.canAuthorize() ?? false else {
@@ -241,6 +246,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
 //        }
         resetApp()
         if hasUser() {
+            if let con = window?.rootViewController {
+                ItunesKeyHandling.simpleImportSecretKey(con: con)
+            }
             DataHandler.handler.startToSendMore()
         }
     }
@@ -407,9 +415,11 @@ extension AppDelegate { //Network check
     }
     
     func noInternetConnection(){
-        let alert = UIAlertController(title: NSLocalizedString("ReceiveError", comment: "There was an error"), message: NSLocalizedString("ErrorText", comment: ""), preferredStyle: UIAlertController.Style.alert)
-        alert.addAction(UIAlertAction(title: NSLocalizedString("Done", comment: ""), style: UIAlertAction.Style.default, handler: nil))
-        self.window?.rootViewController?.present(alert, animated: true, completion: nil)
+        if showAlertNoConnection {
+            let alert = UIAlertController(title: NSLocalizedString("Error.noInternet.Title", comment: ""), message: NSLocalizedString("Error.noInternet.Message", comment: ""), preferredStyle: .alert)
+            alert.addAction(UIAlertAction(title: NSLocalizedString("Done", comment: ""), style: UIAlertAction.Style.default, handler: nil))
+            self.window?.rootViewController?.present(alert, animated: true, completion: nil)
+        }
         if #available(iOS 10.0, *) {
             Timer.scheduledTimer(withTimeInterval: TimeInterval(5), repeats: true, block: ({(t: Timer) -> () in
                 if self.currentReachabilityStatus != .notReachable {
diff --git a/enzevalos_iphone/Base.lproj/Main.storyboard b/enzevalos_iphone/Base.lproj/Main.storyboard
index aa9d9444944a0dc2dab7d72dff390b22f69208d3..528407a84501de51bc058cdfc937f258b0c1e59a 100644
--- a/enzevalos_iphone/Base.lproj/Main.storyboard
+++ b/enzevalos_iphone/Base.lproj/Main.storyboard
@@ -16,7 +16,7 @@
             <objects>
                 <tableViewController storyboardIdentifier="UITableViewController-Ouw-WD-EV6" id="Ouw-WD-EV6" customClass="ReadViewController" customModule="enzevalos_iphone" customModuleProvider="target" sceneMemberID="viewController">
                     <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="8" sectionFooterHeight="1" id="oZT-OA-Re5">
-                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="504"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <sections>
@@ -576,8 +576,8 @@
                                                         <constraint firstAttribute="width" constant="15" id="ons-Pp-k3n"/>
                                                     </constraints>
                                                 </imageView>
-                                                <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sfv-2Q-95I">
-                                                    <rect key="frame" x="0.0" y="15" width="15" height="18"/>
+                                                <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sfv-2Q-95I">
+                                                    <rect key="frame" x="0.0" y="18" width="15" height="15"/>
                                                     <constraints>
                                                         <constraint firstAttribute="height" constant="15" id="SmT-9e-ovi"/>
                                                         <constraint firstAttribute="width" constant="15" id="uKU-PK-flD"/>
@@ -1015,7 +1015,7 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="VTZ-4w-fot">
-                                            <rect key="frame" x="16" y="0.0" width="269" height="43.5"/>
+                                            <rect key="frame" x="15" y="0.0" width="270" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1112,17 +1112,9 @@
                 <viewController id="jYD-fk-aIP" customClass="KeyViewController" customModule="enzevalos_iphone" customModuleProvider="target" sceneMemberID="viewController">
                     <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="ZAH-bZ-S6n">
                         <rect key="frame" x="0.0" y="0.0" width="320" height="504"/>
-                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES"/>
                         <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
-                        <button key="tableFooterView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="KaX-Vg-m5j">
-                            <rect key="frame" x="0.0" y="425.5" width="320" height="44"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" name=".AppleSystemUIFont" family=".AppleSystemUIFont" pointSize="15"/>
-                            <state key="normal" title="Copy Key"/>
-                            <connections>
-                                <action selector="copyKey:" destination="jYD-fk-aIP" eventType="primaryActionTriggered" id="dzD-Ik-KEZ"/>
-                            </connections>
-                        </button>
+                        <edgeInsets key="layoutMargins" top="10" left="20" bottom="10" right="20"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="KeyIDCell" textLabel="Z5E-3a-5Ef" detailTextLabel="Vun-jB-lcm" style="IBUITableViewCellStyleValue1" id="a8L-fv-t1M">
                                 <rect key="frame" x="0.0" y="55.5" width="320" height="44"/>
@@ -1132,14 +1124,14 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Z5E-3a-5Ef">
-                                            <rect key="frame" x="16" y="12" width="33.5" height="20.5"/>
+                                            <rect key="frame" x="20" y="12" width="33.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="KeyID" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Vun-jB-lcm">
-                                            <rect key="frame" x="259.5" y="12" width="44.5" height="20.5"/>
+                                            <rect key="frame" x="255.5" y="12" width="44.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1156,14 +1148,14 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="MR1-qA-5h4">
-                                            <rect key="frame" x="16" y="12" width="33.5" height="20.5"/>
+                                            <rect key="frame" x="20" y="12" width="33.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Fingerprint" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="yrS-w3-ION">
-                                            <rect key="frame" x="220.5" y="12" width="83.5" height="20.5"/>
+                                            <rect key="frame" x="216.5" y="12" width="83.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1180,14 +1172,14 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xLe-fn-BGo">
-                                            <rect key="frame" x="16" y="12" width="33.5" height="20.5"/>
+                                            <rect key="frame" x="20" y="12" width="33.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Encryption Type" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="zgd-cr-Abh">
-                                            <rect key="frame" x="180" y="12" width="124" height="20.5"/>
+                                            <rect key="frame" x="176" y="12" width="124" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1204,14 +1196,14 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="SsF-tc-fh9">
-                                            <rect key="frame" x="16" y="12" width="33.5" height="20.5"/>
+                                            <rect key="frame" x="20" y="12" width="33.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Discovery Time" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8Bf-LY-F5a">
-                                            <rect key="frame" x="186" y="12" width="118" height="20.5"/>
+                                            <rect key="frame" x="182" y="12" width="118" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1228,14 +1220,14 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xHD-7H-RVy">
-                                            <rect key="frame" x="16" y="12" width="33.5" height="20.5"/>
+                                            <rect key="frame" x="20" y="12" width="33.5" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
                                         <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Discovery Mail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="6ZP-Mh-yIb">
-                                            <rect key="frame" x="193" y="12" width="111" height="20.5"/>
+                                            <rect key="frame" x="189" y="12" width="111" height="20.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1268,10 +1260,25 @@
                                     <autoresizingMask key="autoresizingMask"/>
                                 </tableViewCellContentView>
                             </tableViewCell>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="CopyButtonCell" id="DEU-D7-xEg" userLabel="CopyButtonCell" customClass="ButtonCell" customModule="enzevalos_iphone" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="407.5" width="320" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="DEU-D7-xEg" id="hnv-Ix-6dI">
+                                    <rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="ChangeKeyCell" id="0lf-fY-Iuy" userLabel="ChangeKeyCell" customClass="ButtonCell" customModule="enzevalos_iphone" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="451.5" width="320" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="0lf-fY-Iuy" id="Nhq-ql-XcS">
+                                    <rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
                         </prototypes>
                     </tableView>
                     <connections>
-                        <outlet property="copyButton" destination="KaX-Vg-m5j" id="bsa-2i-eWo"/>
                         <outlet property="tableView" destination="ZAH-bZ-S6n" id="U5l-d5-Nz5"/>
                     </connections>
                 </viewController>
@@ -1284,7 +1291,7 @@
             <objects>
                 <tableViewController storyboardIdentifier="exportInfoViewController" id="7Pd-d5-0wz" customClass="ExportInfoViewController" customModule="enzevalos_iphone" customModuleProvider="target" sceneMemberID="viewController">
                     <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" dataMode="prototypes" style="grouped" separatorStyle="default" sectionIndexMinimumDisplayRowCount="1" rowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="2Uv-bd-pB1">
-                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="504"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
                         <prototypes>
@@ -1481,7 +1488,7 @@ Um deine sicheren E-Mails auch auf einem anderen Gerät lesen zu können, muss d
                                             <nil key="textColor"/>
                                             <nil key="highlightedColor"/>
                                         </label>
-                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3456-7890-1234-" textAlignment="center" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QaR-WZ-20E">
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="3456-7890-1234-" textAlignment="center" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QaR-WZ-20E">
                                             <rect key="frame" x="85.5" y="173.5" width="153" height="17.5"/>
                                             <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
                                             <nil key="textColor"/>
@@ -1854,15 +1861,9 @@ Um deine sicheren E-Mails auch auf einem anderen Gerät lesen zu können, muss d
         </scene>
     </scenes>
     <inferredMetricsTieBreakers>
-<!--<<<<<<< HEAD-->
-        <segue reference="hd4-SZ-DZ0"/>
-        <segue reference="hSn-Um-hji"/>
+        <segue reference="3Wb-uL-BB5"/>
+        <segue reference="td8-VW-Wrt"/>
         <segue reference="DcR-GX-scc"/>
-<!--=======-->
-        <segue reference="rhW-cI-4c4"/>
-        <segue reference="hSn-Um-hji"/>
-        <segue reference="btx-4o-o0r"/>
-<!-->>>>>>> master-->
         <segue reference="TgN-rB-esa"/>
         <segue reference="ecN-Wn-7S0"/>
     </inferredMetricsTieBreakers>
diff --git a/enzevalos_iphone/ButtonCell.swift b/enzevalos_iphone/ButtonCell.swift
new file mode 100644
index 0000000000000000000000000000000000000000..17c39f180f3904b8ac47e9f04aeee4e398b0fdcf
--- /dev/null
+++ b/enzevalos_iphone/ButtonCell.swift
@@ -0,0 +1,38 @@
+//
+//  ButtonCell.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 09.05.19.
+//  Copyright © 2019 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+class ButtonCell: UITableViewCell {
+    @IBOutlet weak var button: UIButton!
+    var listener: ButtonCellHandler?
+    var id = 0
+    var isEnabled: Bool {
+        set {
+            button.isEnabled = newValue
+            self.isUserInteractionEnabled = button.isEnabled
+        }
+        get {
+            self.isUserInteractionEnabled = button.isEnabled
+            return button.isEnabled
+        }
+    }
+    
+    
+    @IBAction func touchDown(_ sender: UIButton) {
+        if button.isEnabled, let l = listener {
+            l.touchDown(id: id)
+        }
+        
+    }
+}
+
+
+protocol ButtonCellHandler {
+    func touchDown(id: Int)
+}
diff --git a/enzevalos_iphone/ButtonCell.xib b/enzevalos_iphone/ButtonCell.xib
new file mode 100644
index 0000000000000000000000000000000000000000..ebbd604cb1c1e6e08490c156b937070d76bde3c9
--- /dev/null
+++ b/enzevalos_iphone/ButtonCell.xib
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="20" id="sQS-Z3-iQw" customClass="ButtonCell" customModule="enzevalos_iphone" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="sQS-Z3-iQw" id="AZc-cU-0wb" userLabel="ContentView">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6rJ-hZ-bvC">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                        <edgeInsets key="layoutMargins" top="20" left="8" bottom="20" right="8"/>
+                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
+                        <state key="normal" title="Button"/>
+                        <connections>
+                            <action selector="touchDown:" destination="sQS-Z3-iQw" eventType="touchDown" id="REz-2d-96j"/>
+                        </connections>
+                    </button>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="6rJ-hZ-bvC" firstAttribute="height" secondItem="AZc-cU-0wb" secondAttribute="height" id="MXG-hL-dmK"/>
+                    <constraint firstItem="6rJ-hZ-bvC" firstAttribute="centerX" secondItem="AZc-cU-0wb" secondAttribute="centerX" id="Nxq-hf-OUn"/>
+                    <constraint firstItem="6rJ-hZ-bvC" firstAttribute="centerY" secondItem="AZc-cU-0wb" secondAttribute="centerY" id="sn5-uN-8cd"/>
+                    <constraint firstItem="6rJ-hZ-bvC" firstAttribute="width" secondItem="AZc-cU-0wb" secondAttribute="width" id="yy0-dt-xml"/>
+                </constraints>
+            </tableViewCellContentView>
+            <connections>
+                <outlet property="button" destination="6rJ-hZ-bvC" id="d7K-Sw-tEf"/>
+            </connections>
+            <point key="canvasLocation" x="133.59999999999999" y="154.72263868065968"/>
+        </tableViewCell>
+    </objects>
+</document>
diff --git a/enzevalos_iphone/DataHandler.swift b/enzevalos_iphone/DataHandler.swift
index d6d6b4e41541ec8d4a99a9a683af91e77bd53f06..40310396723312aa9ffbdbc9ed79d9cdb9ce1c42 100644
--- a/enzevalos_iphone/DataHandler.swift
+++ b/enzevalos_iphone/DataHandler.swift
@@ -458,6 +458,10 @@ class DataHandler {
         }
         return createNewSecretKey(adr: "")
     }
+    
+    func changePrefKey(newPrefKey: SecretKey) {
+        UserManager.storeUserValue(newPrefKey.keyID as AnyObject, attribute: Attribute.prefSecretKeyID)
+    }
 
     func findSecretKeys() -> [SecretKey] {
         if let result = findAll("SecretKey") {
diff --git a/enzevalos_iphone/ExportKeyHelper.swift b/enzevalos_iphone/ExportKeyHelper.swift
new file mode 100644
index 0000000000000000000000000000000000000000..793ec90075de9d01798930e40445c24052a291eb
--- /dev/null
+++ b/enzevalos_iphone/ExportKeyHelper.swift
@@ -0,0 +1,19 @@
+//
+//  ExportKeyHelper.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 09.04.19.
+//  Copyright © 2019 fu-berlin. All rights reserved.
+//
+
+import UIKit
+
+
+extension UIColor {
+    
+    struct KeyExport {
+        
+        static let publicKey = UIColor.green
+        static let secretKey = UIColor.white
+    }
+}
diff --git a/enzevalos_iphone/InboxViewController.swift b/enzevalos_iphone/InboxViewController.swift
index e188721696adea2cd24dddcbff0db07bc6c2b607..9ad8ecd24e07808a39acbc48c8ab8b240414030c 100644
--- a/enzevalos_iphone/InboxViewController.swift
+++ b/enzevalos_iphone/InboxViewController.swift
@@ -208,7 +208,8 @@ class InboxViewController: UITableViewController, InboxCellDelegator {
                     let records = folder.records.filter({
                         $0.isUser
                     })
-                    if let record = records.filter({ $0.isSecure }).first {
+                    let prefKeyID = UserManager.loadUserValue(Attribute.prefSecretKeyID) as? String
+                    if let record = records.filter({ $0.isSecure && ($0.keyID == prefKeyID)}).first {
                         DestinationViewController.keyRecord = record
                     } else {
                         let keyID = UserManager.loadUserValue(Attribute.prefSecretKeyID) as! String
diff --git a/enzevalos_iphone/ItunesHandler.swift b/enzevalos_iphone/ItunesHandler.swift
new file mode 100644
index 0000000000000000000000000000000000000000..ae20a41e8e07700e1641e5a3d6a98d514ab98e67
--- /dev/null
+++ b/enzevalos_iphone/ItunesHandler.swift
@@ -0,0 +1,144 @@
+//
+//  ItunesKeyHandling.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 08.04.19.
+//  Copyright © 2019 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+class ItunesKeyHandling {
+    static func simpleImportSecretKey(con: UIViewController) {
+        var sks = iTunesKeyHandler.storedKeys.filter{$0.isSecret}
+        // filter known secret keys
+        sks = sks.filter{DataHandler.handler.prefSecretKey()?.keyID != $0.keyID}
+        let knownIds = DataHandler.handler.findSecretKeys().map{$0.keyID}
+        sks = sks.filter{!knownIds.contains($0.keyID)}
+        // Import only keys with our mail addr.
+        sks = sks.filter{
+            if let useradr = UserManager.loadUserValue(Attribute.userAddr) as? String {
+                return !$0.mailAddresses.contains(useradr)
+            }
+            return false
+        }
+        if let sk = sks.first {
+            let alert = MinimalImportUI(secretKey: sk, controller: con)
+            alert.importSecretKeyDialog(first: true)
+        }
+    }
+    static let iTunesKeyHandler = ItunesKeyHandling()
+    
+    var newSecretKeys: [TempKey] {
+        get {
+            var knownIDs = DataHandler.handler.findSecretKeys().map{$0.keyID}
+            knownIDs = knownIDs.filter{return !($0 == "" || $0 == nil)}
+            var newSecretKeys = storedKeys.filter{$0.isSecret}
+            newSecretKeys = newSecretKeys.filter{!knownIDs.contains($0.keyID)}
+            return newSecretKeys
+        }
+    }
+    
+    var hasStoredKeys: Bool {
+        get {
+            return !keyURL.isEmpty
+        }
+    }
+    var storedKeys: [TempKey] {
+        get {
+            var keys: [TempKey] = []
+            for url in keyURL {
+                if let file = try? FileHandle(forReadingFrom: url){
+                    let data = file.readDataToEndOfFile()
+                    var creationDate = Date()
+                    if let attrs = try? fileManager.attributesOfItem(atPath: url.path) as NSDictionary, let date = attrs.fileCreationDate() {
+                        creationDate = date
+                    }
+                    keys.append(contentsOf: pgp.readKeys(data: data,importDate: creationDate))
+                }
+            }
+            return keys
+        }
+    }
+    
+    private let fileManager: FileManager
+    private let pgp = SwiftPGP()
+    private var keyURL: [URL] {
+        get {
+            var keys: [URL] = []
+            let dirs = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
+            for url in dirs {
+                print(url)
+                if let files = try? fileManager.contentsOfDirectory(at: url, includingPropertiesForKeys: nil, options: .skipsHiddenFiles) {
+                    let keyFiles = files.filter{ $0.pathExtension == "asc"}
+                    keys.append(contentsOf: keyFiles)
+                }
+            }
+            return keys
+        }
+    }
+
+    init() {
+        fileManager = FileManager.default
+    }
+    
+    func importPublicKeys() -> [String]{
+        var publicKeys = storedKeys.filter{!$0.isSecret}
+        publicKeys = publicKeys.filter{DataHandler.handler.findKey(keyID: $0.keyID!) == nil}
+        let keyIds = pgp.store(tempKeys: publicKeys)
+        //TODO: Store in Datahandler -> in tempKey?
+        return keyIds
+    }
+}
+
+class MinimalImportUI {
+    let secretKey: TempKey
+    let controller: UIViewController
+    init(secretKey: TempKey, controller: UIViewController) {
+        self.secretKey = secretKey
+        self.controller = controller
+    }
+    
+    var secretKeyPasswordField: UITextField? = nil
+    
+    func importSecretKeyDialog(first: Bool) {
+        var message = String(format: NSLocalizedString("Read.Import.Secret.Body.Plain", comment: "NewSecretKeyMessage"), secretKey.keyID ?? "")
+        if secretKey.hasPassword {
+            message = String(format: NSLocalizedString("Read.Import.Secret.Body.PW", comment: "NewSecretKeyMessage"), secretKey.keyID ?? "")
+        }
+        if !first {
+            message = String(format: NSLocalizedString("Read.Import.Secret.Body.Wrong", comment: "NewSecretKeyMessage"), secretKey.keyID ?? "")
+        }
+        let alert = UIAlertController(title: NSLocalizedString("Read.Import.Secret.Title", comment: "NewSecretKeyTitle"), message: message, preferredStyle: UIAlertController.Style.alert)
+        alert.addAction(UIAlertAction(title: NSLocalizedString("Read.Import.Secret.No", comment: "NoSecretKeyImport"), style: UIAlertAction.Style.destructive, handler: { (_: UIAlertAction) -> Void in
+        }))
+        alert.addAction(UIAlertAction(title: NSLocalizedString("Read.Import.Secret.Ok", comment: "Import secret Key"), style: UIAlertAction.Style.default, handler: importSecretKey))
+        if secretKey.hasPassword {
+            alert.addTextField(configurationHandler: newSecretkeyPassword(textField:))
+        }
+        controller.present(alert, animated: true, completion: nil)
+    }
+    
+    private func newSecretkeyPassword(textField: UITextField!) {
+        if let tField = textField {
+            tField.isSecureTextEntry = true
+            secretKeyPasswordField = tField
+        }
+    }
+    private func importSecretKey(alertAction: UIAlertAction!) {
+        if (alertAction) != nil {
+            if let pw = secretKeyPasswordField?.text {
+                if secretKey.testPassword(guess: pw) {
+                    let keyIDs = SwiftPGP.init().store(tempKeys: [secretKey])
+                    _ = DataHandler.handler.newSecretKeys(keyIds: keyIDs, addPKs: true)
+                }
+                else {
+                    importSecretKeyDialog(first: false)
+                }
+            } else {
+                let keyIDs = SwiftPGP.init().store(tempKeys: [secretKey])
+                _ = DataHandler.handler.newSecretKeys(keyIds: keyIDs, addPKs: true)
+            }
+        }
+    }
+}
diff --git a/enzevalos_iphone/KeyCell.swift b/enzevalos_iphone/KeyCell.swift
new file mode 100644
index 0000000000000000000000000000000000000000..82e10b61ddcb569143f106db45cc215419a0ea9f
--- /dev/null
+++ b/enzevalos_iphone/KeyCell.swift
@@ -0,0 +1,23 @@
+//
+//  KeyCell.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 09.05.19.
+//  Copyright © 2019 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+class KeyCell: UITableViewCell {
+    @IBOutlet weak var idLabel: UILabel!
+    @IBOutlet weak var originLabel: UILabel!
+    @IBOutlet weak var dateLabel: UILabel!
+    @IBOutlet weak var prefIcon: UIImageView!
+    @IBOutlet weak var orignName: UILabel!
+    @IBOutlet weak var dateName: UILabel!
+    
+    
+    
+    
+    
+}
diff --git a/enzevalos_iphone/KeyCell.xib b/enzevalos_iphone/KeyCell.xib
new file mode 100644
index 0000000000000000000000000000000000000000..2420ba39656ea61c047737e70360dda6a87111cf
--- /dev/null
+++ b/enzevalos_iphone/KeyCell.xib
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="148" id="wRd-M0-fdb" customClass="KeyCell" customModule="enzevalos_iphone" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="406" height="148"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="wRd-M0-fdb" id="Emm-NH-1K1">
+                <rect key="frame" x="0.0" y="0.0" width="406" height="147.5"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" misplaced="YES" text="ID" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1WN-Xm-ow9">
+                        <rect key="frame" x="20" y="17" width="259" height="51"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" insetsLayoutMarginsFromSafeArea="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vo5-ax-qtB">
+                        <rect key="frame" x="305" y="37" width="80" height="80"/>
+                        <constraints>
+                            <constraint firstAttribute="width" secondItem="vo5-ax-qtB" secondAttribute="height" multiplier="1:1" id="lxE-e0-5DU"/>
+                        </constraints>
+                    </imageView>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="known since" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LBs-As-DEo">
+                        <rect key="frame" x="20" y="63" width="75" height="16"/>
+                        <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="origin:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z7A-kG-Hmf">
+                        <rect key="frame" x="20" y="79" width="38" height="16"/>
+                        <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="yesterday" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QMx-FE-uVs">
+                        <rect key="frame" x="105" y="63" width="59.5" height="16"/>
+                        <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="iTunes import" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n9T-OX-sTx">
+                        <rect key="frame" x="68" y="79" width="83" height="16"/>
+                        <fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="1WN-Xm-ow9" firstAttribute="width" secondItem="Emm-NH-1K1" secondAttribute="width" id="A9A-XA-qVq"/>
+                    <constraint firstItem="1WN-Xm-ow9" firstAttribute="top" secondItem="lA0-Xm-beh" secondAttribute="top" constant="10" id="AkA-nz-1cY"/>
+                    <constraint firstItem="n9T-OX-sTx" firstAttribute="leading" secondItem="z7A-kG-Hmf" secondAttribute="trailing" constant="10" id="BG2-Vl-rvF"/>
+                    <constraint firstItem="1WN-Xm-ow9" firstAttribute="leading" secondItem="Emm-NH-1K1" secondAttribute="leading" constant="20" id="CKO-wk-Szk"/>
+                    <constraint firstItem="z7A-kG-Hmf" firstAttribute="leading" secondItem="Emm-NH-1K1" secondAttribute="leading" constant="20" id="D5n-Vf-TMR"/>
+                    <constraint firstItem="lA0-Xm-beh" firstAttribute="trailing" secondItem="vo5-ax-qtB" secondAttribute="trailing" constant="20" id="Fml-F6-GtS"/>
+                    <constraint firstItem="LBs-As-DEo" firstAttribute="leading" secondItem="Emm-NH-1K1" secondAttribute="leading" constant="20" id="Qdx-37-iHt"/>
+                    <constraint firstItem="z7A-kG-Hmf" firstAttribute="firstBaseline" secondItem="LBs-As-DEo" secondAttribute="baseline" constant="16" symbolType="layoutAnchor" id="Vn3-iv-9rd"/>
+                    <constraint firstItem="lA0-Xm-beh" firstAttribute="bottom" secondItem="z7A-kG-Hmf" secondAttribute="bottom" constant="10" id="Wgb-NL-oZY"/>
+                    <constraint firstItem="QMx-FE-uVs" firstAttribute="centerY" secondItem="LBs-As-DEo" secondAttribute="centerY" id="b7W-wn-XxQ"/>
+                    <constraint firstItem="LBs-As-DEo" firstAttribute="firstBaseline" secondItem="1WN-Xm-ow9" secondAttribute="baseline" constant="20" symbolType="layoutAnchor" id="hse-xA-Xhf"/>
+                    <constraint firstItem="vo5-ax-qtB" firstAttribute="centerY" secondItem="lA0-Xm-beh" secondAttribute="centerY" id="qmq-gD-8Cp"/>
+                    <constraint firstItem="n9T-OX-sTx" firstAttribute="centerY" secondItem="z7A-kG-Hmf" secondAttribute="centerY" id="seT-Da-i22"/>
+                    <constraint firstItem="QMx-FE-uVs" firstAttribute="leading" secondItem="LBs-As-DEo" secondAttribute="trailing" constant="10" id="zR3-OB-U9G"/>
+                </constraints>
+                <viewLayoutGuide key="safeArea" id="lA0-Xm-beh"/>
+            </tableViewCellContentView>
+            <connections>
+                <outlet property="dateLabel" destination="QMx-FE-uVs" id="7Qh-1w-o7v"/>
+                <outlet property="dateName" destination="LBs-As-DEo" id="aDY-hl-8AS"/>
+                <outlet property="idLabel" destination="1WN-Xm-ow9" id="9ug-Yf-pyT"/>
+                <outlet property="originLabel" destination="n9T-OX-sTx" id="xki-TX-CL7"/>
+                <outlet property="orignName" destination="z7A-kG-Hmf" id="ZM1-jZ-ura"/>
+                <outlet property="prefIcon" destination="vo5-ax-qtB" id="NVe-Hh-iZP"/>
+            </connections>
+            <point key="canvasLocation" x="121.59999999999999" y="-107.0464767616192"/>
+        </tableViewCell>
+    </objects>
+</document>
diff --git a/enzevalos_iphone/KeyViewController.swift b/enzevalos_iphone/KeyViewController.swift
index 3efb3f5f62e5a85b261b4b78fdbd1196c70b0611..2a222cf44c0b1e97718145c184c01d7b563913c7 100644
--- a/enzevalos_iphone/KeyViewController.swift
+++ b/enzevalos_iphone/KeyViewController.swift
@@ -23,39 +23,18 @@ import UIKit
 class KeyViewController: UIViewController {
 
     @IBOutlet var tableView: UITableView!
-    @IBOutlet weak var copyButton: UIButton!
 
     var openDate: Date = Date() //used for logging issues [see Logger.log(keyViewClose keyID:String, timevisited: Date)]
 
     var record: KeyRecord?
+    var copyButton: ButtonCell?
     override func viewDidLoad() {
         super.viewDidLoad()
         tableView.dataSource = self
-        tableView.delegate = self
-        tableView.rowHeight = UITableView.automaticDimension
-        tableView.estimatedRowHeight = 100
         openDate = Date()
-//        Logger.queue.async(flags: .barrier) {
         if let record = self.record, let keyID = record.keyID {
             Logger.log(keyViewOpen: keyID)
         }
-//        }
-        copyButton.setTitle(NSLocalizedString("copyKey", comment: ""), for: .normal)
-        copyButton.setTitle(NSLocalizedString("copied", comment: "the key has been copied to the clipboard"), for: .disabled)
-    }
-
-    @IBAction func copyKey(_ sender: AnyObject) {
-        guard let record = record, let keyId = record.keyID else {
-            return
-        }
-
-        let swiftpgp = SwiftPGP()
-        if let key = swiftpgp.exportKey(id: keyId, isSecretkey: false, autocrypt: false) {
-            UIPasteboard.general.string = key
-            copyButton.isEnabled = false
-        } else {
-            print("Error while getting key")
-        }
     }
 
     override func viewDidDisappear(_ animated: Bool) {
@@ -83,6 +62,11 @@ extension KeyViewController: UITableViewDataSource {
             }
             return 0
         }
+        if toSectionType(section) == .keyActions {
+            if let isUser = record?.isUser, isUser {
+                return 2
+            }
+        }
         return 1
     }
 
@@ -114,6 +98,7 @@ extension KeyViewController: UITableViewDataSource {
                 }
                 cell.detailTextLabel?.text = result
                 cell.textLabel?.text = NSLocalizedString("Fingerprint", comment: "Fingerprint of key")
+                cell.isHidden = true
                 return cell
             }
             else if toRowType(indexPath) == .encryptionType {
@@ -166,6 +151,33 @@ extension KeyViewController: UITableViewDataSource {
             cell.textLabel?.text = record?.addressNames[indexPath.row]
             return cell
         }
+        else if toSectionType(indexPath.section) == .keyActions {
+            var cell: ButtonCell
+            if let tmpCell = tableView.dequeueReusableCell(withIdentifier: "ButtonCell") as? ButtonCell{
+                cell = tmpCell
+            } else {
+                tableView.register(UINib.init(nibName: "ButtonCell", bundle: nil), forCellReuseIdentifier: "ButtonCell")
+                cell = tableView.dequeueReusableCell(withIdentifier: "ButtonCell") as! ButtonCell
+            }
+            if indexPath.row == 0 {
+                // Copy button
+                cell.button.setTitle(NSLocalizedString("copyKey", comment: ""), for: .normal)
+                cell.button.setTitle(NSLocalizedString("copied", comment: "the key has been copied to the clipboard"), for: .disabled)
+                cell.id = KeyActions.Copy.hashValue
+                cell.listener = self
+                copyButton = cell
+            }
+            else if indexPath.row == 1 {
+                // Change key
+                cell.button.setTitle("Change prefered key", for: UIControl.State())
+                cell.id = KeyActions.Change.hashValue
+                cell.listener = self
+                if DataHandler.handler.findSecretKeys().count < 2 && !ItunesKeyHandling.iTunesKeyHandler.hasStoredKeys {
+                    cell.isHidden = true
+                }
+            }
+            return cell
+        }
 
         let cell = tableView.dequeueReusableCell(withIdentifier: "VerifiedCell")!
         cell.textLabel?.text = NSLocalizedString("KeyNotFound", comment: "there was no key found. Contact developers")
@@ -181,7 +193,7 @@ extension KeyViewController: UITableViewDataSource {
 
     func numberOfSections(in tableView: UITableView) -> Int {
         if let key = record?.activeKey {
-            var sections = 1
+            var sections = 2
             if key.mailaddresses != nil {
                 sections += 1
             }
@@ -203,24 +215,28 @@ extension KeyViewController: UITableViewDataSource {
     func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
         if toSectionType(indexPath.section) == .keyDetails {
             if toRowType(indexPath) == .fingerprint {
-                return 100
+                return 80
             }
         }
-        return UITableView.automaticDimension
+        return 44
     }
-
     func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
-        return 150
+        return 44
     }
 
     func toSectionType(_ sectionNumber: Int) -> KeyViewSectionType {
         var returnValue: KeyViewSectionType = .noKey
 
-        if record?.activeKey != nil {
-            returnValue = .keyDetails//.KeyID
+        if let record = record, record.activeKey != nil {
+            returnValue = .keyDetails
             //addresses
             if sectionNumber != 0 {
-                returnValue = .addresses
+                returnValue = .keyActions
+                if sectionNumber == 1 {
+                    if record.addresses.count > 0 {
+                        returnValue = .addresses
+                    }
+                }
             }
         }
         return returnValue
@@ -270,14 +286,41 @@ extension KeyViewController: UITableViewDataSource {
     }
 }
 
-extension KeyViewController: UITableViewDelegate {
-
+extension KeyViewController: ButtonCellHandler {
+    func touchDown(id: Int) {
+        if id == KeyActions.Copy.hashValue {
+            // copy key
+            guard let record = record, let keyId = record.keyID else {
+                return
+            }
+            
+            let swiftpgp = SwiftPGP()
+            if let key = swiftpgp.exportKey(id: keyId, isSecretkey: false, autocrypt: false) {
+                UIPasteboard.general.string = key
+                if let copyCell = copyButton {
+                    copyCell.isEnabled = false
+                }
+            } else {
+                print("Error while getting key")
+            }
+        }
+        else if id == KeyActions.Change.hashValue {
+            if let secretKeyCon = SecretKeyTableViewController.storyboardInstance() {
+                self.navigationController?.pushViewController(secretKeyCon, animated: true)
+            }
+        }
+    }
+    
+    
 }
-
 enum KeyViewSectionType: Int {
-    case noKey = 0, keyDetails, addresses
+    case noKey = 0, keyDetails, addresses, keyActions
 }
 
 enum KeyViewRowType: Int {
     case noKey = 0, keyID, fingerprint, encryptionType, discoveryTime, discoveryMail, verified, revoked
 }
+
+enum KeyActions {
+    case Copy, Change
+}
diff --git a/enzevalos_iphone/KeyViews.storyboard b/enzevalos_iphone/KeyViews.storyboard
new file mode 100644
index 0000000000000000000000000000000000000000..d79070c65596a14e58770ea810b183a17ad36066
--- /dev/null
+++ b/enzevalos_iphone/KeyViews.storyboard
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Secret Key Table View Controller-->
+        <scene sceneID="lfw-yl-FFA">
+            <objects>
+                <tableViewController storyboardIdentifier="secretKeyTable" useStoryboardIdentifierAsRestorationIdentifier="YES" id="fU6-5r-oyh" customClass="SecretKeyTableViewController" customModule="enzevalos_iphone" customModuleProvider="target" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="svb-Mv-YOF">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="Lv2-vZ-5BE">
+                                <rect key="frame" x="0.0" y="28" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Lv2-vZ-5BE" id="DAm-kl-UmH">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="fU6-5r-oyh" id="2Gn-mS-0Sh"/>
+                            <outlet property="delegate" destination="fU6-5r-oyh" id="65L-kD-eMs"/>
+                        </connections>
+                    </tableView>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dc5-2h-hzE" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-609" y="-361"/>
+        </scene>
+    </scenes>
+</document>
diff --git a/enzevalos_iphone/Logger.swift b/enzevalos_iphone/Logger.swift
index 6e737cbbb75595805a324c7912f779c603c89b35..edec43b402338f04c03f58515e5aed63bd42b49a 100644
--- a/enzevalos_iphone/Logger.swift
+++ b/enzevalos_iphone/Logger.swift
@@ -22,7 +22,7 @@ import Foundation
 
 class Logger {
 
-    static var logging = StudySettings.studyMode
+    static var logging = false //StudySettings.studyMode
 
     static let queue = DispatchQueue(label: "logging", qos: .background)
 
diff --git a/enzevalos_iphone/Onboarding.swift b/enzevalos_iphone/Onboarding.swift
index 8c7769ca0a0494f906d70c3e7db2100ffe8fdcad..46495007e3fab530b8c45af7fe089ac33d4951bb 100644
--- a/enzevalos_iphone/Onboarding.swift
+++ b/enzevalos_iphone/Onboarding.swift
@@ -52,7 +52,7 @@ class Onboarding: NSObject {
     
     static var loginViewController: UIViewController?
 
-    static let font = UIFont.init(name: "Helvetica-Light", size: 28)
+    static let font = UIFont.init(name: "Helvetica-Light", size: 22)
     static let padding: CGFloat = 30
 
     static var doWhenDone: () -> () = checkIMAPConfig
@@ -60,6 +60,7 @@ class Onboarding: NSObject {
     static var credentialFails = 0
     static var testConfig = false
     static var startTime: Date?
+    static var showAuthType = false
     
     static var authTypeTest = 0
 
@@ -365,9 +366,8 @@ class Onboarding: NSObject {
 
         let imapLabel = UILabel.init()
         imapLabel.text = "IMAP-Port"
-
-        imapLabel.textColor = textColor
         imapLabel.font = font
+        imapLabel.textColor = textColor
         imapLabel.numberOfLines = 0
         imapLabel.textAlignment = NSTextAlignment.center
         imapLabel.frame = CGRect.init(x: 0, y: imapServer.frame.height + imapServerUnderline.frame.height + padding, width: 50, height: 30)
@@ -394,7 +394,7 @@ class Onboarding: NSObject {
         imapTransDataDelegate = PickerDataDelegate.init(rows: Array(transportRows.values))
         imapTransportEncryption.dataSource = imapTransDataDelegate
         imapTransportEncryption.delegate = imapTransDataDelegate
-        imapTransportEncryption.frame = CGRect.init(x: 0, y: 0, width: 50, height: 100)
+        imapTransportEncryption.frame = CGRect.init(x: 0, y: 0, width: 50, height: 200)
         imapTransportEncryption.reloadAllComponents()
         
         imapTransDataDelegate.pickedValue = transportRows[imapConnRow]!
@@ -410,26 +410,30 @@ class Onboarding: NSObject {
         imapAuthLabel.textAlignment = NSTextAlignment.center;
         imapAuthLabel.frame = CGRect.init(x: 0, y: imapTransportEncryption.frame.height, width: 50, height: 30)
 
-        imapAuthentication = UIPickerView()
-        imapAuthDataDelegate = PickerDataDelegate.init(rows: Array(authenticationRows.values))
-        imapAuthentication.dataSource = imapAuthDataDelegate
-        imapAuthentication.delegate = imapAuthDataDelegate
-        imapAuthentication.frame = CGRect.init(x: 0, y: imapTransportEncryption.frame.height + imapAuthLabel.frame.height, width: 50, height: 100)
-        imapAuthentication.reloadAllComponents()
-        imapAuthentication.reloadInputViews()
-        imapAuthentication.tintColor = textColor
-        imapAuthDataDelegate.pickedValue = authenticationRows[imapAuthTypeRow]!
-        imapAuthTypeRow = Array(authenticationRows.values).index(of: authenticationRows[imapAuthTypeRow]!)!
-        imapAuthentication.selectRow(imapAuthTypeRow, inComponent: 0, animated: false)
-
+        if showAuthType {
+            imapAuthentication = UIPickerView()
+            imapAuthDataDelegate = PickerDataDelegate.init(rows: Array(authenticationRows.values))
+            imapAuthentication.dataSource = imapAuthDataDelegate
+            imapAuthentication.delegate = imapAuthDataDelegate
+            imapAuthentication.frame = CGRect.init(x: 0, y: imapTransportEncryption.frame.height + imapAuthLabel.frame.height, width: 50, height: 100)
+            imapAuthentication.reloadAllComponents()
+            imapAuthentication.reloadInputViews()
+            imapAuthentication.tintColor = textColor
+            imapAuthDataDelegate.pickedValue = authenticationRows[imapAuthTypeRow]!
+            imapAuthTypeRow = Array(authenticationRows.values).index(of: authenticationRows[imapAuthTypeRow]!)!
+            imapAuthentication.selectRow(imapAuthTypeRow, inComponent: 0, animated: false)
+        }
+        
         let imapAuth = UIView.init(frame: CGRect.init(x: 0, y: 0, width: 50, height: imapTransportEncryption.frame.height + padding + imapAuthLabel.frame.height + imapAuthentication.frame.height))
         imapAuth.addSubview(imapTransportEncryption)
-        imapAuth.addSubview(imapAuthLabel)
-        imapAuth.addSubview(imapAuthentication)
+        if showAuthType {
+            imapAuth.addSubview(imapAuthLabel)
+            imapAuth.addSubview(imapAuthentication)
+        }
         let boolPointer = UnsafeMutablePointer<ObjCBool>.allocate(capacity: 1)
         boolPointer[0] = false
         let imap2 = OnboardingContentViewController.content(withTitle: nil, body: "IMAP-" + NSLocalizedString("Transportencryption", comment: ""), videoURL: nil, inputView: imapAuth, buttonText: nil, actionBlock: nil, withPadding: boolPointer)
-
+        
 
         smtpServer.borderStyle = UITextField.BorderStyle.none
         smtpServer.textColor = textColor
@@ -437,6 +441,7 @@ class Onboarding: NSObject {
         smtpServer.autocorrectionType = UITextAutocorrectionType.no
         smtpServer.returnKeyType = .done
         smtpServer.delegate = textDelegate
+        smtpServer.font = font
 
         let smtpServerUnderline = UIView.init(frame: CGRect.init(x: 0, y: smtpServer.frame.maxY, width: smtpServer.frame.width, height: 0.5))
         smtpServerUnderline.backgroundColor = textColor
@@ -451,6 +456,7 @@ class Onboarding: NSObject {
         smtpLabel.frame = CGRect.init(x: 0, y: smtpServer.frame.height + smtpServerUnderline.frame.height + padding, width: 50, height: 30)
         smtpPort.borderStyle = UITextField.BorderStyle.roundedRect
         smtpPort.textColor = textColor
+        smtpPort.font = font
         smtpPort.borderStyle = UITextField.BorderStyle.none
         smtpPort.keyboardType = UIKeyboardType.numberPad
         smtpPort.returnKeyType = .done
@@ -473,13 +479,13 @@ class Onboarding: NSObject {
         smtpTransDataDelegate = PickerDataDelegate.init(rows: Array(transportRows.values))
         smtpTransportEncryption.dataSource = smtpTransDataDelegate
         smtpTransportEncryption.delegate = smtpTransDataDelegate
-        smtpTransportEncryption.frame = CGRect.init(x: 0, y: 0, width: 50, height: 100)
+        smtpTransportEncryption.frame = CGRect.init(x: 0, y: 0, width: 50, height: 200)
         smtpTransportEncryption.reloadAllComponents()
         
         smtpTransDataDelegate.pickedValue = transportRows[smtpConnTypeRow]!
         smtpConnTypeRow = smtpTransDataDelegate.rows.index(of: transportRows[smtpConnTypeRow]!)!
         smtpTransportEncryption.selectRow(smtpConnTypeRow, inComponent: 0, animated: false)
-
+        
         let smtpAuthLabel = UILabel.init()
         smtpAuthLabel.text = "SMTP-" + NSLocalizedString("Authentification", comment: "")
 
@@ -500,11 +506,13 @@ class Onboarding: NSObject {
         smtpAuthDataDelegate.pickedValue = authenticationRows[smtpAuthTypeRow]!
         smtpAuthTypeRow = Array(authenticationRows.values).index(of: authenticationRows[smtpAuthTypeRow]!)!
         smtpAuthentication.selectRow(smtpAuthTypeRow, inComponent: 0, animated: false)
-
+        
         let smtpAuth = UIView.init(frame: CGRect.init(x: 0, y: 0, width: 50, height: smtpTransportEncryption.frame.height + padding + smtpAuthLabel.frame.height + smtpAuthentication.frame.height))
         smtpAuth.addSubview(smtpTransportEncryption)
-        smtpAuth.addSubview(smtpAuthLabel)
-        smtpAuth.addSubview(smtpAuthentication)
+        if showAuthType {
+            smtpAuth.addSubview(smtpAuthLabel)
+            smtpAuth.addSubview(smtpAuthentication)
+        }
         boolPointer[0] = false
         let smtp2 = OnboardingContentViewController.content(withTitle: nil, body: "SMTP-" + NSLocalizedString("Transportencryption", comment: ""), videoURL: nil, inputView: smtpAuth, buttonText: nil, actionBlock: nil, withPadding: boolPointer)
 
@@ -591,16 +599,16 @@ class Onboarding: NSObject {
             let imapConName = imapTransDataDelegate.pickedValue
             let smtpConnName = smtpTransDataDelegate.pickedValue
             let smtpAuthName = smtpAuthDataDelegate.pickedValue
-            var imapAuthValue = 0
+            var imapAuthValue: Int? = nil
             var imapConnValue = 0
-            var smtpAuthValue = 0
+            var smtpAuthValue: Int? = nil
             var smtpConnValue = 0
         
             for (value, name) in Onboarding.authenticationRows {
-                if name == imapAuthName {
+                if name == imapAuthName && showAuthType {
                     imapAuthValue = value
                 }
-                if name == smtpAuthName {
+                if name == smtpAuthName && showAuthType {
                     smtpAuthValue = value
                 }
             }
diff --git a/enzevalos_iphone/PLists/enzevalos-Info.plist b/enzevalos_iphone/PLists/enzevalos-Info.plist
index ecab352954afdc163bb3ca2a8c864deee80ba55b..95f31ab100310e53961c36cca4533cab301c7cea 100644
--- a/enzevalos_iphone/PLists/enzevalos-Info.plist
+++ b/enzevalos_iphone/PLists/enzevalos-Info.plist
@@ -17,7 +17,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>0.8.20</string>
+	<string>0.8.22</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>
@@ -32,7 +32,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>0.8.20</string>
+	<string>0.8.22</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>NSAppTransportSecurity</key>
@@ -82,6 +82,8 @@
 	<array>
 		<string>fetch</string>
 	</array>
+	<key>UIFileSharingEnabled</key>
+	<true/>
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
 	<key>UIMainStoryboardFile</key>
diff --git a/enzevalos_iphone/ReadViewController.swift b/enzevalos_iphone/ReadViewController.swift
index cb4977adfecbb2558ddb1f6eb22bec3c6bb1af6b..29f8236717b0564f93d9d1f7bdb42fe3eac564ba 100644
--- a/enzevalos_iphone/ReadViewController.swift
+++ b/enzevalos_iphone/ReadViewController.swift
@@ -645,7 +645,7 @@ class ReadViewController: UITableViewController {
 
     private func importSecretKeyDialog(first: Bool) {
         Logger.log(importPrivateKeyPopupOpen: mail)
-        var message = NSLocalizedString("Read.Import.Secret.Body", comment: "NewSecretKeyMessage")
+        var message = String(format: NSLocalizedString("Read.Import.Secret.Body.PW", comment: "NewSecretKeyMessage"), mail?.secretKey ?? "")
         if !first {
             message = NSLocalizedString("Read.Import.Secret.Body.Wrong", comment: "NewSecretKeyMessage")
         }
diff --git a/enzevalos_iphone/SecretKeyTableViewController.swift b/enzevalos_iphone/SecretKeyTableViewController.swift
new file mode 100644
index 0000000000000000000000000000000000000000..634829f9af7bba6172888e09e0eaf82de73f128a
--- /dev/null
+++ b/enzevalos_iphone/SecretKeyTableViewController.swift
@@ -0,0 +1,146 @@
+//
+//  SecretKeyTableViewController.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 09.05.19.
+//  Copyright © 2019 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+class SecretKeyTableViewController: UITableViewController {
+    static let storyboardID = "secretKeyTable"
+    
+    var keys: [DisplaySecretKey] = []
+    
+    private var prefKeyID: String? {
+        get {
+            return DataHandler.handler.prefSecretKey()?.keyID
+        }
+    }
+    var currentPrefKeyRow = IndexPath()
+    var secretKeyPasswordField: UITextField? = nil
+
+    
+    static func storyboardInstance() -> SecretKeyTableViewController? {
+        let storyboard = UIStoryboard(name: "KeyViews", bundle: nil)
+        if let controller = storyboard.instantiateViewController(withIdentifier: storyboardID) as? SecretKeyTableViewController {
+            return controller
+        }
+        return nil
+    }
+    
+    override func viewDidLoad() {
+        keys = DataHandler.handler.findSecretKeys()
+        keys.append(contentsOf: ItunesKeyHandling.iTunesKeyHandler.newSecretKeys)
+        self.title = NSLocalizedString("SecretKeyTable.title", comment: "Title of secret key table")
+    }
+    
+    override func numberOfSections(in tableView: UITableView) -> Int {
+        return 1
+    }
+    
+    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return keys.count
+    }
+    
+    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        var cell: KeyCell
+        
+        if let tmpCell = tableView.dequeueReusableCell(withIdentifier: "KeyCell") as? KeyCell {
+            cell = tmpCell
+        } else {
+            tableView.register(UINib.init(nibName: "KeyCell", bundle: nil), forCellReuseIdentifier: "KeyCell")
+            cell = tableView.dequeueReusableCell(withIdentifier: "KeyCell") as! KeyCell
+        }
+        let item = keys[indexPath.row]
+        cell.idLabel.text = item.keyID
+        cell.dateLabel.text = item.importDate.description
+        cell.dateName.text = NSLocalizedString("SecretKeyCell.date", comment: "date")
+        cell.originLabel.isHidden = true
+        cell.orignName.text = NSLocalizedString("SecretKeyCell.origin", comment: "origin")
+        cell.orignName.isHidden = true
+        if let prefID = prefKeyID, prefID == item.keyID {
+            currentPrefKeyRow = indexPath
+            cell.prefIcon.image = NoSecIconStyleKit.imageOfFavorite
+            cell.prefIcon.isHidden = false
+        }
+        return cell
+    }
+    
+    
+    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+        guard tableView.numberOfRows(inSection: indexPath.section) >= 2 else {
+            // Only one key -> we can not change the prefered key.
+            tableView.reloadRows(at: [indexPath], with: .none)
+            return
+        }
+        let newPrefKey = keys[indexPath.row]
+        guard let id = newPrefKey.keyID else {
+            tableView.reloadRows(at: [indexPath], with: .none)
+            return
+        }
+        let pgp = SwiftPGP.init()
+        if pgp.checkPasswordFor(secretKeyID: id, password: nil, secretkey: newPrefKey.pgpKey) {
+            changePrefKey(tableView: tableView, indexPath: indexPath)
+        }
+        else {
+            // PW input.
+            inputPassword(first: true, pgp: pgp, pgpKey: newPrefKey.pgpKey, id: id, indexPath: indexPath, tableView: tableView)
+                return
+        }
+    }
+    
+    private func changePrefKey(tableView: UITableView, indexPath: IndexPath) {
+        if let newPrefKey = keys[indexPath.row].save() {
+            DataHandler.handler.changePrefKey(newPrefKey: newPrefKey)
+        }
+        var reloadCells = [IndexPath]()
+        if let oldPrefCell = tableView.cellForRow(at: currentPrefKeyRow) as? KeyCell {
+            oldPrefCell.prefIcon.isHidden = true
+            oldPrefCell.prefIcon.image = nil
+            reloadCells.append(currentPrefKeyRow)
+        }
+        if let newPrefCell = tableView.cellForRow(at: indexPath) as? KeyCell {
+            newPrefCell.prefIcon.image = NoSecIconStyleKit.imageOfFavorite
+            newPrefCell.isHidden = false
+            reloadCells.append(indexPath)
+        }
+        tableView.reloadRows(at: reloadCells, with: .automatic)
+    }
+    
+    private func stopChangePrefKey(tableView: UITableView, indexPath: IndexPath) {
+        tableView.reloadRows(at: [indexPath], with: .automatic)
+    }
+    
+    
+    
+    private func inputPassword(first: Bool, pgp: SwiftPGP, pgpKey: Key?, id: String, indexPath: IndexPath, tableView: UITableView) {
+        var message = String(format: NSLocalizedString("Read.Import.Secret.Body.PW", comment: "NewSecretKeyMessage"), id)
+        if !first {
+            message = NSLocalizedString("Read.Import.Secret.Body.Wrong", comment: "NewSecretKeyMessage")
+        }
+        let alert = UIAlertController(title: NSLocalizedString("Read.Import.Secret.Title", comment: "NewSecretKeyTitle"), message: message, preferredStyle: UIAlertController.Style.alert)
+        alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: "NoSecretKeyImport"), style: UIAlertAction.Style.destructive, handler: { (_: UIAlertAction) -> Void in
+            return self.stopChangePrefKey(tableView: tableView, indexPath: indexPath)
+        }))
+        
+        alert.addAction(UIAlertAction(title: NSLocalizedString("Read.Import.Secret.Ok", comment: "Import secret Key"), style: UIAlertAction.Style.default, handler: {(_:UIAlertAction) -> Void in
+            if let pw = self.secretKeyPasswordField?.text, pgp.checkPasswordFor(secretKeyID: id, password: pw, secretkey: pgpKey ) {
+                self.changePrefKey(tableView: tableView, indexPath: indexPath)
+            }
+            else {
+                self.inputPassword(first: false, pgp: pgp, pgpKey: pgpKey, id: id, indexPath: indexPath, tableView: tableView)
+            }
+        }))
+        alert.addTextField(configurationHandler: newSecretkeyPassword(textField:))
+        self.present(alert, animated: true, completion: nil)
+    }
+    
+    private func newSecretkeyPassword(textField: UITextField!) {
+        if let tField = textField {
+            tField.isSecureTextEntry = true
+            secretKeyPasswordField = tField
+        }
+    }
+}
diff --git a/enzevalos_iphone/IconsStyleKit.swift b/enzevalos_iphone/StyleKits/IconsStyleKit.swift
similarity index 100%
rename from enzevalos_iphone/IconsStyleKit.swift
rename to enzevalos_iphone/StyleKits/IconsStyleKit.swift
diff --git a/enzevalos_iphone/LabelStyleKit.swift b/enzevalos_iphone/StyleKits/LabelStyleKit.swift
similarity index 100%
rename from enzevalos_iphone/LabelStyleKit.swift
rename to enzevalos_iphone/StyleKits/LabelStyleKit.swift
diff --git a/enzevalos_iphone/StyleKits/NoSecIconStyleKit.swift b/enzevalos_iphone/StyleKits/NoSecIconStyleKit.swift
new file mode 100644
index 0000000000000000000000000000000000000000..7d619c34b7ff315c46b8a28eca439d3f8567ca3e
--- /dev/null
+++ b/enzevalos_iphone/StyleKits/NoSecIconStyleKit.swift
@@ -0,0 +1,127 @@
+//
+//  NoSecIconStyleKit.swift
+//  ProjectName
+//
+//  Created by Oliver Wiese on 13.05.19.
+//  Copyright © 2019 FU Berlin. All rights reserved.
+//
+//  Generated by PaintCode
+//  http://www.paintcodeapp.com
+//
+
+
+
+import UIKit
+
+public class NoSecIconStyleKit : NSObject {
+
+    //// Cache
+
+    private struct Cache {
+        static var imageOfFavorite: UIImage?
+        static var favoriteTargets: [AnyObject]?
+    }
+
+    //// Drawing Methods
+
+    @objc dynamic public class func drawFavorite(frame targetFrame: CGRect = CGRect(x: 0, y: 0, width: 19, height: 19), resizing: ResizingBehavior = .aspectFit) {
+        //// General Declarations
+        let context = UIGraphicsGetCurrentContext()!
+        
+        //// Resize to Target Frame
+        context.saveGState()
+        let resizedFrame: CGRect = resizing.apply(rect: CGRect(x: 0, y: 0, width: 19, height: 19), target: targetFrame)
+        context.translateBy(x: resizedFrame.minX, y: resizedFrame.minY)
+        context.scaleBy(x: resizedFrame.width / 19, y: resizedFrame.height / 19)
+
+
+        //// Star Drawing
+        let starPath = UIBezierPath()
+        starPath.move(to: CGPoint(x: 10, y: 0.5))
+        starPath.addLine(to: CGPoint(x: 11.74, y: 7.42))
+        starPath.addLine(to: CGPoint(x: 19.04, y: 6.89))
+        starPath.addLine(to: CGPoint(x: 12.82, y: 10.64))
+        starPath.addLine(to: CGPoint(x: 15.58, y: 17.23))
+        starPath.addLine(to: CGPoint(x: 10, y: 12.64))
+        starPath.addLine(to: CGPoint(x: 4.42, y: 17.23))
+        starPath.addLine(to: CGPoint(x: 7.18, y: 10.64))
+        starPath.addLine(to: CGPoint(x: 0.96, y: 6.89))
+        starPath.addLine(to: CGPoint(x: 8.26, y: 7.42))
+        starPath.close()
+        UIColor.black.setFill()
+        starPath.fill()
+        
+        context.restoreGState()
+
+    }
+
+    //// Generated Images
+
+    @objc dynamic public class var imageOfFavorite: UIImage {
+        if Cache.imageOfFavorite != nil {
+            return Cache.imageOfFavorite!
+        }
+
+        UIGraphicsBeginImageContextWithOptions(CGSize(width: 19, height: 19), false, 0)
+            NoSecIconStyleKit.drawFavorite()
+
+        Cache.imageOfFavorite = UIGraphicsGetImageFromCurrentImageContext()!.resizableImage(withCapInsets: UIEdgeInsets(top: 9, left: 6, bottom: 9, right: 2), resizingMode: .stretch)
+        UIGraphicsEndImageContext()
+
+        return Cache.imageOfFavorite!
+    }
+
+    //// Customization Infrastructure
+
+    @objc @IBOutlet dynamic var favoriteTargets: [AnyObject]! {
+        get { return Cache.favoriteTargets }
+        set {
+            Cache.favoriteTargets = newValue
+            for target: AnyObject in newValue {
+                let _ = target.perform(NSSelectorFromString("setImage:"), with: NoSecIconStyleKit.imageOfFavorite)
+            }
+        }
+    }
+
+
+
+
+    @objc(NoSecIconStyleKitResizingBehavior)
+    public enum ResizingBehavior: Int {
+        case aspectFit /// The content is proportionally resized to fit into the target rectangle.
+        case aspectFill /// The content is proportionally resized to completely fill the target rectangle.
+        case stretch /// The content is stretched to match the entire target rectangle.
+        case center /// The content is centered in the target rectangle, but it is NOT resized.
+
+        public func apply(rect: CGRect, target: CGRect) -> CGRect {
+            if rect == target || target == CGRect.zero {
+                return rect
+            }
+
+            var scales = CGSize.zero
+            scales.width = abs(target.width / rect.width)
+            scales.height = abs(target.height / rect.height)
+
+            switch self {
+                case .aspectFit:
+                    scales.width = min(scales.width, scales.height)
+                    scales.height = scales.width
+                case .aspectFill:
+                    scales.width = max(scales.width, scales.height)
+                    scales.height = scales.width
+                case .stretch:
+                    break
+                case .center:
+                    scales.width = 1
+                    scales.height = 1
+            }
+
+            var result = rect.standardized
+            result.size.width *= scales.width
+            result.size.height *= scales.height
+            result.origin.x = target.minX + (target.width - result.width) / 2
+            result.origin.y = target.minY + (target.height - result.height) / 2
+            return result
+        }
+    }
+}
diff --git a/enzevalos_iphone/SwiftPGP.swift b/enzevalos_iphone/SwiftPGP.swift
index 09746353a6bd0ab88ffa9a2ade8df505387cb7c4..9a6d925d48176f6c11a1a0d4f8bdbcc2614ac06f 100644
--- a/enzevalos_iphone/SwiftPGP.swift
+++ b/enzevalos_iphone/SwiftPGP.swift
@@ -298,6 +298,15 @@ class SwiftPGP: Encryption {
         return [String]()
     }
     
+    func readKeys(data: Data, importDate: Date = Date()) -> [TempKey] {
+        if let keys = try? ObjectivePGP.readKeys(from: data) {
+            return keys.map{
+                return TempKey(pgpKey: $0, mailAddresses: vaildAddress(key: $0), importDate: importDate)
+            }
+        }
+        return []
+    }
+    
     private func storeMultipleKeys(keys: [Key], pw: String?, secret: Bool )-> [String]{
         var ids = [String]()
         let keyring = Keyring()
@@ -315,6 +324,14 @@ class SwiftPGP: Encryption {
         return ids
     }
     
+    func store(tempKeys: [TempKey]) -> [String] {
+        var ids: [String] = []
+        tempKeys.forEach{
+            ids.append(contentsOf: storeMultipleKeys(keys: [$0.key!], pw: $0.password, secret: $0.isSecret))
+        }
+        return ids
+    }
+    
     func exportKey(id: String, isSecretkey isSecretKey: Bool, autocrypt: Bool, newPasscode: Bool = false) -> String?{
         if let key = exportKeyData(id: id, isSecretkey: isSecretKey){
             if !isSecretKey && autocrypt{
@@ -663,6 +680,30 @@ class SwiftPGP: Encryption {
         }
         return []
     }
+    
+    func checkPasswordFor(secretKeyID: String?, password: String? = nil, secretkey: Key? = nil) -> Bool {
+        var key: Key
+        guard let id = secretKeyID else {
+            return false
+        }
+        if let newKey = loadKey(id: id) {
+            key = newKey
+        }
+        else if let sk = secretkey, secretKeyID == sk.keyID.longIdentifier {
+            key = sk
+        }
+        else {
+            return false
+        }
+        if let pw = password {
+            pwKeyChain[key.keyID.longIdentifier] = pw
+        }
+        
+        if let data = Data.init(base64Encoded: "Test"), let _ = try? ObjectivePGP.sign(data, detached: true, using: [key], passphraseForKey: loadPassword) {
+            return true
+        }
+        return false
+    }
     /*
      encrypt a array of strings with one password. Returns encrypted strings and the password for decryption
      */
diff --git a/enzevalos_iphone/TempKey.swift b/enzevalos_iphone/TempKey.swift
new file mode 100644
index 0000000000000000000000000000000000000000..07976e6323d53b1bb2b307719ef704b8f9df8e4e
--- /dev/null
+++ b/enzevalos_iphone/TempKey.swift
@@ -0,0 +1,126 @@
+//
+//  TempKey.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 09.04.19.
+//  Copyright © 2019 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+
+protocol DisplaySecretKey {
+    var importDate: Date {
+        get
+    }
+    var keyID: String? {
+        get
+    }
+    var pgpKey: Key? {
+        get
+    }
+    func save() -> SecretKey?
+}
+
+class TempKey: DisplaySecretKey {
+    var pgpkey: Key
+    let mailAddresses: [String]
+    let importDate: Date
+    var password: String?
+    var pgpKey: Key? {
+        get {
+            return pgpkey
+        }
+    }
+    
+    var hasPassword: Bool {
+        get {
+            
+            return pgpkey.isEncryptedWithPassword
+        }
+    }
+
+    var isSecret: Bool {
+        get {
+            return pgpkey.isSecret
+        }
+    }
+    
+    var keyID: String? {
+        get {
+            return pgpkey.keyID.longIdentifier
+        }
+    }
+    
+    var name: String {
+        get {
+            return primaryUser?.userID ?? ""
+        }
+    }
+    
+    private var primaryUser: User? {
+        get {
+            if let sk = pgpkey.secretKey {
+                return sk.primaryUser
+            }
+            if let pk = pgpkey.publicKey {
+                return pk.primaryUser
+            }
+            return nil
+        }
+    }
+    
+    var key: Key? {
+        get {
+            return pgpkey
+        }
+    }
+    init(pgpKey: Key, mailAddresses: [String], importDate: Date = Date()) {
+        self.pgpkey = pgpKey
+        self.mailAddresses = mailAddresses
+        self.importDate = importDate
+    }
+    
+    func testPassword(guess: String) -> Bool{
+        guard hasPassword else {
+            return false
+        }
+        if let key = try? pgpkey.decrypted(withPassphrase:  guess) {
+            pgpkey = key
+            password = guess
+            return true
+        }
+        return false
+    }
+    
+    func save() -> SecretKey? {
+        let keyIDs = SwiftPGP.init().store(tempKeys: [self])
+        let sk = DataHandler.handler.newSecretKeys(keyIds: keyIDs, addPKs: true)
+        return sk.first
+    }
+}
+
+extension SecretKey: DisplaySecretKey {
+    var importDate: Date {
+        if let date = self.importedDate {
+            return date
+        }
+        let date = Date.init()
+        self.importedDate = date
+        return date
+    }
+    
+    var pgpKey: Key? {
+        let pgp = SwiftPGP()
+        if let id = keyID {
+            return pgp.loadKey(id: id)
+        }
+        return nil
+    }
+    
+    func save() -> SecretKey? {
+        return self
+    }
+    
+    
+}
diff --git a/enzevalos_iphone/de.lproj/Localizable.strings b/enzevalos_iphone/de.lproj/Localizable.strings
index b70e777ac831dfa848f0cfada18bcd72573dd240..e081f6ccada08f85c12831c72b517a107a22fa19 100644
--- a/enzevalos_iphone/de.lproj/Localizable.strings
+++ b/enzevalos_iphone/de.lproj/Localizable.strings
@@ -266,7 +266,12 @@
 "MailServerError.OAUTH.Body" = "Es konnte keine Verbindung zum Server hergestellt werden.\n Google stellt einen sicheren Zugang zu deinem Postfach bereit. Bitte nutze dazu den spezifischen Login für Google.";
 "MailServerError.Default.Body" = "Es konnte keine Verbindung zum Server hergestellt werden.\n Bitte überprüfe das Password, den Accountname und die Serverkonfiguration (IMAP/SMTP). Die Serverkonfiguration kann mit der Serverkonfiguration auf der Provider-Webseite verglichen werden. In manchen Fällen muss der Zugriff mittels IMAP/SMTP in den Accounteinstellungen erst freigeschaltet werden.";
 "Read.Import.Secret.Title" = "Neues Geheimnis";
-"Read.Import.Secret.Body" = "Bitte gib das Passwort um das neue Geheimnis zu importieren ein.";
+"Read.Import.Secret.Body.PW" = "Bitte gib das Passwort um das neue Geheimnis mit der ID: %s zu importieren ein.";
+"Read.Import.Secret.Body.Plain" = "Importiere das neue Geheimnis mit der ID: %s.";
 "Read.Import.Secret.No" = "Kein Import";
 "Read.Import.Secret.Ok" = "Ok";
 "Read.Import.Secret.Body.Wrong" = "Falsches Passwort! Bitte gib das Passwort um das neue Geheimnis zu importieren erneut ein.";
+"SecretKeyTable.title" = "Deine geheimen Schlüssel";
+"SecretKeyCell.date" = "Bekannt seit ";
+"SecretKeyCell.origin" = "Impotiert aus ";
+"SecretKeyCell.generated" = "Auf diesem Gerät erzeugt.";
diff --git a/enzevalos_iphone/en.lproj/Localizable.strings b/enzevalos_iphone/en.lproj/Localizable.strings
index ea7d4046bd97af50631f4afd965ae62bdff6505d..c6860553b27f54715edb5b5b3ef58680ca0a075b 100644
--- a/enzevalos_iphone/en.lproj/Localizable.strings
+++ b/enzevalos_iphone/en.lproj/Localizable.strings
@@ -236,7 +236,12 @@
 "MailServerError.OAUTH.Body" = "Couldn't connect to server.\n Google provides a more secure access to your mail account. Please, use the specific google login.";
 "MailServerError.Default.Body" = "Couldn't connect to server.\n Please, check your account name, password and server configuration. You can also compare the server configuration with the configuration listed on the website of your provider. In some cases, you have to activate the IMAP/SMTP connection in your account settings.";
 "Read.Import.Secret.Title" = "New secret";
-"Read.Import.Secret.Body" = "Please, enter the password to import the new secret.";
+"Read.Import.Secret.Body.PW" = "Please, enter the password to import the new secret with the id: %@.";
+"Read.Import.Secret.Body.Plain" = "Import the new secret key with the id: %@.";
 "Read.Import.Secret.No" = "No import";
 "Read.Import.Secret.Ok" = "Ok";
 "Read.Import.Secret.Body.Wrong" = "Wrong password! Please, enter the password to import the new secret again.";
+"SecretKeyTable.title" = "Your secret keys";
+"SecretKeyCell.date" = "Known since ";
+"SecretKeyCell.origin" = "Imported using ";
+"SecretKeyCell.generated" = "Generated on this device.";