diff --git a/src/lib.rs b/src/lib.rs index 6bc4128..0fa1d3b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -110,7 +110,9 @@ trivial_numeric_casts, unstable_features, unused_import_braces, - rust_2018_idioms + rust_2018_idioms, + clippy::string_add, + clippy::string_add_assign )] #![cfg_attr(docsrs, feature(doc_cfg))] diff --git a/src/message/dkim.rs b/src/message/dkim.rs index 1aeeb24..edb9411 100644 --- a/src/message/dkim.rs +++ b/src/message/dkim.rs @@ -349,9 +349,10 @@ pub(super) fn dkim_sign(message: &mut Message, dkim_config: &DkimConfig) { &dkim_header, dkim_config.canonicalization.header, ); - let to_be_signed = signed_headers + &canonicalized_dkim_header; - let to_be_signed = to_be_signed.trim_end(); - let hashed_headers = Sha256::digest(to_be_signed.as_bytes()); + let mut hashed_headers = Sha256::new(); + hashed_headers.update(signed_headers.as_bytes()); + hashed_headers.update(canonicalized_dkim_header.trim_end().as_bytes()); + let hashed_headers = hashed_headers.finalize(); let signature = match &dkim_config.private_key.0 { InnerDkimSigningKey::Rsa(private_key) => base64::encode( private_key