From f6004368981bd9ae2c97845e012caddf2fcba599 Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Tue, 25 Jul 2017 18:00:22 +0200 Subject: [PATCH] W.I.P. SMIME: - add notvalid state - add metadata for key add to contact --- api/src/Mail.php | 12 ++++++++++++ mail/js/app.js | 10 ++++++++-- mail/templates/default/app.css | 6 +++--- mail/templates/mobile/app.css | 6 +++--- mail/templates/pixelegg/app.css | 6 +++--- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/api/src/Mail.php b/api/src/Mail.php index c98d4a66e4..3f7c3dccf6 100644 --- a/api/src/Mail.php +++ b/api/src/Mail.php @@ -7368,6 +7368,15 @@ class Mail { throw new Mail\Smime\PassphraseMissing($message['msg']); } + // verifivation failure either message has been tempered, + // signature is not valid or message has not ben signed + // but encrypted only. + else + { + $metadata['verify'] = false; + $metadata['signed'] = true; + $metadata['msg'] = $ex->getMessage(); + } } if ($cert) // signed message, it might be encrypted too @@ -7380,6 +7389,9 @@ class Mail 'certHtml' => $this->smime->certToHTML($cert->cert), 'signed' => true, )); + $AB_bo = new \addressbook_bo(); + $certkey = $AB_bo->get_smime_keys($cert->email); + if (!is_array($certkey) || $certkey[$cert->email] != $cert->cert) $metadata['addtocontact'] = true; } else // only encrypted message { diff --git a/mail/js/app.js b/mail/js/app.js index 00edb14abb..d3c77b7a3e 100644 --- a/mail/js/app.js +++ b/mail/js/app.js @@ -5832,19 +5832,25 @@ app.classes.mail = AppJS.extend( $mail_container.addClass('smime_cert_verified'); smime_signature.set_class('smime_cert_verified'); } - else if (!_data.verify) + else if (!_data.verify && _data.cert) { $mail_container.addClass('smime_cert_notverified'); smime_signature.set_class('smime_cert_notverified'); smime_signature.set_statustext(_data.msg); } + else if (!_data.verify && !_data.cert) + { + $mail_container.addClass('smime_cert_notvalid'); + smime_signature.set_class('smime_cert_notvalid'); + smime_signature.set_statustext(_data.msg); + } }, smime_clear_flags: function (_nodes) { for(var i=0;i<_nodes.length;i++) { - var smime_classes = 'smime_cert_verified smime_cert_notverified'; + var smime_classes = 'smime_cert_verified smime_cert_notverified smime_cert_notvalid'; _nodes[i].removeClass(smime_classes); } diff --git a/mail/templates/default/app.css b/mail/templates/default/app.css index 42b4a8c2d3..f87113ea10 100644 --- a/mail/templates/default/app.css +++ b/mail/templates/default/app.css @@ -917,16 +917,16 @@ div.smime_cert_notverified { border-top: 4px solid lightgreen !important; } img.smime_cert_notverified { - background: lightgreen !important; + background: lightgreen; } div.smime_cert_verified { - border-top: 4px solid green; + border-top: 4px solid green !important; } img.smime_cert_verified { background: green; } div.smime_cert_notvalid { - border-top: 4px solid red; + border-top: 4px solid red !important; } img.smime_cert_notvalid { background: red; diff --git a/mail/templates/mobile/app.css b/mail/templates/mobile/app.css index 240938765a..d9324da188 100644 --- a/mail/templates/mobile/app.css +++ b/mail/templates/mobile/app.css @@ -905,16 +905,16 @@ div.smime_cert_notverified { border-top: 4px solid lightgreen !important; } img.smime_cert_notverified { - background: lightgreen !important; + background: lightgreen; } div.smime_cert_verified { - border-top: 4px solid green; + border-top: 4px solid green !important; } img.smime_cert_verified { background: green; } div.smime_cert_notvalid { - border-top: 4px solid red; + border-top: 4px solid red !important; } img.smime_cert_notvalid { background: red; diff --git a/mail/templates/pixelegg/app.css b/mail/templates/pixelegg/app.css index eb2ea6af5f..bc4252592c 100755 --- a/mail/templates/pixelegg/app.css +++ b/mail/templates/pixelegg/app.css @@ -893,16 +893,16 @@ div.smime_cert_notverified { border-top: 4px solid lightgreen !important; } img.smime_cert_notverified { - background: lightgreen !important; + background: lightgreen; } div.smime_cert_verified { - border-top: 4px solid green; + border-top: 4px solid green !important; } img.smime_cert_verified { background: green; } div.smime_cert_notvalid { - border-top: 4px solid red; + border-top: 4px solid red !important; } img.smime_cert_notvalid { background: red;