From 7fd7a7e9084589b730abe9b6c37c8e8bd607002c Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Tue, 11 Apr 2017 18:03:16 +0200 Subject: [PATCH] W.I.P. smime support: Inform user in case of missing certificates on send action --- mail/inc/class.mail_compose.inc.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mail/inc/class.mail_compose.inc.php b/mail/inc/class.mail_compose.inc.php index a4328a0834..40e1ba34fe 100644 --- a/mail/inc/class.mail_compose.inc.php +++ b/mail/inc/class.mail_compose.inc.php @@ -3625,7 +3625,7 @@ class mail_compose if (isset($sender) && ($type == Mail\Smime::TYPE_SIGN || $type == Mail\Smime::TYPE_SIGN_ENCRYPT)) { $sender_cert = $AB->get_smime_keys($sender); - + if (!$sender_cert) throw new Exception("Encryption failed because no certificate has been found for sender address: " . $sender); $params['senderPubKey'] = $sender_cert[$sender]; $credents = Mail\Credentials::read($this->mail_bo->profileID, Mail\Credentials::SMIME, $GLOBALS['egw_info']['user']['account_id']); @@ -3635,6 +3635,11 @@ class mail_compose if (isset($recipients) && ($type == Mail\Smime::TYPE_ENCRYPT || $type == Mail\Smime::TYPE_SIGN_ENCRYPT)) { $params['recipientsCerts'] = $AB->get_smime_keys($recipients); + foreach ($recipients as &$recipient) + { + if (!$params['recipientsCerts'][$recipient]) $missingCerts []= $recipient; + } + if (is_array($missingCerts)) throw new Exception ('Encryption failed because no certificate has been found for following addresses: '. implode ('|', $missingCerts)); } return $mail->smimeEncrypt($type, $params);