Задача следующая: формировать письмо, подписывать его, шифровать и отправлять — так, чтобы получатель мог открыть его в OutlookExpress(который автоматически проверит подпись и расшифрует).
http://support.microsoft.com/kb/318215/en-us — здесь нашел алгоритм подписи.
http://support.microsoft.com/kb/280391/en-us -отсюда взял только шифрование.
Все работает за исключением того, что в статье "How To Create a Multipart SMIME Signature by Using CAPICOM and CDO" предписывают первым BodyPart делать text/plain сообщение. А мне нужно вложить в него полноценный multipart/mixed Mime-message. При попытке сделать это — получаю в Аутлуке письмо и при попытке проверить подпись он мне выдает SECURITY WARNING: The message has been tampered with. То есть ему кажется, что в пути сообщение кто-то изменил (заметьте, подсунуть в зашифрованное сообщение некие байты не испортив его в принципе почти невозможно). Хотя письмо он расшифровывает, открывает, говорит что узнает сертификат которым его подписали и полностью сохраняет структуру исходного открытого Mime-message.
Есть подозрение на кодировку, т.к. если в коде из статьи ..\318215\... убрать charset = utf-8, то получается аналогичная ошибка. Однако, я долго экспериментировал (учел возможность того, что содержимое письма и его headers'ы возможно в другой кодировке, чем та в которой я подаю из BodyPart.Stream.ReadText на подпись.
Может быть кто-то знает в чем здесь проблема?
И в какой кодировке аутлук отправляет (пытается принять) письма? Я так и не понял..