Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Одним из преимуществ использования списков доверия сертификатов (CTLS) является то, что приложения можно разрабатывать, которые могут автоматически проверять подписанные сообщения в отношении доверенных сертификатов, не беспокоясь пользователя с помощью диалоговых окон. Кроме того, он предоставляет сетевому администратору возможность контроля над доверенными источниками.
Следующая процедура может использоваться для проверки подписи подписанного сообщения с помощью CTL.
Чтобы проверить подписанное сообщение с помощью CTL
Декодировать сообщение следующим образом:
- Получите указатель на полученное сообщение (закодированное BLOB).
- Вызов CryptMsgOpenToDecode, передав необходимые аргументы.
- Вызовите CryptMsgUpdate один раз, передав дескриптор, полученный на шаге b, и указатель на данные, которые необходимо декодировать. Это приводит к тому, что соответствующие действия будут выполнены по отношению к сообщению в зависимости от типа сообщения.
Проверьте подпись декодированного, подписанного сообщения и получите указатель на CERT_CONTEXT подписавшего.
Это можно сделать, вызвав CryptMsgGetAndVerifySigner, передав дескриптор сообщения, полученный на шаге 1c в качестве параметра hCryptMsg. Если вызов функции возвращает TRUE, подпись проверена, и указатель на PCCERT_CONTEXT подписавшего возвращается в параметре ppSigner.
Убедитесь, что подписыватель является доверенным источником следующим образом:
- Откройте хранилище сертификатов, содержащее соответствующий CTL.
- Получите указатель на CTL_CONTEXT путем вызова CertFindCTLInStore.
- Чтобы убедиться, что подписыватель является доверенным источником, вызовите CertFindSubjectInCTL, передав указатель, полученный на предыдущем шаге в параметре pCtlContext, CTL_CERT_SUBJECT_TYPE в параметре dwSubjectType, а также указатель на CERT_CONTEXT, полученный на шаге 2 в параметре pvSubject. Если вызов функции возвращает TRUE, CERT_CONTEXT, переданный функции, является доверенным источником в CTL.