Отправлять зашифрованные и подписанные письма с .NET MailMessage в C # - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу отправить зашифрованное и подписанное письмо без использования сторонней библиотеки.Я могу отправить письмо с подписью или в зашифрованном виде.Но оба не работают.Я пытался отправить письмо с Thunderbird и посмотрел на источник, но там нет ничего, что говорит о том, что почта зашифрована и подписана.Когда я использую следующий код

byte[] bodyBytes = Encoding.UTF8.GetBytes("TestBody");
SignedCms cms = new SignedCms(new ContentInfo(bodyBytes), false);
CmsSigner signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, signerCert); //X509Certificate2 with private key of sender
cms.ComputeSignature(signer);
byte[] signedBytes = cms.Encode();
EnvelopedCms ecms = new EnvelopedCms(new ContentInfo(signedBytes));
CmsRecipient cmsr = new CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, encryptCert); //X509Certificate2 with public key of recipient
ecms.Encrypt(cmsr);
byte[] encryptedBytes = ecms.Encode();
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress(to));
msg.From = new MailAddress(from);
msg.Subject = subject;
MemoryStream ms = new MemoryStream(encryptedBytes);
AlternateView av = new AlternateView(ms, "application/pkcs7-mime; smime-type=enveloped-data;name=smime.p7m");
msg.AlternateViews.Add(av);
SmtpClient smtp = new SmtpClient("[smtpServer]", 25);
smtp.Send(msg);

, MailClient просто расшифровывает или проверяет подпись сообщения ... действие, которое я выполняю последним.Как я могу попросить Клиента выполнить как расшифровку, так и проверку подписи?

...