структура CERT_STORE_PROV_FIND_INFO (wincrypt.h)
Структура CERT_STORE_PROV_FIND_INFO используется многими функциями обратного вызова поставщика хранилища. Он содержит критерии поиска сертификата, списка отзыва сертификатов (CRL) или списка доверия сертификатов (CTL) в хранилище сертификатов.
Синтаксис
typedef struct _CERT_STORE_PROV_FIND_INFO {
DWORD cbSize;
DWORD dwMsgAndCertEncodingType;
DWORD dwFindFlags;
DWORD dwFindType;
const void *pvFindPara;
} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;
Члены
cbSize
Размер структуры.
dwMsgAndCertEncodingType
Указывает тип кодирования, используемый для сообщений и сертификатов. Типы кодирования сертификатов и сообщений можно объединить с побитовой операцией ИЛИ. Ниже приведены определенные типы кодирования.
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
dwFindFlags
Используется с некоторыми значениями dwFindType для изменения условий поиска. Для большинства значений dwFindTypeпараметр dwFindFlags не используется и должен иметь нулевое значение.
dwFindType
Указывает тип выполняемого поиска. Тип поиска определяет тип данных, содержимое и использование pvFindPara. В настоящее время определенные значения dwFindType и тип данных, необходимый для pvFindPara , приведены ниже.
Значение | Значение |
---|---|
|
Критерии поиска не используются. Возвращает следующий сертификат в хранилище. |
|
Находит сертификат, определенный указанным CERT_ID. |
|
Ищет сертификат с расширением szOID_ENHANCED_KEY_USAGE или CERT_CTL_PROP_ID, который соответствует члену pszUsageIdentifier структуры CTL_USAGE . |
|
Выполняет поиск сертификата в хранилище с расширением расширенного использования ключа или свойством расширенного использования ключа и идентификатором использования, соответствующим элементу pszUsageIdentifier в структуре CERT_ENHKEY_USAGE .
Сертификат имеет расширенное расширение использования ключа, если у него есть структура CERT_EXTENSION с элементом pszObjId , для которого задано значение szOID_ENHANCED_KEY_USAGE. Сертификат имеет расширенное свойство использования ключа, если задан его CERT_ENHKEY_USAGE_PROP_ID идентификатор. Если параметр pvFindPara имеет значение NULL или член cUsageIdentifierCERT_ENHKEY_USAGE равен нулю, любой сертификат с расширенным расширением использования ключа или свойством расширенного использования ключа соответствует критериям выбора. Если pvFindPara имеет значение NULL или элемент cUsageIdentifierструктуры CERT_ENHKEY_USAGE равен нулю, любой сертификат с расширенным использованием ключа соответствует. Если CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG задано в dwFindFlags, сертификаты без расширения использования ключа или свойства также совпадают. Установка этого флага имеет приоритет над передачей NULL в pvFindPara. Если задано CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG, совпадение выполняется только в расширении использования ключа. Сведения об изменениях флагов в критериях поиска см. в разделе Примечания. |
|
Выполняет поиск сертификата, который является точным соответствием заданного контекста сертификата. |
|
Выполняет поиск сертификата с хэшом SHA1, который соответствует хэшу в структуре CRYPT_HASH_BLOB . |
|
Найдите сертификат с указанными атрибутами издателя, которые соответствуют атрибутам в структуре CERT_RDN . Если эти значения заданы, функция сравнивает атрибуты издателя в сертификате с элементами массива CERT_RDN_ATTR в этой CERT_RDN структуре. Сравнивает CERT_RDN_ATTR атрибуты , которые ищут совпадение с атрибутами издателя сертификата.
Если элемент pszObjIdCERT_RDN_ATTR имеет значение NULL, идентификатор объекта атрибута игнорируется. Если элемент dwValueTypeCERT_RDN_ATTR CERT_RDN_ANY_TYPE, тип значения игнорируется. Если элемент pbDataCERT_RDN_VALUE_BLOB имеет значение NULL, любое значение является совпадением. В настоящее время поддерживается только точное совпадение с учетом регистра. Сведения о параметрах Юникода см. в разделе Примечания. Если эти значения заданы, поиск ограничивается сертификатами, тип кодирования которых соответствует dwMsgAndCertEncodingType. |
|
Найдите сертификат с точным совпадением всего имени издателя с именем в CERT_NAME_BLOB. Поиск ограничен сертификатами, которые соответствуют dwMsgAndCertEncodingType. |
|
Ищет сертификат с издателем, который соответствует издателю в CERT_CONTEXT.
Вместо использования функции CertFindCertificateInStore с этим значением используйте функцию CertGetCertificateChain . |
|
Найдите сертификат, содержащий указанную строку имени издателя. Член издателя сертификата преобразуется в строку имени соответствующего типа, используя соответствующую форму CertNameToStr в формате CERT_SIMPLE_NAME_STR. Затем выполняется сопоставление подстроки без учета регистра в строке. Если это значение задано, поиск ограничивается сертификатами, тип кодирования которых соответствует dwMsgAndCertEncodingType. |
|
Выполняет поиск сертификата со свойством CERT_KEY_IDENTIFIER_PROP_ID, соответствующим идентификатору ключа в CRYPT_HASH_BLOB. |
|
Выполняет поиск сертификата со свойством CERT_KEY_SPEC_PROP_ID, соответствующим спецификации ключа в pvFindPara. |
|
Выполняет поиск сертификата с хэшом MD5, который соответствует хэшу в CRYPT_HASH_BLOB. |
|
Выполняет поиск сертификата со свойством, соответствующим идентификатору свойства, заданному параметром DWORD в pvFindPara. |
|
Выполняет поиск сертификата с открытым ключом, который соответствует открытому ключу в структуре CERT_PUBLIC_KEY_INFO . |
|
Выполняет поиск сертификата с хэшом SHA1, который соответствует хэшу в структуре CRYPT_HASH_BLOB . |
|
Выполняет поиск сертификата с хэшом подписи, который соответствует хэшу подписи в структуре CRYPT_HASH_BLOB . |
|
Выполняет поиск сертификата с указанными атрибутами субъекта, которые соответствуют атрибутам в структуре CERT_RDN . Если заданы значения RDN, функция сравнивает атрибуты субъекта в сертификате с элементами массива CERT_RDN_ATTR в этой структуре CERT_RDN . Сравнивает итерацию по атрибутам CERT_RDN_ATTR , которые ищут совпадение с атрибутами субъекта сертификата.
Если элемент pszObjIdCERT_RDN_ATTR имеет значение NULL, идентификатор объекта атрибута игнорируется. Если элемент dwValueTypeCERT_RDN_ATTR CERT_RDN_ANY_TYPE, тип значения игнорируется. Если элемент pbDataCERT_RDN_VALUE_BLOB имеет значение NULL, любое значение является совпадением. В настоящее время поддерживается только точное совпадение с учетом регистра. Сведения о параметрах Юникода см. в разделе Примечания. Если эти значения заданы, поиск ограничивается сертификатами, тип кодирования которых соответствует dwMsgAndCertEncodingType. |
|
Поиск сертификата с издателем и серийным номером, которые соответствуют издателю и серийному номеру в структуре CERT_INFO . |
|
Выполняет поиск сертификата с точным соответствием имени всего субъекта с именем в структуре CERT_NAME_BLOB . Поиск ограничен сертификатами, которые соответствуют значению dwMsgAndCertEncodingType. |
|
Выполняет поиск сертификата, содержащего указанную строку имени субъекта. Элемент субъекта сертификата преобразуется в строку имени соответствующего типа, используя соответствующую форму CertNameToStr в формате CERT_SIMPLE_NAME_STR. Затем выполняется сопоставление подстроки без учета регистра в строке. Если это значение задано, поиск ограничивается сертификатами, тип кодирования которых соответствует dwMsgAndCertEncodingType. |
pvFindPara
Указывает на элемент данных или структуру для использования с типом поиска, указанным значением dwFindType.
Комментарии
Член dwFindFlags используется для изменения критериев некоторых типов поиска.
Значение dwFindFlags CERT_UNICODE_IS_RDN_ATTRS_FLAG используется только со значениями CERT_FIND_SUBJECT_ATTR и CERT_FIND_ISSUER_ATTR для dwFindType. CERT_UNICODE_IS_RDN_ATTRS_FLAG необходимо задать, если структура CERT_RDN_ATTR , на которую указывает pvFindPara , инициализирована строками Юникода. Перед каким-либо сравнением сопоставляемая строка преобразуется с помощью X509_UNICODE_NAME для обеспечения сравнений в Юникоде.
Следующие значения dwFindFlags используются только с CERT_FIND_ENKEY_USAGE значением dwFindType.
Значение | Значение |
---|---|
CERT_FIND_OR_ENHKEY_USAGE_FLAG | Критерии поиска можно изменить, установив один или несколько флагов. По умолчанию, если необходимо сопоставить член pszUsageIdentifierструктуры CERT_ENHKEY_USAGE , на которую указывает pvFindPara , каждый идентификатор должен соответствовать условиям поиска. Однако если задано CERT_FIND_OR_ENHKEY_USAGE_FLAG, можно сопоставить все идентификаторы, объединенные с помощью побитовой операции ИЛИ ; таким образом, достаточно сопоставить любой из идентификаторов. |
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG | Если этот флаг установлен, в дополнение к обычным совпадениям любой сертификат, не имеющий ни расширения расширенного использования ключа, ни свойства расширенного использования ключа, соответствует критериям поиска. |
CERT_FIND_NO_ENHKEY_USAGE_FLAG | Если этот флаг установлен, совпадают только те сертификаты, которые не имеют ни расширенного использования ключа, ни свойства расширенного использования ключа. Этот параметр флага имеет приоритет над pvFindPara имеет значение NULL. |
CERT_FIND_VALID_ENHKEY_USAGE_FLAG | Если этот флаг установлен, функция соответствует только тем сертификатам, которые допустимы для указанного использования. По умолчанию для сопоставления сертификат должен быть действительным для всех вариантов использования.
CERT_FIND_OR_ENHKEY_USAGE_FLAG также можно задать, если сертификат должен быть действительным только для одного из указанных вариантов использования. Обратите внимание, что CertGetValidUsages вызывается для получения списка допустимых вариантов использования сертификата. При установке CERT_FIND_VALID_ENHKEY_USAGE_FLAG могут применяться только CERT_FIND_OR_ENHKEY_USAGE_FLAG. |
CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG | Если этот флаг установлен, процесс сопоставления включает только идентификаторы использования расширений. Если pvFindPara имеет значение NULL или член cUsageIdentifierструктуры CERT_ENHKEY_USAGE , на которую указывает pvFindPara , равен нулю, любой сертификат с расширенным расширением использования ключа соответствует. Если CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG также задан, совпадением будет любой сертификат без расширения расширенного использования ключа. Если CERT_FIND_NO_ENHKEY_USAGE_FLAG также задано, совпадают только сертификаты без расширения расширенного использования ключа. |
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG | Если этот флаг установлен, процесс сопоставления включает только идентификаторы использования, которые являются свойствами. Если параметр pvFindPara имеет значение NULL или параметр cUsageIdentifier равен нулю, любой сертификат со свойством расширенного использования ключа соответствует. Если CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG также задано, любой сертификат без свойства расширенного использования ключа также соответствует. Если задано CERT_FIND_NO_ENHKEY_USAGE_FLAG, совпадают только сертификаты без свойства расширенного использования ключа. |
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG | Используется только со значениями CERT_FIND_SUBJECT_ATTR и CERT_FIND_ISSUER-ATTR для dwFindType. По умолчанию выполняется точное совпадение с учетом регистра. Если этот флаг установлен, совпадение не учитывает регистр. |
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | wincrypt.h |