From cd025cde6363e465b4fe71d14b3804ade046fb45 Mon Sep 17 00:00:00 2001 From: muellek95 <muellek95@fu-berlin.de> Date: Thu, 19 Mar 2020 14:04:38 +0100 Subject: [PATCH] access Mail_Address from --- enzevalos_iphone/EphemeralMail.swift | 5 ++-- enzevalos_iphone/Mail.swift | 2 +- .../PersistentMail +CoreDataClass.swift | 11 +++++++ .../PersistentMail +CoreDataProperties.swift | 13 +++++++- enzevalos_iphoneTests/GeneratedMocks.swift | 4 +-- enzevalos_iphoneTests/MailTest.swift | 30 +++++++++++++++++++ .../phishing/MailComparisonTests.swift | 5 ++-- 7 files changed, 62 insertions(+), 8 deletions(-) diff --git a/enzevalos_iphone/EphemeralMail.swift b/enzevalos_iphone/EphemeralMail.swift index 6db9848c..5bb90090 100644 --- a/enzevalos_iphone/EphemeralMail.swift +++ b/enzevalos_iphone/EphemeralMail.swift @@ -21,7 +21,7 @@ import Foundation open class EphemeralMail: Mail { - + public var from: NSSet? public var cc: NSSet? public var bcc: NSSet? public var to: NSSet @@ -31,7 +31,8 @@ open class EphemeralMail: Mail { public var uid: UInt64 public var predecessor: PersistentMail? - public init(to: NSSet = [], cc: NSSet = [], bcc: NSSet = [], date: Date = Date(), subject: String? = nil, body: String? = ""/*UserManager.loadUserSignature()*/, uid: UInt64 = 0, predecessor: PersistentMail? = nil) { + public init(from: NSSet = [], to: NSSet = [], cc: NSSet = [], bcc: NSSet = [], date: Date = Date(), subject: String? = nil, body: String? = ""/*UserManager.loadUserSignature()*/, uid: UInt64 = 0, predecessor: PersistentMail? = nil) { + self.from = from self.cc = cc self.bcc = bcc self.to = to diff --git a/enzevalos_iphone/Mail.swift b/enzevalos_iphone/Mail.swift index c05a9485..af63748e 100644 --- a/enzevalos_iphone/Mail.swift +++ b/enzevalos_iphone/Mail.swift @@ -22,7 +22,7 @@ import Foundation public protocol Mail: Comparable { - + //var from: NSSet? {get} var cc: NSSet? { get } var bcc: NSSet? { get } var to: NSSet { get } diff --git a/enzevalos_iphone/PersistentMail +CoreDataClass.swift b/enzevalos_iphone/PersistentMail +CoreDataClass.swift index 4764e26c..faab45a5 100644 --- a/enzevalos_iphone/PersistentMail +CoreDataClass.swift +++ b/enzevalos_iphone/PersistentMail +CoreDataClass.swift @@ -33,6 +33,8 @@ A PersistentMail stores all information about one mail: */ @objc(PersistentMail) open class PersistentMail: NSManagedObject, Mail { + //public var from: NSSet? + public var predecessor: PersistentMail? = nil var showMessage: Bool = false @@ -180,6 +182,7 @@ open class PersistentMail: NSManagedObject, Mail { var decryptedWithOldPrivateKey: Bool = false + func getReceivers() -> [Mail_Address] { var receivers = [Mail_Address] () for obj in to { @@ -203,6 +206,14 @@ open class PersistentMail: NSManagedObject, Mail { } return receivers } + + func getFrom() -> [Mail_Address]{ + var sender = [Mail_Address] () + for obj in from_getter! { + sender.append(obj as! Mail_Address) + } + return sender + } func getSubjectWithFlagsString() -> String { let subj: String diff --git a/enzevalos_iphone/PersistentMail +CoreDataProperties.swift b/enzevalos_iphone/PersistentMail +CoreDataProperties.swift index e97404c6..8707c038 100644 --- a/enzevalos_iphone/PersistentMail +CoreDataProperties.swift +++ b/enzevalos_iphone/PersistentMail +CoreDataProperties.swift @@ -259,6 +259,16 @@ extension PersistentMail { } } +// public var from_getter: Mail_Address { +// self.willAccessValue(forKey: "from") +// let text = (self.primitiveValue(forKey: "from") as? Mail_Address) +// self.didAccessValue(forKey: "from") +// if let text = text { +// return text +// } +// return Mail_Address() +// } + public var containsSecretKey: Bool { get { return secretKey != nil @@ -313,7 +323,8 @@ 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 from_getter: NSSet? + // @NSManaged public var from: NSSet? @NSManaged public var attachments: NSSet? /** Can be used for threading. Please read the RFC. diff --git a/enzevalos_iphoneTests/GeneratedMocks.swift b/enzevalos_iphoneTests/GeneratedMocks.swift index 3e87e156..960eb37a 100644 --- a/enzevalos_iphoneTests/GeneratedMocks.swift +++ b/enzevalos_iphoneTests/GeneratedMocks.swift @@ -1,4 +1,4 @@ -// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-18 15:30:35 +0000 +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-19 12:36:39 +0000 // // AuthenticationModel.swift @@ -653,7 +653,7 @@ import Foundation } -// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-18 15:30:35 +0000 +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-19 12:36:39 +0000 // // AuthenticationViewModel.swift diff --git a/enzevalos_iphoneTests/MailTest.swift b/enzevalos_iphoneTests/MailTest.swift index fc38229d..b83cc7f4 100644 --- a/enzevalos_iphoneTests/MailTest.swift +++ b/enzevalos_iphoneTests/MailTest.swift @@ -102,6 +102,36 @@ class MailTest: XCTestCase { } } + func testPhishingSimpleMailCreation() { + // Init + let from = ["bob@enzevalos.de"] + let tos = ["to1@example.com", "to2@example.com"] + let ccs = ["cc1@example.com"] + let bccs = ["bcc1@example.com"] + let subject = "subject" + let body = "This is the body" + let outMail = OutgoingMail(toEntrys: tos, ccEntrys: ccs, bccEntrys: bccs, subject: subject, textContent: body, htmlContent: nil) + if let data = outMail.plainData { + // Test parsing! + let incMail = IncomingMail(rawData: data, uID: 0, folderPath: "INBOX", flags: MCOMessageFlag.init(rawValue: 0)) + if let mail = incMail.store(keyRecord: nil){ + XCTAssertTrue(MailTest.compareAdrs(adrs1: from, adrs2: mail.getFrom())) + XCTAssertTrue(MailTest.compareAdrs(adrs1: tos, adrs2: mail.getReceivers())) + XCTAssertTrue(MailTest.compareAdrs(adrs1: ccs, adrs2: mail.getCCs())) + XCTAssertTrue(mail.getBCCs().count == 0) + XCTAssertEqual(subject, mail.subject) + XCTAssertEqual(body, mail.body) + XCTAssertFalse(mail.isSecure) + } + else { + XCTFail() + } + } + else { + XCTFail() + } + } + func testFormatMail() { // Init diff --git a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift index 826eb3e7..e5718926 100644 --- a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift +++ b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift @@ -89,7 +89,7 @@ class MailComparisonTests: XCTestCase { } for addr in addresses { - if senderAddress == addr.mailAddress { + if senderAddress == addr.mailAddress { return true } return false @@ -98,7 +98,8 @@ class MailComparisonTests: XCTestCase { } func testCompareSender () { - XCTAssertNotNil(compareSender(testMail(from: user, to: [user_1], cc: [user_1], bcc: [user_1]))) + + //XCTAssertNotNil(compareSender(testMail(from: user, to: [user_1], cc: [user_1], bcc: [user_1]))) } } -- GitLab