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


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

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

Синтаксис

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

Этот параметр используется, только если параметр dwFindType имеет значение CTL_FIND_USAGE.

[in] dwFindFlags

Можно задать, если для dwFindType задано значение CTL_FIND_USAGE. Дополнительные сведения см. в комментариях в разделе CTL_FIND_USAGE ниже.

[in] dwFindType

Указывает тип выполняемого поиска. Тип поиска определяет тип данных, содержимое и использование pvFindPara. Этот параметр может быть одним из следующих значений.

Ценность Значение
CTL_FIND_ANY
Тип данных pvFindPara: NULL.

Любой CTL является совпадением.

CTL_FIND_SHA1_HASH
Тип данных pvFindPara: CRYPT_HASH_BLOB.

CTL с хэшом, соответствующим хэшом в структуре CRYPT_HASH_BLOB, найден.

CTL_FIND_MD5_HASH
Тип данных pvFindPara: CRYPT_HASH_BLOB.

CTL с хэшом, соответствующим хэшом в структуре CRYPT_HASH_BLOB, найден.

CTL_FIND_USAGE
Тип данных pvFindPara: CTL_FIND_USAGE_PARA.

Любой список CTL найден с идентификатором использования, идентификатором списка или подписчиком, соответствующим идентификатору использования, идентификатору списка или входу в структуру CTL_FIND_USAGE_PARA.

Если элемент cUsageIdentifier имеет размер SubjectUsage, любой CTL соответствует.

Если элемент cbData элемента ListIdentifier равен нулю, любой идентификатор списка соответствует. Если cbData член ListIdentifier CTL_FIND_NO_LIST_ID_CBDATA, значение CTL без идентификатора списка совпадает.

Если элемент pSigner в структуре CTL_FIND_USAGE_PARANULL, то используются только элементы издателя и члены serialNumber в структуре pSignerCERT_INFO. Если pSigner CTL_FIND_NO_SIGNER_PTR, то только CTL без подписи является совпадением.

CTL_FIND_SAME_USAGE_FLAG
Тип данных pvFindPara: CTL_FIND_USAGE_PARA.

Совпадают только списки ctls с одинаковыми идентификаторами использования. Списки ctls, имеющие дополнительные идентификаторы использования, не соответствуют. Например, если в структуре CTL_FIND_USAGE_PARA указан только "1.2.3", то для сопоставления CTL должен содержать только "1.2.3" и никакие дополнительные идентификаторы использования.

CTL_FIND_EXISTING
Тип данных pvFindPara: PCCTL_CONTEXT.

Выполняет поиск следующего списка отзыва сертификатов, который является точным совпадением CTL_CONTEXT.

CTL_FIND_SUBJECT
Тип данных 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. Ниже приведены некоторые возможные коды ошибок.

Возвращаемый код Описание
CRYPT_E_NOT_FOUND
Ни один из списков ctls не найден в магазине, ни CTL не найден в соответствии с критериями поиска, либо функция достигла конца списка магазина.
E_INVALIDARG
Дескриптор в параметре 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

См. также

CTL_CONTEXT

CTL_FIND_USAGE_PARA

CertAddCTLContextToStore

CertAddCTLLinkToStore

CertDeleteCTLFromStore

CertDuplicateCTLContext

CertEnumCTLsInStore

CertFindSubjectInCTL

CertFreeCTLContext

функций списка доверия сертификатов