diff --git a/enzevalos_iphone/PersistentMail +CoreDataProperties.swift b/enzevalos_iphone/PersistentMail +CoreDataProperties.swift index e032c064af288dbb73d4f397fabe1a365f2f8056..e97404c6fdbf26d857183dd0bf4a041dc09095cc 100644 --- a/enzevalos_iphone/PersistentMail +CoreDataProperties.swift +++ b/enzevalos_iphone/PersistentMail +CoreDataProperties.swift @@ -221,7 +221,7 @@ extension PersistentMail { return 0 } } - /** + /* Please read the RFC! */ public var uidvalidity: UInt32? { @@ -258,6 +258,7 @@ extension PersistentMail { return Mail_Address() } } + public var containsSecretKey: Bool { get { return secretKey != nil @@ -312,6 +313,7 @@ extension PersistentMail { @NSManaged public var bcc: NSSet? @NSManaged public var cc: NSSet? @NSManaged public var to: NSSet + //@NSManaged public var from: NSSet? @NSManaged public var attachments: NSSet? /** Can be used for threading. Please read the RFC. diff --git a/enzevalos_iphone/phishing/MailComparison.swift b/enzevalos_iphone/phishing/MailComparison.swift index 0880b38c92ce575a6c52ae18c684b54a441ce784..90203d7b3e3e572bb306b39605c133623504e1df 100644 --- a/enzevalos_iphone/phishing/MailComparison.swift +++ b/enzevalos_iphone/phishing/MailComparison.swift @@ -10,22 +10,65 @@ import Foundation import CoreData class MailComparison{ - private func compareMailToContacts() -> Any{ - let dataHandler = DataHandler.handler - let contacts = dataHandler.getContacts() - let addresses = dataHandler.getAddresses() - for adr in addresses{ - let address:String = adr as! String - if EnzevalosContact.isAddress(address){ - return("isContact") - } - return("noContact") - } - //var first = String(contacts[0].from) - //var first_address = String(addresses[0]) - // let isEqual = (first == first_address) - - //let records = DataHandler.handler.getContactByAddress(email).records - } +// private func compareMailToContacts() -> Any{ +// let dataHandler = DataHandler.handler +// let contacts = dataHandler.getContacts() +// let addresses = dataHandler.getAddresses() +// for adr in addresses{ +// let address:String = adr as! String +// if EnzevalosContact.isAddress(address){ +// return("isContact") +// } +// return("noContact") +// } +// //var first = String(contacts[0].from) +// //var first_address = String(addresses[0]) +// // let isEqual = (first == first_address) +// +// //let records = DataHandler.handler.getContactByAddress(email).records +// } + +// public var addresses: [MailAddress]{ +// get{ +// if let addrs = contact.addresses as? Set<Mail_Address> { +// return Array(addrs) +// } +// return [] +// } +// } +// @NSManaged public var contact: EnzevalosContact +// +// public func compareSender(_ mail: PersistentMail) -> Any { +// let senderAddress = mail.from.mailAddress +// var senderContact = mail.from.contact +// +// if (senderContact == contact){ +// print("joke") +// } +// +// for addr in addresses { +// if senderAddress == addr.mailAddress { +// return true +// } +// return false +// } +// return "empty" +// } + + //var contact_name = contact.name + +// private func test () -> Any { +// var list = ["Anna Mustermann", "Max Normal", "kllk jlkm", "jnkjnjk lknl", "Max Normal"] +// var searchValue = "Max Normal" +// +// +// var currentIndex = 0 +// for name in list{ +// if name == searchValue{ +// print("Found \(name) for index \(currentIndex)") +// } +// currentIndex += 1 +// } +// } } diff --git a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift index f9db518574b154a89e7e138909da244584e590b2..826eb3e7bea81dd4a331a67f4da826883d9a837e 100644 --- a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift +++ b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift @@ -10,7 +10,10 @@ class MailComparisonTests: XCTestCase { let userName = "alice" var user: MCOAddress = MCOAddress.init(mailbox: "alice@example.com") var userKeyID: String = "" - + let userAdr_1 = "bob@enzevalos.de" + let userName_1 = "bob" + var user_1: MCOAddress = MCOAddress.init(mailbox: "bob@enzevalos.de") + override func setUp() { super.setUp() pgp.resetKeychains() @@ -66,71 +69,36 @@ class MailComparisonTests: XCTestCase { return mail } - func testOwnRecord() { - let (sender, keyID) = createPGPUser() - let body = "enc with old key" - let folderName = "INBOX" - let oldID = userKeyID - - var myrecord = datahandler.getKeyRecord(addr: userAdr, keyID: datahandler.prefSecretKey()?.keyID) - XCTAssertEqual(myrecord.keyID, userKeyID) - XCTAssertEqual(myrecord.ezContact.records.count, 1) - - - let cryptoObject1 = pgp.encrypt(plaintext: body, ids: [oldID], myId: keyID) - _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: cryptoObject1) - let myContact = datahandler.getContactByAddress(userAdr) - - if let newKeyIDs = try? pgp.importKeys(key: CryptoTests.importKey, pw: CryptoTests.importPW, isSecretKey: true, autocrypt: false), let newKeyId = newKeyIDs.first{ - _ = datahandler.newSecretKey(keyID: newKeyId, addPk: true, saveKey: true) - if let prefSK = datahandler.prefSecretKey() { - XCTAssertTrue(newKeyId == prefSK.keyID, "newKeyID: \(newKeyId) != \(String(describing: prefSK.keyID)): prefKeyID") - XCTAssertTrue(userKeyID != newKeyId) - - let key = datahandler.findSecretKey(keyID: prefSK.keyID) - XCTAssertNotNil(key) - XCTAssertTrue(key?.keyID == newKeyId, "newKeyID: \(newKeyId) != \(String(describing: key?.keyID)): prefKeyID") - - myrecord = datahandler.getKeyRecord(addr: userAdr, keyID: prefSK.keyID) - } - XCTAssertEqual(myrecord.keyID, newKeyId) - XCTAssertEqual(myrecord.ezContact.records.count, 2) - XCTAssertTrue(myrecord.isSecure) - XCTAssertEqual(myContact.publicKeys.count, 2) - let cryptoObject2 = pgp.encrypt(plaintext: body, ids: [newKeyId], myId: keyID) - let decryptObject2 = pgp.decrypt(data: cryptoObject2.chiphertext!, decKeyIDs: [newKeyId], signatureIDs: [keyID], fromAddr: userAdr) - _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: decryptObject2) - - let cryptoObject3 = pgp.encrypt(plaintext: body, ids: [oldID], myId: keyID) - let decryptObject3 = pgp.decrypt(data: cryptoObject3.chiphertext!, decKeyIDs: [oldID], signatureIDs: [keyID], fromAddr: userAdr) - let oldMail = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: decryptObject3) - - XCTAssertTrue((oldMail?.decryptedWithOldPrivateKey)!) - - - } else { - XCTFail("No new key") - return - } - } - func testKeysPerAddress() { - let adrKey = "key@example.com" - let adrNoKey = "noKey@example.com" - let adrNoKey2 = "noKey2@example.com" - var mailAdrKey = datahandler.getMailAddress(adrKey, temporary: false) - let mailAdrNoKey = datahandler.getMailAddress(adrNoKey, temporary: false) - _ = datahandler.getMailAddress(adrNoKey2, temporary: false) - XCTAssertFalse(mailAdrKey.hasKey) - XCTAssertFalse(mailAdrNoKey.hasKey) - XCTAssertEqual(datahandler.getAddresses().count, 3) - _ = datahandler.newPublicKey(keyID: "000", cryptoType: .PGP, adr: adrKey, autocrypt: false, transferType: nil) - _ = datahandler.newPublicKey(keyID: "001", cryptoType: .PGP, adr: adrKey, autocrypt: false, transferType: nil) - mailAdrKey = datahandler.getMailAddress(adrKey, temporary: false) - XCTAssertTrue(mailAdrKey.hasKey) - let withKeys = datahandler.findMailAddress(withKey: true).count - let noKeys = datahandler.findMailAddress(withKey: false).count - XCTAssertEqual(withKeys, 1, "Adresses with key: \(withKeys)") - XCTAssertEqual(noKeys, 2, "Adresses without key: \(noKeys)") + public var addresses: [MailAddress]{ + get{ + if let addrs = contact.addresses as? Set<Mail_Address> { + return Array(addrs) + } + return [] + } + } + @NSManaged public var contact: EnzevalosContact + + public func compareSender(_ mail: PersistentMail? = nil) -> Any { + let senderAddress = mail?.from.mailAddress + var senderContact = mail?.from.contact + + if (senderContact == contact){ + print("joke") + } + + for addr in addresses { + if senderAddress == addr.mailAddress { + return true + } + return false + } + return "empty" + } + + func testCompareSender () { + XCTAssertNotNil(compareSender(testMail(from: user, to: [user_1], cc: [user_1], bcc: [user_1]))) } + }