From e089640f57d230fb0d3144d711eb492b0639d3b9 Mon Sep 17 00:00:00 2001 From: lazarog98 <lazarog98@ninlil.local> Date: Tue, 31 Mar 2020 15:25:11 +0200 Subject: [PATCH] #232 add exceptions to sign and finalize decrypt --- enzevalos_iphone/SMIME.swift | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/enzevalos_iphone/SMIME.swift b/enzevalos_iphone/SMIME.swift index 84faaa52..5efd9e2d 100644 --- a/enzevalos_iphone/SMIME.swift +++ b/enzevalos_iphone/SMIME.swift @@ -709,14 +709,14 @@ PkfA6mR7rtcyIbHi34tfkCv/qolV3QivMHov0IJpRyNO throw SMIMEError(message: "Decryption failed!", errorArray: errArr, type: SMIMEError.ErrorType.decryption) } - let (sigState, certsWithFps, sigStr) = verify(data: outputData, email: fromAddr, isMailNew: isMailNew) + let verifyCryptoObj = verify(data: outputData, email: fromAddr, isMailNew: isMailNew) - let addresses = getAllEmailsFromPEMs(certs: certsWithFps.map( { (arg) -> String in - let (_, pem) = arg - return pem - })) + let sigState = verifyCryptoObj.signatureState + let addresses = verifyCryptoObj.signedAdrs + let plainText = verifyCryptoObj.plaintext + let decryptedData = plainText!.data(using: .utf8)! - return CryptoObject(chiphertext: data, plaintext: String(data: outputData, encoding: .utf8), decryptedData: outputData, sigState: sigState, encState: encState, signKey: fp, encType: CryptoScheme.SMIME, signedAdrs: sigState == SignatureState.ValidSignature ? addresses : []) + return CryptoObject(chiphertext: data, plaintext: plainText, decryptedData: decryptedData, sigState: sigState, encState: encState, signKey: fp, encType: CryptoScheme.SMIME, signedAdrs: sigState == SignatureState.ValidSignature ? addresses : []) } func sign(plainData: Data, myEmail: String, detached: Bool = true) throws -> CryptoObject { @@ -728,7 +728,9 @@ PkfA6mR7rtcyIbHi34tfkCv/qolV3QivMHov0IJpRyNO let (sigText, errArr) = signWithPem(message: text!, certAsPem: cert, keyAsPem: key, detached: detached) - // TODO: Exception + if (errArr != nil && errArr!.count > 0) { + throw SMIMEError(message: "Signing failed!", errorArray: errArr, type: SMIMEError.ErrorType.signing) + } return CryptoObject(chiphertext: sigText!.data(using: .utf8), plaintext: text, decryptedData: plainData, sigState: SignatureState.ValidSignature, encState: EncryptionState.NoEncryption, signKey: fp, encType: CryptoScheme.SMIME, signedAdrs: [myEmail]) } -- GitLab