2016-02-15 3 views
0

Я работаю над надстройкой для Outlook 2007. Надстройка должна получить сертификат из подтвержденной подписанной (не зашифрованной) почты и проверить, хранится ли ее эмитент в списке контактов Outlook. Если это так, надстройка должна добавить сертификат к определенному контакту. Часть, где я застрял прямо сейчас, должен получить сертификат от MailItem. Я узнал, что OOM не поддерживает функциональность, в которой я нуждаюсь.Получить сертификат из подписанных писем (Outlook 2007)

Есть ли способ извлечь этот сертификат (кроме, возможно, выкупа)?

ответ

0

Сертификат хранится в приложении p7m. Однако обратите внимание, что объектная модель Outlook представляет все подписанные и зашифрованные сообщения как обычные объекты MailItem. Он даже возвращает поддельный объект IMessage Extended MAPI из свойства MailItem.MAPIOBJECT, поэтому приложение p7m никогда не доступно.

Вы можете использовать расширенный MAPI (только C++ или Delphi), чтобы открыть сообщение и извлечь вложение p7m. Вы можете увидеть данные в OutlookSpy - выберите подписанное сообщение, нажмите кнопку «Сообщение», затем IMAPISecureMessage | GetBaseMessage, перейдите на вкладку GetAttachmentTable.

При использовании Redemption (на любом языке) является вариант, он выставляет RDOEncryptedMessage объект

set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set Msg = Session.GetMessageFromId(Application.ActiveExplorer.Selection(1).EntryId) 
if TypeName(Msg) = "RDOEncryptedMessage" Then 
    MsgBox Msg.SignedByName 
End If 
+0

Спасибо за ответ. Так что, если мне удастся получить вложение smime.p7m, как мне получить сертификат? Я проверил файл с помощью шестнадцатиричного просмотра и сравнил его с фактическим сертификатом, используемым для подписки на msg. Но они, похоже, не имеют ничего общего. Нужно ли мне каким-то образом преобразовать файл p7m, чтобы получить фактический сертификат? – Selfdestrucktion

+0

p7m - файл сообщений MIME. Вам нужна часть MIME приложения/x-pkcs7-signature. Затем вы можете использовать CryptVerifyDetachedMessageSignature/GetCertificateString/и т. Д., Чтобы извлечь данные сертификата. –

+0

Итак, я решил получить Искупление. Но я немного борюсь с объектом RDOEncryptedMessage. Похоже, я могу только читать определенные переменные сертификата, такие как почта или имя эмитента. Кажется, я не могу напрямую обратиться к сертификату (который был бы лучшим) или, по крайней мере, к файлу p7m. Я также не могу найти функции GetCertificateString. – Selfdestrucktion

 Смежные вопросы

  • Нет связанных вопросов^_^