diff --git a/enzevalos_iphone/SwiftPGP.swift b/enzevalos_iphone/SwiftPGP.swift
index b1893833fdd2350516907da649e4de5ba89103bd..3d64c20a3f46cbb48b1d118a90c7fcda00e3266e 100644
--- a/enzevalos_iphone/SwiftPGP.swift
+++ b/enzevalos_iphone/SwiftPGP.swift
@@ -592,37 +592,35 @@ class SwiftPGP: Encryption {
         return CryptoObject(chiphertext: data, plaintext: plaintext, decryptedData: plaindata, sigState: sigState, encState: encState, signKey: sigKeyID, encType: CryptoScheme.PGP, signedAdrs: signedAdr)
     }
     
-    //jus a help function for findMailForKey
+    // A help function for findMailForSecrectKey and findNotSignedMailForPublicKey
     func keyAsKeyList(keyID: String) -> [Key] {
         var keyList = [Key]()
-        let key: Key = loadKey(id: keyID)!
-        keyList.append(key)
+        if let key: Key = loadKey(id: keyID) {
+            keyList.append(key)
+        }
         return keyList
     }
     
-    // finds undecrypted mails in persistent mails and and tries to decrypt with the incoming secret key
+    // Finds undecrypted mails in persistent mails and and tries to decrypt with the incoming secret key
     func findMailForSecretKey(keyID: String) {
-        //var data: Data? = nil
         var encState = EncryptionState.UnableToDecrypt
         var plaindata: Data? = nil
         let key: [Key] = keyAsKeyList(keyID: keyID)
         let datahandler = DataHandler.handler
         let mailList = datahandler.getAllNotDecryptedPersistentMail()
         for mail in mailList {
-            // change data
-            guard let data =  mail.body?.data(using: .utf8) else{
-            return
+            // Change data
+            guard let data =  mail.body?.data(using: .utf8) else {
+                return
             }
-            // try to decrypt mail
+            // Try to decrypt mail
             (plaindata, encState) = decryptMessage(data: data, keys: key, encForCurrentSK: true)
-            if encState == EncryptionState.ValidedEncryptedWithCurrentKey {
-                // update database
+            if let plaindata = plaindata, encState == EncryptionState.ValidedEncryptedWithCurrentKey || encState == EncryptionState.ValidEncryptedWithOldKey {
+                // Update database
                 mail.isEncrypted = true
                 mail.unableToDecrypt = false
-                let plaintext = String(data: plaindata!, encoding: .utf8)
-                mail.body = plaintext
-                datahandler.save(during: "")
-                
+                mail.body = String.init(data: plaindata, encoding: .utf8)
+                datahandler.save(during: "decryption of older mails")
             }
         }
     }
@@ -653,6 +651,28 @@ class SwiftPGP: Encryption {
         return (nil, EncryptionState.NoEncryption)
     }
     
+    // Finds unsigned mails in persistent mails and and tries to verify them with the incoming public key
+    func findNotSignedMailForPublicKey(keyID: String) {
+        var sigState = SignatureState.NoPublicKey
+        let key: [Key] = keyAsKeyList(keyID: keyID)
+        let datahandler = DataHandler.handler
+        let mailList = datahandler.getAllNotSignedPersistentMail()
+        for mail in mailList {
+            // Change data
+            guard let data =  mail.body?.data(using: .utf8) else {
+                    return
+            }
+            // Try to verify mail signature
+            sigState = verifySignature(data: data, attachedSignature: nil, keys: key)
+            if sigState == SignatureState.ValidSignature {
+                // Update database
+                mail.isSigned = true
+                mail.isCorrectlySigned = true
+                datahandler.save(during: "verifying of older mails")
+            }
+        }
+    }
+    
     private func verifySignature(sigString: String, attachedSignature: Data?, keys: [Key]) -> SignatureState {
         if let unarmored = try? Armor.readArmored(sigString){
             return verifySignature(data: unarmored, attachedSignature: attachedSignature, keys: keys)
diff --git a/enzevalos_iphoneTests/CoreDataTests.swift b/enzevalos_iphoneTests/CoreDataTests.swift
index 68cbb78f224b3c18010b2ea0aa8b43525db492dd..1386de55de99d70db3269cc90691135afb542dc4 100644
--- a/enzevalos_iphoneTests/CoreDataTests.swift
+++ b/enzevalos_iphoneTests/CoreDataTests.swift
@@ -68,7 +68,7 @@ class CoraDataTests: XCTestCase {
         super.tearDown()
     }
     
-    //test for generating list of mails with missing secret key (unable to decrypt)
+    // Test for generating list of mails with missing secret key (unable to decrypt)
     func testGetAllFilteredMails() {
         guard let from = MCOAddress(mailbox: "sender@example.com")
         else {
@@ -104,45 +104,42 @@ class CoraDataTests: XCTestCase {
         }
     }
     
-    
-    // generate a test secret key
-    func testkey()->(String){
+    // Generate a test secret key
+    func testkey() -> (String){
         let testsender = createUser()
         let testkeyID = pgp.generateKey(adr: testsender.mailbox, new: true)
         return testkeyID
         
     }
     
-    // test decryption of all undecrypted mails with new secret key
-    func testfindMailForSecretKey(){
+    // Test decryption of all undecrypted mails with new secret key
+    func testfindMailForSecretKey() {
         let testkeyID = testkey()
         let swiftpgp = SwiftPGP()
         
         // E-Mail generieren
-        
-        guard let from = MCOAddress(mailbox: "sender@example.com")
-        else {
+        guard let from = MCOAddress(mailbox: "sender@example.com") else {
             return
         }
         
-        // create test mail
+        // Create test Mail
         guard let m1 = testMail(from: from, to: [user], cc: [], bcc: []) else {
             XCTFail("No test mail")
             return
         }
             
-        // create ciphertext
+        // Create Ciphertext
         let body = "encrypted text"
         let senderPGP = SwiftPGP()
         let encryptedObject = senderPGP.encrypt(plaintext: body, ids: [testkeyID], myId: "")
         XCTAssert(encryptedObject.encryptionState == .ValidedEncryptedWithCurrentKey && encryptedObject.signatureState == .NoSignature)
 
         guard let cipher = encryptedObject.chiperString else {
-         XCTFail("No chipher data")
-         return
+            XCTFail("No chipher data")
+            return
         }
         
-        // change mail
+        // Change Mail
         m1.unableToDecrypt = true
         m1.body = cipher
         
@@ -151,10 +148,7 @@ class CoraDataTests: XCTestCase {
         swiftpgp.findMailForSecretKey(keyID: testkeyID)
         XCTAssertEqual(m1.body, "encrypted text")
         XCTAssertFalse(m1.unableToDecrypt)
-    
     }
-    
-
 
     func createUser(adr: String = String.random().lowercased(), name: String = String.random()) -> MCOAddress {
         return MCOAddress.init(displayName: name, mailbox: adr.lowercased())