diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 0767fc072..90c1b0949 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -201,7 +201,7 @@ export class MessageModel extends AbstractModel { this.smimeSigned.subscribe(value => { value?.body && MimeToMessage(value.body, this); - value?.body && this.smimeVerified(value.verified); + 'verified' in value && this.smimeVerified(value.verified); }); } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index 1ac9cc2ed..2f743d71d 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -171,15 +171,22 @@ class MailClient $aFetchResponse = $this->oImapClient->Fetch($aFetchItems, $iIndex, $bIndexIsUid); if (\count($aFetchResponse)) { $oMessage = Message::fromFetchResponse($sFolderName, $aFetchResponse[0], $oBodyStructure); - // S/MIME opaque signed. Verify it, so we have the raw mime body to show - if ($oMessage->smimeSigned && !$oMessage->smimeSigned['detached']) { + // S/MIME signed. Verify it, so we have the raw mime body to show + if ($oMessage->smimeSigned) try { + $bOpaque = !$oMessage->smimeSigned['detached']; $sBody = $this->oImapClient->FetchMessagePart( $oMessage->Uid, $oMessage->smimeSigned['partId'] ); - $result = (new \SnappyMail\SMime\OpenSSL(''))->verify($sBody, null, true); - $oMessage->smimeSigned['body'] = $result['body']; - $oMessage->smimeSigned['verified'] = true; + $result = (new \SnappyMail\SMime\OpenSSL(''))->verify($sBody, null, $bOpaque); + if ($result) { + if ($bOpaque) { + $oMessage->smimeSigned['body'] = $result['body']; + } + $oMessage->smimeSigned['verified'] = $result['success']; + } + } catch (\Throwable $e) { + $this->logException($e); } }