diff --git a/enzevalos_iphone/SMIME.swift b/enzevalos_iphone/SMIME.swift index 84faaa522ca08cb543cff1f3d9cfbdef4e6c7f63..5efd9e2d0a2c8cab4550406c67368014694607e6 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]) }