diff --git a/enzevalos_iphone/OutgoingMail.swift b/enzevalos_iphone/OutgoingMail.swift index e476314a8b3c0e42745408110d5e90e3422fbf8d..4a4808195d0fc2b2c080e9b828cf5ca651b2d22c 100644 --- a/enzevalos_iphone/OutgoingMail.swift +++ b/enzevalos_iphone/OutgoingMail.swift @@ -332,11 +332,8 @@ class OutgoingMail { headerString += "BCC: " + bccs + "\r\n" } headerString += "X-Mailer: Letterbox \r\n" - if autocrypt { - Autocrypt.addAutocryptHeader(builder) - if let autocrypt = builder.header.extraHeaderValue(forName: Autocrypt.AUTOCRYPTHEADER) { - headerString += Autocrypt.AUTOCRYPTHEADER + ": " + autocrypt + "\r\n" - } + if let header = Autocrypt.customAutocryptHeader { + headerString += header } if let msgID = header?.messageID { headerString += "Message-ID: " + msgID + "\r\n" diff --git a/enzevalos_iphone/PGP/Autocrypt.swift b/enzevalos_iphone/PGP/Autocrypt.swift index 485d6f647489240e6509b91a6e9446cded6309ab..79ec26c96a68a7befe72e7a979438e06f4b603b4 100644 --- a/enzevalos_iphone/PGP/Autocrypt.swift +++ b/enzevalos_iphone/PGP/Autocrypt.swift @@ -32,7 +32,6 @@ class Autocrypt { setPrefer_encryption(prefer_encryption) } - convenience init(header: MCOMessageHeader) { var autocrypt = header.extraHeaderValue(forName: Autocrypt.AUTOCRYPTHEADER) var field: [String] @@ -121,6 +120,15 @@ class Autocrypt { } } + /// Use this function to create an autocrypt header for manuel header creation. + /// - returns: Autcrypt: Addr = ...; key=... + static var customAutocryptHeader: String? { + guard let autocrypt = autocryptHeader else { + return nil + } + return Autocrypt.AUTOCRYPTHEADER + ": " + autocrypt + "\r\n" + } + static func addAutocryptHeader(_ builder: MCOMessageBuilder) { if let autocrypt = Autocrypt.autocryptHeader { builder.header.setExtraHeaderValue(autocrypt, forName: AUTOCRYPTHEADER) diff --git a/enzevalos_iphoneTests/AutocryptTest.swift b/enzevalos_iphoneTests/AutocryptTest.swift index abf8e50ef71c14c95750253620a4e78428bf2451..d5072f6c8432de15c8a4d3aac58cfa656301ecb6 100644 --- a/enzevalos_iphoneTests/AutocryptTest.swift +++ b/enzevalos_iphoneTests/AutocryptTest.swift @@ -103,6 +103,40 @@ class AutocryptTest: XCTestCase { } } + func testSelfCreatedHeader() { + print("My keyID: \(userKeyID)") + guard let customHeader = Autocrypt.customAutocryptHeader else { + XCTFail("No autocrypt...") + return + } + // Create custom header + var headerString = "" + headerString += "From: " + userAdr + "\r\n" + headerString += "To: " + "alice@example.com" + "\r\n" + headerString += customHeader + headerString += "Message-ID: " + "202029293239sisdj292323" + "\r\n" + headerString += "Subject: " + "subject" + "\r\n" + + let mail = headerString + "Hello World" + guard let data = mail.data(using: .utf8) else { + XCTFail("No mail data...") + return + } + + let inc = IncomingMail(rawData: data, uID: 0, folderPath: "Test", flags: .seen) + let prop = inc.export() + XCTAssertEqual(prop.autocryptHeaderKey.count, 1) + guard let key = prop.autocryptHeaderKey.first else { + XCTFail("No key...") + return + } + XCTAssertEqual(key.fingerprint, userKeyID) + XCTAssertEqual(key.cryptoProtocol, .PGP) + XCTAssertEqual(key.origin, .AutocryptHeader) + XCTAssertEqual(key.preferEncryption, .MUTUAL) + XCTAssertEqual(key.usedAddresses?.first?.email, userAdr) + } + func testAutocryptHeader(){ let outmail = OutgoingMail(toEntrys: ["alice@example.com"], ccEntrys: [], bccEntrys: [], subject: "subject", textContent: "Body", htmlContent: nil) if let parser = MCOMessageParser(data: outmail.plainData), let _ = pgp.exportKey(id: userKeyID, isSecretkey: false, autocrypt: false) { diff --git a/enzevalos_iphoneTests/GeneratedMocks.swift b/enzevalos_iphoneTests/GeneratedMocks.swift index 59315255e0357382f8e84ab69341e7cfd7f5598d..470e5ef2698321d52438cba07da8ec183c8a34a1 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 2021-03-09 16:14:51 +0000 +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2021-03-09 16:51:40 +0000 // // AuthenticationModel.swift @@ -654,7 +654,7 @@ import Foundation } -// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2021-03-09 16:14:51 +0000 +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2021-03-09 16:51:40 +0000 // // AuthenticationViewModel.swift