Декодирование подписанных данных
Следующий общий процесс декодирует подписанные данные типа.
Декодирование подписанного сообщения
- Получите указатель на закодированный 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: подписывание, кодировка, декодирование и проверкасообщения.