mirror of
https://github.com/chatmail/core.git
synced 2026-05-04 05:46:29 +03:00
mimeparser: Handle headers from the signed part of unencrypted signed message
This makes DC compatible with "multipart/signed" messages thus allowing switching to them someday from the current "multipart/mixed" unencrypted message format.
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
- Updated provider database.
|
- Updated provider database.
|
||||||
- Disable DKIM-Checks again #4076
|
- Disable DKIM-Checks again #4076
|
||||||
- Switch from "X.Y.Z" and "py-X.Y.Z" to "vX.Y.Z" tags. #4089
|
- Switch from "X.Y.Z" and "py-X.Y.Z" to "vX.Y.Z" tags. #4089
|
||||||
|
- mimeparser: handle headers from the signed part of unencrypted signed message #4013
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- Start SQL transactions with IMMEDIATE behaviour rather than default DEFERRED one. #4063
|
- Start SQL transactions with IMMEDIATE behaviour rather than default DEFERRED one. #4063
|
||||||
|
|||||||
@@ -224,8 +224,32 @@ impl MimeMessage {
|
|||||||
|
|
||||||
// Parse hidden headers.
|
// Parse hidden headers.
|
||||||
let mimetype = mail.ctype.mimetype.parse::<Mime>()?;
|
let mimetype = mail.ctype.mimetype.parse::<Mime>()?;
|
||||||
|
let (part, mimetype) =
|
||||||
|
if mimetype.type_() == mime::MULTIPART && mimetype.subtype().as_str() == "signed" {
|
||||||
|
if let Some(part) = mail.subparts.first() {
|
||||||
|
// We don't remove "subject" from `headers` because currently just signed
|
||||||
|
// messages are shown as unencrypted anyway.
|
||||||
|
|
||||||
|
MimeMessage::merge_headers(
|
||||||
|
context,
|
||||||
|
&mut headers,
|
||||||
|
&mut recipients,
|
||||||
|
&mut from,
|
||||||
|
&mut list_post,
|
||||||
|
&mut chat_disposition_notification_to,
|
||||||
|
&part.headers,
|
||||||
|
);
|
||||||
|
(part, part.ctype.mimetype.parse::<Mime>()?)
|
||||||
|
} else {
|
||||||
|
// If it's a partially fetched message, there are no subparts.
|
||||||
|
(&mail, mimetype)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Currently we do not sign unencrypted messages by default.
|
||||||
|
(&mail, mimetype)
|
||||||
|
};
|
||||||
if mimetype.type_() == mime::MULTIPART && mimetype.subtype().as_str() == "mixed" {
|
if mimetype.type_() == mime::MULTIPART && mimetype.subtype().as_str() == "mixed" {
|
||||||
if let Some(part) = mail.subparts.first() {
|
if let Some(part) = part.subparts.first() {
|
||||||
for field in &part.headers {
|
for field in &part.headers {
|
||||||
let key = field.get_key().to_lowercase();
|
let key = field.get_key().to_lowercase();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user