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