#c# #smime #mailsystem.net
#c# #smime #mailsystem.net
Вопрос:
Я новичок в s / mime, и мне нужно подписать электронное письмо цифровой подписью с вложением xml, но, к сожалению, это электронное письмо имеет неправильное хэш-значение (в соответствии с ответом внешней системы). Я покопался в коде библиотеки и обнаружил, что он создает знак для основной части, закодированной в base64, это правильно или подпись должна быть вычислена для содержимого вложения xml?
Также вот еще несколько проблем:
- Множество заголовков / параметров записываются библиотекой: например. Параметры ContentType, некоторые заголовки (например, X-Mailer) и многие другие
- Это создает пустую границу для Content-Type: text / plain, хотя у меня нет никакого текста, кроме вложения
Вот мой код:
public static void Sign(X509Certificate2 clientCert, string from, string to, string subject, string attachementPath)
{
Message message = new Message();
message.From = new Address(from);
message.To.Add(to);
message.ContentType.MimeType = "multipart/signed";
message.ContentType.Parameters.Add("protocol", ""application/pkcs7-signature"");
message.ContentTransferEncoding = ContentTransferEncoding.SevenBits;
message.AddHeaderField("MIME-Version", "1.0");
message.Subject = subject;
var mimePart = new MimePart(attachementPath, false);
mimePart.ContentTransferEncoding = ContentTransferEncoding.Base64;
mimePart.Charset = "windows-1251";
mimePart.ContentType.MimeType = "text/xml";
message.Attachments.Add(mimePart);
message.BuildMimePartTree();
CmsSigner signer = new CmsSigner(clientCert);
signer.IncludeOption = X509IncludeOption.EndCertOnly;
message.SmimeAttachSignatureBy(signer);
}
Комментарии:
1. Вы должны поделиться дополнительной информацией. О какой библиотеке вы говорите и как она используется? Можете ли вы привести пример сообщения до и после его подписания? Проблемы, которые вы перечисляете, не обязательно являются проблемами.
2. Подпись — это алгоритм шифрования, и для проверки подписи вы должны использовать тот же ключ, алгоритм и данные, что и код, создавший подпись. Много раз с подписанными документами вы начинаете с шаблона и создаете подписанный документ из шаблона. Поэтому я думаю, что перезапись — это просто изменение шаблона.
3. Я использую почтовую систему. Сетевая библиотека и я отредактировали образец кода (без отправки части)