mirror of
https://github.com/mailscope/kumomta.git
synced 2026-10-28 09:16:15 +00:00
Merge pull request #11 from cloudflare/improve_test
canonicalize also dkim header
This commit is contained in:
+10
-5
@@ -6,6 +6,7 @@ use crate::canonicalization::{
|
||||
self, canonicalize_body_relaxed, canonicalize_body_simple, canonicalize_header_relaxed,
|
||||
canonicalize_header_simple,
|
||||
};
|
||||
use crate::header::HEADER;
|
||||
use crate::{bytes, DKIMError, DKIMHeader};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
@@ -111,12 +112,16 @@ pub(crate) fn compute_headers_hash<'a, 'b>(
|
||||
{
|
||||
let sign = dkim_header.get_raw_tag("b").unwrap();
|
||||
let value = dkim_header.raw_bytes.replace(&sign, "");
|
||||
if canonicalization_type == canonicalization::Type::Simple {
|
||||
input.extend_from_slice(&"DKIM-Signature: ".as_bytes());
|
||||
let mut canonicalized_value = if canonicalization_type == canonicalization::Type::Simple {
|
||||
canonicalize_header_simple(HEADER, &value.as_bytes())
|
||||
} else {
|
||||
input.extend_from_slice(&"dkim-signature:".as_bytes());
|
||||
}
|
||||
input.extend_from_slice(&value.as_bytes());
|
||||
canonicalize_header_relaxed(HEADER, &value.as_bytes())
|
||||
};
|
||||
|
||||
// remove trailing "\r\n"
|
||||
canonicalized_value.truncate(canonicalized_value.len() - 2);
|
||||
|
||||
input.extend_from_slice(&canonicalized_value);
|
||||
}
|
||||
debug!(logger, "headers to hash: {:?}", input);
|
||||
|
||||
|
||||
+10
-2
@@ -414,7 +414,15 @@ We lost the game. Are you hungry yet?
|
||||
|
||||
Joe."#
|
||||
.replace("\n", "\r\n");
|
||||
let raw_header_dkim = r#"v=1; a=ed25519-sha256; c=relaxed/relaxed; d=football.example.com; i=@football.example.com; q=dns/txt; s=brisbane; t=1528637909; h=from : to : subject : date : message-id : from : subject : date; bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; b=/gCrinpcQOoIfuHNQIbq4pgh9kyIK3AQUdt9OdqQehSwhEIug4D11BusFa3bT3FY5OsU7ZbnKELq+eXdp1Q1Dw=="#;
|
||||
|
||||
let email = mailparse::parse_mail(raw_email.as_bytes()).unwrap();
|
||||
let h = email
|
||||
.headers
|
||||
.get_all_headers(HEADER)
|
||||
.first()
|
||||
.unwrap()
|
||||
.get_value_raw();
|
||||
let raw_header_dkim = String::from_utf8_lossy(h);
|
||||
|
||||
let resolver: Arc<dyn Lookup> = Arc::new(MockResolver::new());
|
||||
|
||||
@@ -422,7 +430,7 @@ Joe."#
|
||||
&slog::Logger::root(slog::Discard, slog::o!()),
|
||||
Arc::clone(&resolver),
|
||||
&validate_header(&raw_header_dkim).unwrap(),
|
||||
&mailparse::parse_mail(raw_email.as_bytes()).unwrap(),
|
||||
&email,
|
||||
)
|
||||
.await;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user