Поделиться через


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

Функция CertGetCRLFromStore получает первый или следующий контекстсписка отзыва сертификатов (CRL) из хранилища сертификатов для указанного издателя. Функция также выполняет включенные проверки списка отзыва сертификатов. Вместо этой функции рекомендуется использовать новые функции проверки цепочки сертификатов .

Синтаксис

PCCRL_CONTEXT CertGetCRLFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in, optional] PCCERT_CONTEXT pIssuerContext,
  [in]           PCCRL_CONTEXT  pPrevCrlContext,
  [in, out]      DWORD          *pdwFlags
);

Параметры

[in] hCertStore

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

[in, optional] pIssuerContext

Указатель на CERT_CONTEXT издателя. Указатель pIssuerContext может поступать из этого или другого хранилища или может быть создан с помощью вызова CertCreateCertificateContext. Если для этого параметра передается значение NULL , будут найдены все списки отзыва сертификатов в хранилище.

[in] pPrevCrlContext

Указатель на CRL_CONTEXT. У издателя может быть несколько списков отзыва сертификатов. Например, он может создавать разностные списки отзыва сертификатов с помощью расширения X.509 версии 3. Этот параметр должен иметь значение NULL при первом вызове, чтобы получить список отзыва сертификатов. Чтобы получить следующий список отзыва сертификатов для издателя, параметру присваивается CRL_CONTEXT , возвращенный предыдущим вызовом. PPrevCrlContext, отличный от NULL, всегда освобождается этой функцией путем вызова CertFreeCRLContext даже при возникновении ошибки.

[in, out] pdwFlags

Для включения проверок возвращаемого списка отзыва сертификатов определены следующие значения флагов. Эти флаги можно объединить с помощью побитовой операции ИЛИ .

Значение Значение
CERT_STORE_SIGNATURE_FLAG
Использует открытый ключ в сертификате издателя для проверки подписи в возвращенном списке отзыва сертификатов.
CERT_STORE_TIME_VALIDITY_FLAG
Возвращает текущее время и проверяет, что оно находится в пределах времени между этим и следующим обновлениями списка отзыва сертификатов.
CERT_STORE_BASE_CRL_FLAG
Возвращает базовый список отзыва сертификатов.
CERT_STORE_DELTA_CRL_FLAG
Возвращает разностный список отзыва сертификатов.
 

Если включенная проверка проверка выполнена успешно, ее флаг устанавливается равным нулю.

Если включенная проверка проверки завершается сбоем, его флаг остается установленным после возврата. Если pIssuerContext имеет значение NULL, то включенная CERT_STORE_SIGNATURE_FLAG всегда завершается сбоем, и также устанавливается CERT_STORE_NO_ISSUER_FLAG. Дополнительные сведения см. в разделе Комментарии.

Если задан только один из CERT_STORE_BASE_CRL_FLAG или CERT_STORE_DELTA_CRL_FLAG, эта функция возвращает базовый или разностный CRL, а соответствующий базовый или разностный флаг будет снят при возврате. Если установлены оба флага, будет снят только один из флагов.

При сбое проверка проверки по-прежнему возвращается указатель на первый или следующий CRL_CONTEXT, а GetLastError не обновляется.

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

Если функция выполняется успешно, возвращаемое значение является указателем на CRL_CONTEXT, доступный только для чтения.

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

Возвращаемые CRL_CONTEXT должны быть освобождены путем вызова CertFreeCRLContext. Однако при последующем вызове возвращаемого CRL_CONTEXT для pPrevCrlContext функция освобождает его.

Для получения дополнительных сведений об ошибке вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.

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

Комментарии

Можно вызвать CertDuplicateCRLContext , чтобы создать дубликат списка отзыва сертификатов.

Шестнадцатеричные значения флагов можно объединить с помощью побитовой операции ИЛИ , чтобы включить обе проверки. Например, чтобы включить обе проверки, значение DWORD , на которое указывает pdwFlags , имеет значение CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG. Если проверка CERT_STORE_SIGNATURE_FLAG выполнена успешно, но CERT_STORE_TIME_VALIDITY_FLAG проверка завершилась сбоем, значение DWORD , на которое указывает pdwFlags , при возврате функции устанавливается в CERT_STORE_TIME_VALIDITY_FLAG.

Требования

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

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

CRL_CONTEXT

CertCreateCertificateContext

CertDuplicateCRLContext

CertFreeCRLContext

CertGetCRLContextProperty

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