MimeKit извлекает Подписанное вложение

#c# #smime #mimekit

#c# #smime #mimekit

Вопрос:

У меня есть вложение, хранящееся в базе данных, которое имеет имя вложения smime.p7m и имеет тип mimetype multipart/signed . Теперь мне нужно извлечь вложение из подписанного файла p7m, и я надеялся, что смогу использовать Mimekit для достижения этой цели. Я пробовал следующее:

     CryptographyContext.Register(typeof(WindowsSecureMimeContext));
    try
    {
        using (MemoryStream ms = new MemoryStream(buf))
        {
            ApplicationPkcs7Mime p7m = new ApplicationPkcs7Mime(SecureMimeType.EnvelopedData, ms);
            p7m.Verify(out attachment);
            builder.Attachments.Add(attachment);
        }
    }
    catch (Exception ex)
    {
        log.Error("Exception in smime", ex);
    }
  

Но это не удается с системой.Исключение InvalidOperationException в строке проверки.

Есть мысли?

Ответ №1:

SecureMimeType.EnvelopedData предназначено для зашифрованных данных, а не для подписанных данных. Вам нужно использовать SecureMimeTYpe.SignedData .