Декодирование подписанных данных
Следующий общий процесс декодирует подписанный тип данных .
Декодирование подписанного сообщения
- Получение указателя на закодированный BLOB-объект.
- Вызовите CryptMsgOpenToDecode, передав необходимые аргументы.
- Вызовите CryptMsgUpdate один раз, передав дескриптор, полученный на шаге 2, и указатель на данные, которые необходимо декодировать. Это приводит к выполнению соответствующих действий с сообщением в зависимости от типа сообщения.
- Вызовите CryptMsgGetParam, передав дескриптор, полученный на шаге 2, и соответствующие типы параметров для доступа к декодируемым данным. Например, передайте CMSG_CONTENT_PARAM, чтобы получить указатель на декодированное содержимое.
Следующий общий процесс проверяет подпись декодированного подписанного сообщения.
Проверка подписи декодированного подписанного сообщения
- Вызовите CryptMsgGetParam, передав дескриптор сообщения и CMSG_SIGNER_CERT_INFO_PARAM, чтобы получить CERT_INFO подписывающего из сообщения.
- Вызовите CertOpenStore , чтобы открыть временное хранилище, инициализированное с помощью сертификатов из сообщения.
- Вызовите CertGetSubjectCertificateFromStore , чтобы получить CERT_INFO подписывающего из сертификатов, включенных в сообщение.
- Вызовите CryptMsgControl, передав CMSG_CTRL_VERIFY_SIGNATURE для проверки подписей.
- Вызовите CryptMsgClose , чтобы закрыть сообщение.
Результатом этих процедур является проверка подписи и получение указателя на декодированное содержимое сообщения, полученное на шаге 4 процедуры декодирования подписанного сообщения.
Сведения о кодировании на языке C см. в разделе Пример программы C: подписывание, кодирование, декодирование и проверка сообщения.