From 34106c937ec6456fab512412f99edc77348ad689 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 4 Mar 2024 15:33:19 +0100 Subject: [PATCH] Automatically verify S/MIME decrypted signed message --- dev/View/User/MailBox/MessageView.js | 3 +++ .../v/0.0.0/app/libraries/RainLoop/Actions/SMime.php | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dev/View/User/MailBox/MessageView.js b/dev/View/User/MailBox/MessageView.js index 001f2d6ba..8593e6055 100644 --- a/dev/View/User/MailBox/MessageView.js +++ b/dev/View/User/MailBox/MessageView.js @@ -656,6 +656,9 @@ export class MailMessageView extends AbstractViewRight { MimeToMessage(response.Result.data, message); message.html() ? message.viewHtml() : message.viewPlain(); pass && pass.remember && Passphrases.set(identity, pass.password); + if ('signed' in response.Result) { + message.smimeSigned(response.Result.signed); + } } }).catch(e => { data.error = e.message diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/SMime.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/SMime.php index a16850ff7..bf5d09d0f 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/SMime.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/SMime.php @@ -104,8 +104,16 @@ trait SMime $SMIME->setCertificate($sCertificate); $SMIME->setPrivateKey($sPrivateKey, $oPassphrase); $result = $SMIME->decrypt($sBody); + if ($result) { + $result = ['data' => $result]; + if (\str_contains($result['data'], 'multipart/signed')) { + $result['signed'] = [ + 'success' => !empty($SMIME->verify($result['data'], null, true)['success']) + ]; + } + } - return $this->DefaultResponse($result ? ['data' => $result] : false); + return $this->DefaultResponse($result ?: false); } public function DoSMimeVerifyMessage() : array