Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция CertGetIssuerCertificateFromStore извлекает контекст сертификата из хранилища сертификатов для первого или следующего издателя указанного сертификата субъекта. Вместо использования этой функции рекомендуется использовать новые функции проверки цепочки сертификатов .
Синтаксис
PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pSubjectContext,
[in, optional] PCCERT_CONTEXT pPrevIssuerContext,
[in, out] DWORD *pdwFlags
);
Параметры
[in] hCertStore
Дескриптор хранилища сертификатов.
[in] pSubjectContext
Указатель на структуру CERT_CONTEXT , содержащую сведения о субъекте. Этот параметр можно получить из любого хранилища сертификатов или создать вызывающим приложением с помощью функции CertCreateCertificateContext .
[in, optional] pPrevIssuerContext
Указатель на структуру CERT_CONTEXT , содержащую сведения об издателе. У издателя может быть несколько сертификатов, особенно при изменении срока действия. Этот параметр должен иметь значение NULL в вызове , чтобы получить первый сертификат издателя. Чтобы получить следующий сертификат для издателя, задайте для pPrevIssuerContextCERT_CONTEXT структуру, возвращенную предыдущим вызовом.
Эта функция освобождает CERT_CONTEXT , на которые ссылаются значения этого параметра, отличные от NULL .
[in, out] pdwFlags
Следующие флаги позволяют проверять возвращенный сертификат. Их можно объединить с помощью побитовой операции ИЛИ , чтобы включить несколько проверок.
Если проверка проверки включенного типа завершается успешно, его флагу присваивается нулевое значение. В случае сбоя флаг остается установленным после возврата. Для CERT_STORE_REVOCATION_FLAG проверка выполняется успешно, если функция не находит список отзыва сертификатов, связанный с сертификатом субъекта.
Если CERT_STORE_REVOCATION_FLAG задано, а у издателя нет списка отзыва сертификатов в хранилище, CERT_STORE_NO_CRL_FLAG задано, а CERT_STORE_REVOCATION_FLAG остается заданным.
Если задано CERT_STORE_SIGNATURE_FLAG или CERT_STORE_REVOCATION_FLAG, CERT_STORE_NO_ISSUER_FLAG устанавливается, если функция не находит сертификат издателя в хранилище. Дополнительные сведения см. в разделе Комментарии.
В случае сбоя проверки проверка по-прежнему возвращается указатель на CERT_CONTEXT издателя, а GetLastError не обновляется.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение является указателем на CERT_CONTEXT издателя, доступного только для чтения.
Если функция завершается сбоем и первый или следующий сертификат издателя не найден, возвращается значение NULL.
Только последний возвращенный CERT_CONTEXT структуры должен быть освобожден путем вызова CertFreeCertificateContext. Если возвращаемое CERT_CONTEXT из одного вызова функции предоставляется в качестве параметра pPrevIssuerContext при последующем вызове, контекст освобождается в рамках действия функции.
Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.
Код возврата | Описание |
---|---|
|
Для сертификата субъекта издатель не найден. |
|
Сертификат издателя совпадает с сертификатом субъекта. Это самозаверяющий корневой сертификат. |
|
Дескриптор в параметре hCertStore отличается от дескриптора контекста сертификата, на который указывает параметр pPrevIssuerContext , или в pdwFlags установлен неподдерживаемый флаг. |
Комментарии
Возвращаемый указатель освобождается при передаче в качестве параметра pPrevIssuerContext при последующем вызове функции. В противном случае указатель должен быть явно освобожден путем вызова CertFreeCertificateContext. PPrevIssuerContext, не имеющий значения NULL, всегда освобождается CertGetIssuerCertificateFromStore с помощью вызова CertFreeCertificateContext, даже если в функции есть ошибка.
Для создания дубликата сертификата издателя можно вызвать CertDuplicateCertificateContext.
Шестнадцатеричные значения для dwFlags можно объединить с помощью побитовой операции ИЛИ , чтобы включить несколько проверок. Например, чтобы включить срок действия подписи и времени, значение, 0x00000003, передается в dwFlags при входных данных. В этом случае, если проверка CERT_STORE_SIGNATURE_FLAG выполнена успешно, но CERT_STORE_TIME_VALIDITY_FLAG проверка завершается сбоем, dwFlags возвращает 0x00000002 выходных данных.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |