Skip to content
Snippets Groups Projects
Commit c45acc11 authored by muellek95's avatar muellek95
Browse files

add Email comparisson (attempt 1)

parent 82efda49
No related branches found
No related tags found
No related merge requests found
......@@ -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.
......
......@@ -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)
// 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
// }
//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
// }
// }
}
......@@ -10,6 +10,9 @@ 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()
......@@ -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)
public var addresses: [MailAddress]{
get{
if let addrs = contact.addresses as? Set<Mail_Address> {
return Array(addrs)
}
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)
return []
}
}
@NSManaged public var contact: EnzevalosContact
XCTAssertTrue((oldMail?.decryptedWithOldPrivateKey)!)
public func compareSender(_ mail: PersistentMail? = nil) -> Any {
let senderAddress = mail?.from.mailAddress
var senderContact = mail?.from.contact
if (senderContact == contact){
print("joke")
}
} else {
XCTFail("No new key")
return
for addr in addresses {
if senderAddress == addr.mailAddress {
return true
}
return false
}
return "empty"
}
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)")
func testCompareSender () {
XCTAssertNotNil(compareSender(testMail(from: user, to: [user_1], cc: [user_1], bcc: [user_1])))
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment