Мне не совсем понятно, что вы пытаетесь сделать, но, похоже, у вас есть только подмножество сообщения (т.е. закодированное в base64 содержимое одной из частей MIME).
Есливсе, что вы хотите сделать, это получить необработанный smime.p7m
файл-вложение (которое находится внутри имеющегося у вас блоба base64), тогда все, что вам действительно нужно сделать, это позвонить File.WriteAllBytes ("smime.p7m", Convert.FromBase64String(base64))
.
если вы хотите выполнить какое-либо действие (например, расшифровку или проверку подписи), вам необходимо получить представление ApplicationPkcs7Mime :
ApplicationPkcs7Mime pkcs7;
using (var stream = new MemoryStream ()) {
byte[] buffer;
// write the Content-Type header
buffer = Encoding.ASCII.GetBytes ("Content-Type: application/pkcs7-mime; name=smime.p7m\r\n");
stream.Write (buffer, 0, buffer.Length);
// write the Content-Type header
buffer = Encoding.ASCII.GetBytes ("Content-Type: application/pkcs7-mime; name=smime.p7m\r\n");
stream.Write (buffer, 0, buffer.Length);
// write the header termination sequence
buffer = Encoding.ASCII.GetBytes ("\r\n");
stream.Write (buffer, 0, buffer.Length);
// write the base64 encoded content
buffer = Encoding.ASCII.GetBytes (base64);
stream.Write (buffer, 0, buffer.Length);
// rewind the stream
stream.Position = 0;
pkcs7 = (ApplicationPkcs7Mime) MimeEntity.Load (stream);
}
Теперь все API-интерфейсы ApplicationPkcs7Mimeдоступны для использования.