Отправитель не соответствует цифровой подписи - PullRequest
0 голосов
/ 15 марта 2019

Я использую комплект Mime для отправки почты и шифрования.Код:

               var message = new MimeMessage();
            message.From.Add(new MailboxAddress("Test", "xxx@gmail.com"));
            //message.From.Add(new MailboxAddress("Sub", "ss@gmail.com"));
            message.To.Add(new MailboxAddress("Test Mail", "xx@gmail.com"));
            message.To.Add(new MailboxAddress("Test", "yyu@gmail.com"));
            //message.To.Add(new MailboxAddress("Test Mail", "yyy@gmail.com"));
            message.Subject = "TEST";


            var body = new TextPart("plain")
            {
                Text = "Sample comments"
            };

            var attachment = new MimeKit.MimePart()
            {
                Content = new MimeContent(File.OpenRead(filePath), ContentEncoding.Default),
                ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
                ContentTransferEncoding = ContentEncoding.Base64,
                FileName = Path.GetFileName(filePath)
            };

            var multipart = new Multipart("mixed");
            multipart.Add(body);
            multipart.Add(attachment);
            message.Body = multipart;

            var signCertificateFile = @"E:\D_RSA.pfx";
            var signcertificate = new X509Certificate2(signCertificateFile, "", X509KeyStorageFlags.Exportable);
            var certificateFile = @"E:\D_RSA.crt";
            var certificate = new X509Certificate2(certificateFile, "", X509KeyStorageFlags.Exportable);

            var recipientCollection = new MimeKit.Cryptography.CmsRecipientCollection();
            var bountyRecipientCertificate = DotNetUtilities.FromX509Certificate(certificate);

            var recipient = new CmsRecipient(bountyRecipientCertificate);
            recipient.EncryptionAlgorithms = new EncryptionAlgorithm[] { EncryptionAlgorithm.Aes256 };
            recipientCollection.Add(recipient);
            using (var ctx = new TemporarySecureMimeContext())
            {
                var encrypted = ApplicationPkcs7Mime.Encrypt(ctx, recipientCollection, message.Body);                    
                var signer = new CmsSigner(signcertificate);
                signer.DigestAlgorithm = DigestAlgorithm.Sha256;
                message.Body = MultipartSigned.Create(ctx, signer, encrypted);
            }
            using (var client = new MailKit.Net.Smtp.SmtpClient())
            {
                client.Connect("smtp.gmail.com", 25, false);

                client.Authenticate("xxx@gmail.com", "xxx");

                client.Send(message);
                client.Disconnect(true);
            }

Сообщение зашифровано и успешно доставлено.Но получил ошибку в электронном письме «Отправитель не соответствует цифровой подписи».

enter image description here

Есть идеи по поводу этой ошибки?Я использую сертификаты RSA и MimeKit для шифрования электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...