Функция CertFindCRLInStore (wincrypt.h)

Функция CertFindCRLInStore находит первый или следующий контекст списка отзыва сертификатов (CRL) в хранилище сертификатов , который соответствует критерию поиска, установленному параметром dwFindType и связанным параметром pvFindPara . Эту функцию можно использовать в цикле для поиска всех контекстов списка отзыва сертификатов в хранилище сертификатов, соответствующих указанным критериям поиска.

Синтаксис

PCCRL_CONTEXT CertFindCRLInStore(
  [in] HCERTSTORE    hCertStore,
  [in] DWORD         dwCertEncodingType,
  [in] DWORD         dwFindFlags,
  [in] DWORD         dwFindType,
  [in] const void    *pvFindPara,
  [in] PCCRL_CONTEXT pPrevCrlContext
);

Параметры

[in] hCertStore

Дескриптор хранилища сертификатов для поиска.

[in] dwCertEncodingType

Этот параметр в настоящее время не используется. Для него необходимо задать нулевое значение.

[in] dwFindFlags

Если параметру dwFindType присвоено значение CRL_FIND_ISSUED_BY, по умолчанию выполняется сопоставление только имени издателя. Следующие флаги можно использовать для дополнительной фильтрации.

Значение Значение
CRL_FIND_ISSUED_BY_AKI_FLAG
Проверяет список отзыва сертификатов с расширением AKI. Если список отзыва сертификатов содержит AKI, возвращается только список отзыва сертификатов, AKI которого соответствует издателю.
Примечание Расширение AKI имеет значение идентификатора объекта (OID) szOID_AUTHORITY_KEY_IDENTIFIER2 и соответствующую структуру данных.
 
CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
Используйте открытый ключ в сертификате издателя, чтобы проверить подпись в списке отзыва сертификатов. Возвращает только список отзыва сертификатов с допустимой подписью.
CRL_FIND_ISSUED_BY_DELTA_FLAG
Находит и возвращает разностный список отзыва сертификатов.
CRL_FIND_ISSUED_BY_BASE_FLAG
Находит и возвращает базовый список отзыва сертификатов.
CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG
После успешной проверки подпись проверяется на прочность. Этот флаг применяется только в том случае , если параметру dwFindType присвоено значение CRL_FIND_ISSUED_FOR. Также необходимо задать CRL_FIND_ISSUED_BY_SIGNATURE_FLAG. В случае успешного выполнения в контексте списка отзыва сертификатов будут заданы следующие свойства строгой сигнатуры:
  • CERT_SIGN_HASH_CNG_ALG_PROP_ID
  • CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Windows 8 и Windows Server 2012: начинается поддержка этого флага.

[in] dwFindType

Указывает тип выполняемого поиска. Значение dwFindType определяет тип данных, содержимое и использование параметра pvFindPara . В настоящее время определенные типы поиска и их требования pvFindPara приведены ниже.

Значение Значение
CRL_FIND_ANY
Параметр pvFindPara не используется. Для него должно быть задано значение NULL.
Нет условий поиска. Возвращается следующий список отзыва сертификатов в хранилище.
CRL_FIND_ISSUED_BY
Указатель на CERT_CONTEXT.
Выполняет поиск следующего списка отзыва сертификатов в магазине, соответствующего издателю в CERT_CONTEXT.
CRL_FIND_EXISTING
Указатель на CRL_CONTEXT.
Выполняет поиск следующего списка отзыва сертификатов, соответствующего CRL_CONTEXT , следующими способами:
  • Оба они являются базовыми или разностными списками отзыва сертификатов.
  • Большие двоичные объекты с именем издателя для обоих являются идентичными.
  • Если они существуют, большие двоичные объекты расширения в кодировке Authority/KeyIdentifier и IssuingDistributionPoint совпадают.
CRL_FIND_ISSUED_FOR
Указатель на CRL_FIND_ISSUED_FOR_PARA.
Выполняет поиск следующего списка отзыва сертификатов в хранилище, соответствующего издателю сертификата субъекта в структуре CRL_FIND_ISSUED_FOR_PARA.

Если список отзыва сертификатов не найден, выполняет поиск следующего списка отзыва сертификатов в хранилище, соответствующего издателю в структуре CRL_FIND_ISSUED_FOR_PARA.

Примечание При использовании кросс-сертификатов имя субъекта в сертификате издателя может не совпадать с именем издателя в сертификате субъекта и соответствующим списком отзыва сертификатов.
 

[in] pvFindPara

Этот параметр определяется значением dwFindType. Дополнительные сведения см. в таблице ранее в этом разделе.

[in] pPrevCrlContext

Указатель на последний CRL_CONTEXT , возвращенный этой функцией. Для получения первого списка отзыва сертификатов в магазине, удовлетворяющего условиям поиска, должен иметь значение NULL . Последовательные списки отзыва сертификатов, соответствующие условиям поиска, можно найти, задав pPrevCrlContext указатель PCCRL_CONTEXT , возвращенный предыдущим вызовом функции. Процесс поиска пропускает все списки отзыва сертификатов, которые не соответствуют условиям поиска или были ранее удалены из хранилища с помощью CertDeleteCRLFromStore. Эта функция освобождает CRL_CONTEXT , на которые ссылаются значения этого параметра, которые не имеют значения NULL.

Возвращаемое значение

Если функция выполняется успешно, функция возвращает указатель на контекст списка отзыва сертификатов только для чтения. Завершив использование возвращенного контекста списка отзыва сертификатов, освободите его, вызвав функцию CertFreeCRLContext , или неявно освободите ее, передав ее в качестве параметра pPrevCrlContext при последующем вызове функции CertFindCRLInStore .

Если функция завершается сбоем и список отзыва сертификатов, соответствующий условиям поиска, не найден, возвращаемое значение равно NULL. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
E_INVALIDARG
Дескриптор в параметре hCertStore отличается от дескриптора в контексте списка отзыва сертификатов, на который указывает параметр pPrevCrlContext , или в параметре dwFindType указан недопустимый тип поиска.
CRYPT_E_NOT_FOUND
В магазине нет списков отзыва сертификатов, не было найдено списков отзыва сертификатов, соответствующих условиям поиска, или достигнут конец списка магазина.

Комментарии

Возвращаемый указатель освобождается при передаче в качестве параметра pPrevCrlContext при последующем вызове функции. В противном случае указатель должен быть явно освобожден путем вызова CertFreeCRLContext. PPrevCrlContext, не имеющий значения NULL, всегда освобождается с помощью CertFindCRLInStore с помощью вызова CertFreeCRLContext, даже если в функции возникает ошибка.

Можно вызвать CertDuplicateCRLContext , чтобы создать дубликат возвращаемого контекста. Возвращаемый контекст списка отзыва сертификатов можно добавить в другое хранилище сертификатов с помощью CertAddCRLContextToStore, или ссылку на этот контекст списка отзыва сертификатов можно добавить в неколлекционное хранилище с помощью CertAddCRLLinkToStore.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CRL_CONTEXT

CertAddCRLContextToStore

CertAddCRLLinkToStore

CertDeleteCRLFromStore

CertDuplicateCRLContext

CertFreeCRLContext

Функции списка отзыва сертификатов