Функция CertFindCTLInStore (wincrypt.h)
Функция
Синтаксис
PCCTL_CONTEXT CertFindCTLInStore(
[in] HCERTSTORE hCertStore,
[in] DWORD dwMsgAndCertEncodingType,
[in] DWORD dwFindFlags,
[in] DWORD dwFindType,
[in] const void *pvFindPara,
[in] PCCTL_CONTEXT pPrevCtlContext
);
Параметры
[in] hCertStore
Дескриптор хранилища сертификатов для поиска.
[in] dwMsgAndCertEncodingType
Указывает тип кодировки, используемой для CTL. Всегда допустимо указать как сертификат, так и типы кодирования сообщений , сочетая их с побитовойИЛИ операцией, как показано в следующем примере:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING В настоящее время определенные типы кодирования:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
Этот параметр используется, только если параметр
[in] dwFindFlags
Можно задать, если для dwFindType задано значение CTL_FIND_USAGE. Дополнительные сведения см. в комментариях в разделе CTL_FIND_USAGE ниже.
[in] dwFindType
Указывает тип выполняемого поиска. Тип поиска определяет тип данных, содержимое и использование pvFindPara. Этот параметр может быть одним из следующих значений.
Ценность | Значение |
---|---|
|
Тип данных pvFindPara: NULL.
Любой CTL является совпадением. |
|
Тип данных pvFindPara: CRYPT_HASH_BLOB.
CTL с хэшом, соответствующим хэшом в структуре CRYPT_HASH_BLOB, найден. |
|
Тип данных pvFindPara: CRYPT_HASH_BLOB.
CTL с хэшом, соответствующим хэшом в структуре CRYPT_HASH_BLOB, найден. |
|
Тип данных pvFindPara: CTL_FIND_USAGE_PARA.
Любой список CTL найден с идентификатором использования, идентификатором списка или подписчиком, соответствующим идентификатору использования, идентификатору списка или входу в структуру CTL_FIND_USAGE_PARA. Если элемент cUsageIdentifier имеет размер SubjectUsage, любой CTL соответствует. Если элемент cbData элемента ListIdentifier равен нулю, любой идентификатор списка соответствует. Если Если элемент pSigner в структуре CTL_FIND_USAGE_PARANULL, то используются только элементы издателя и члены serialNumber в структуре pSignerCERT_INFO. Если pSigner CTL_FIND_NO_SIGNER_PTR, то только CTL без подписи является совпадением. |
|
Тип данных pvFindPara: CTL_FIND_USAGE_PARA.
Совпадают только списки ctls с одинаковыми идентификаторами использования. Списки ctls, имеющие дополнительные идентификаторы использования, не соответствуют. Например, если в структуре CTL_FIND_USAGE_PARA указан только "1.2.3", то для сопоставления CTL должен содержать только "1.2.3" и никакие дополнительные идентификаторы использования. |
|
Тип данных pvFindPara: PCCTL_CONTEXT.
Выполняет поиск следующего списка отзыва сертификатов, который является точным совпадением CTL_CONTEXT. |
|
Тип данных pvFindPara: CTL_FIND_SUBJECT_PARA.
Объект CTL, имеющий указанную тему, найден. CertFindSubjectInCTL можно вызвать, чтобы получить указатель на запись субъекта в CTL. Элемент pUsagePara в CTL_FIND_SUBJECT_PARA можно задать, чтобы включить сопоставление, описанное выше в CTL_FIND_USAGE. |
[in] pvFindPara
Указатель на значение поиска, связанное с параметром dwFindType.
[in] pPrevCtlContext
Указатель на последний CTL_CONTEXT, возвращенный этой функцией. Он должен быть null, чтобы получить первый CTL в магазине. Последовательные списки ctls извлекаются путем задания pPrevCtlContext указателем на CTL_CONTEXT, возвращенный предыдущим вызовом функции. Все сертификаты, которые не соответствуют критериям поиска или которые ранее удалены CertDeleteCTLFromStore. Эта функция освобождает CTL_CONTEXT, на которые ссылается неЗНАЧЕНИЯ NULL этого параметра.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является указателем на контекст только для чтения CTLконтекста.
Для получения расширенных сведений об ошибке вызовите GetLastError. Ниже приведены некоторые возможные коды ошибок.
Возвращаемый код | Описание |
---|---|
|
Ни один из списков ctls не найден в магазине, ни CTL не найден в соответствии с критериями поиска, либо функция достигла конца списка магазина. |
|
Дескриптор в параметре hCertStore не совпадает с тем, что в контексте CTL, на который указывает параметр pPrevCtlContext или недопустимое значение, указанное в параметре dwFindType. |
Замечания
Возвращаемый указатель освобождается при передаче в качестве pPrevCtlContext при последующем вызове функции. В противном случае указатель должен быть освобожден путем вызова CertFreeCTLContext. НеNULLpPrevCtlContext, передаваемых функции, всегда освобождается при вызове CertFreeCTLContext, даже если функция создает ошибку.
CertDuplicateCTLContext можно вызвать для создания дубликата возвращаемого контекста. Возвращаемый контекст CTL можно добавить в другое хранилище сертификатов с помощью CertAddCTLContextToStore или ссылку на этот контекст CTL можно добавить в неколлекционное хранилище с помощью CertAddCTLLinkToStore. Если параметр CTL, соответствующий условиям поиска, не найден, возвращается NULL.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |
библиотеки |
Crypt32.lib |
DLL | Crypt32.dll |
См. также
функций списка доверия сертификатов