Функция CertFindChainStore (wincrypt.h)
Функция CertFindChainStore
Синтаксис
PCCERT_CHAIN_CONTEXT CertFindChainInStore(
[in] HCERTSTORE hCertStore,
[in] DWORD dwCertEncodingType,
[in] DWORD dwFindFlags,
[in] DWORD dwFindType,
[in] const void *pvFindPara,
[in] PCCERT_CHAIN_CONTEXT pPrevChainContext
);
Параметры
[in] hCertStore
Дескриптор хранилища для поиска сертификата, на котором создается цепочка. Этот дескриптор передается в качестве дополнительного хранилища в функцию CertGetCertificateChain по мере создания цепочки.
[in] dwCertEncodingType
Тип кодирования сертификата
Этот параметр может быть следующим заданным в настоящее время типом кодирования сертификатов.
Ценность | Значение |
---|---|
|
Задает кодировку сертификата X.509. |
[in] dwFindFlags
Содержит дополнительные параметры поиска. Возможные значения этого параметра зависят от значения параметра dwFindType.
Этот параметр может содержать ноль или сочетание одного или нескольких следующих значений, если dwFindType содержит CERT_CHAIN_FIND_BY_ISSUER.
Ценность | Значение |
---|---|
|
Сравнивает открытый ключ в сертификате с Так как hCryptProv член издателя содержит закрытый ключ, его может потребоваться проверить несколько раз во время этого процесса; чтобы упростить эту проверку, элемент dwAcquirePrivateKeyFlags можно задать в структуре CERT_CHAIN_FIND_BY_ISSUER_PARA, чтобы включить кэширование этого hCryptProv. |
|
По умолчанию проверяется только первая простая цепочка для совпадений имени издателя. При использовании этого набора флагов значение по умолчанию переопределяется, а последующие простые цепочки также проверяются на совпадения имени издателя. |
|
Повышает производительность этой функции, вызывая поиск только кэшированных системных хранилищ (root, My, Ca, Trust) для поиска сертификатов издателя. Если этот флаг не задан, функция выполняет поиск кэшированных системных хранилищ и хранилище, представленное параметром hCertStore. |
|
Выполняется поиск только кэша URL-адресов. Интернет не выполняется. |
|
Открывает только хранилища сертификатов локального компьютера. Хранилища сертификатов текущего пользователя не открываются. |
|
Проверка не выполняется, чтобы определить, имеет ли сертификат связанный закрытый ключ. |
[in] dwFindType
Определяет, какие критерии следует использовать для поиска сертификата в хранилище.
Этот параметр может быть следующим заданным в данный момент значением.
CERT_CHAIN_FIND_BY_ISSUER
Находит сертификат на основе имени издателя. Параметр pvFindPara — это указатель на структуру CERT_CHAIN_FIND_BY_ISSUER_PARA, содержащую элементы, изменяющие поиск.
Цепочка сертификатов создается для сертификата с доступным закрытым ключом. По умолчанию сравниваются только издатели в первой простой цепочке в соответствии с именем издателя. Если этот флаг задан, все цепочки проверяются на сертификат издателя, соответствующий одному из наборов имен издателей.
Эта функция сравнивает имя BLOB-объектов, передаваемых в структуре pvFindPara, с любым центром сертификации (ЦС) в цепочке, а не только центром сертификации в корневом сертификате.
Эта функция не выполняет никаких проверок отзыва.
Если pPrevChainContext не NULL, эта функция возвращает цепочку для другого сертификата при каждом вызове функции. Если имеется только один подходящий сертификат, но существует два сопоставления выданных центров сертификации, одно из которых отозвано, это можно сделать, чтобы эта функция возвращала отозванную цепочку. Если приложение проверяет наличие отзыва через вызовы функции CertVerifyRevocation и находит цепочку неподходящими, дополнительный вызов функции CertFindChainStore не вернет цепочку, содержащую тот же сертификат из допустимого центра сертификации. Вместо этого он возвращает совершенно другую цепочку с другим сертификатом или NULL, если такая цепочка не найдена.
[in] pvFindPara
Указатель, содержащий дополнительные критерии поиска. Тип и формат данных, на которые указывает этот параметр, зависит от значения параметра dwFindType.
[in] pPrevChainContext
Указатель на структуру CERT_CHAIN_CONTEXT, возвращенную из предыдущего вызова этой функции. Поиск начинается с этого сертификата. Для первого вызова этой функции этот параметр должен быть null. В последующих вызовах это указатель, возвращаемый предыдущим вызовом функции. Если этот параметр не null, эта функция освобождает эту структуру.
Возвращаемое значение
Если первый или следующий контекст цепочки не построен, возвращается NULL. В противном случае возвращается указатель на структуру только для чтения CERT_CHAIN_CONTEXT. Структура CERT_CHAIN_CONTEXT освобождается при передаче в качестве параметра pPrevChainContext при последующем вызове этой функции. В противном случае структура CERT_CHAIN_CONTEXT должна быть освобождена явным образом путем вызова функции CertFreeCertificateChain.
Замечания
Параметр pPrevChainContext должен быть null при первом вызове для создания контекста цепочки. Чтобы создать контекст следующей цепочки, pPrevChainContext устанавливается в структуру CERT_CHAIN_CONTEXT, возвращаемую предыдущим вызовом. Если pPrevChainContext не NULL, структура всегда освобождается этой функцией с помощью функции CertFreeCertificateChain, даже если возникает ошибка.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |
библиотеки |
Crypt32.lib |
DLL | Crypt32.dll |
См. также
CERT_CHAIN_FIND_BY_ISSUER_PARA
Функции проверки цепочки сертификатов