public EmailHeader SignMessage(Email email) { // Find the actual headers we're going to sign var headers = email.GetHeadersToSign(_headersToSign); // Generate the header value var value = GenerateDkimHeaderValue(email, headers); // Add the signature key headers.Add(new EmailHeader { Key = SignatureKey, Value = value }); // sign email value += GenerateSignature(email, headers); // Return the new header return(new EmailHeader { Key = SignatureKey, Value = value }); }
public EmailHeader SignMessage(Email email) { var signatureValue = new StringBuilder(); // algorithm used signatureValue.Append("a="); signatureValue.Append(_privateKeySigner.Algorithm); signatureValue.Append("; "); // Canonicalization signatureValue.Append("c="); signatureValue.Append(this.Canonicalization.ToString().ToLower()); signatureValue.Append("; "); // signing domain signatureValue.Append("d="); signatureValue.Append(_domain); signatureValue.Append("; "); // headers to be signed var headers = email.GetHeadersToSign(_headersToSign); if (headers.Count > 0) { signatureValue.Append("h="); foreach (var header in headers) { signatureValue.Append(header.Key); signatureValue.Append(':'); } signatureValue.Length--; signatureValue.Append("; "); } // public key location signatureValue.Append("q=dns; "); // selector signatureValue.Append("s="); signatureValue.Append(_selector); signatureValue.Append("; "); // signature data signatureValue.Append("b="); signatureValue.Append(SignSignature(email, headers)); signatureValue.Append(";"); return(new EmailHeader() { Key = SignatureKey, Value = signatureValue.ToString() }); }
public EmailHeader SignMessage(Email email) { // Find the actual headers we're going to sign var headers = email.GetHeadersToSign(_headersToSign); // Generate the header value var value = this.GenerateDkimHeaderValue(email, headers); // Add the signature key headers.Add(new EmailHeader() { Key = SignatureKey, Value = value}); // sign email value += GenerateSignature(email, headers); // Return the new header return new EmailHeader() { Key = SignatureKey, Value = value }; }
public EmailHeader SignMessage(Email email) { var signatureValue = new StringBuilder(); // algorithm used signatureValue.Append("a="); signatureValue.Append(_privateKeySigner.Algorithm); signatureValue.Append("; "); // Canonicalization signatureValue.Append("c="); signatureValue.Append(this.Canonicalization.ToString().ToLower()); signatureValue.Append("; "); // signing domain signatureValue.Append("d="); signatureValue.Append(_domain); signatureValue.Append("; "); // headers to be signed var headers = email.GetHeadersToSign(_headersToSign); if (headers.Count>0) { signatureValue.Append("h="); foreach (var header in headers) { signatureValue.Append(header.Key); signatureValue.Append(':'); } signatureValue.Length--; signatureValue.Append("; "); } // public key location signatureValue.Append("q=dns; "); // selector signatureValue.Append("s="); signatureValue.Append(_selector); signatureValue.Append("; "); // signature data signatureValue.Append("b="); signatureValue.Append(SignSignature(email, headers)); signatureValue.Append(";"); return new EmailHeader() { Key = SignatureKey, Value = signatureValue.ToString() }; }