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


структура 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_FIND_ANY
NULL; pvFindPara не используется
Критерии поиска не используются. Возвращает следующий сертификат в хранилище.
CERT_FIND_CERT_ID
структура CERT_ID
Находит сертификат, определенный указанным CERT_ID.
CERT_FIND_CTL_USAGE
структура CTL_USAGE
Ищет сертификат с расширением szOID_ENHANCED_KEY_USAGE или CERT_CTL_PROP_ID, который соответствует члену pszUsageIdentifier структуры CTL_USAGE .
CERT_FIND_ENHKEY_USAGE
структура CERT_ENHKEY_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, совпадение выполняется только в расширении использования ключа.

Сведения об изменениях флагов в критериях поиска см. в разделе Примечания.

CERT_FIND_EXISTING
структура CERT_CONTEXT
Выполняет поиск сертификата, который является точным соответствием заданного контекста сертификата.
CERT_FIND_HASH
структура CRYPT_HASH_BLOB
Выполняет поиск сертификата с хэшом SHA1, который соответствует хэшу в структуре CRYPT_HASH_BLOB .
CERT_FIND_ISSUER_ATTR
структура CERT_RDN
Найдите сертификат с указанными атрибутами издателя, которые соответствуют атрибутам в структуре 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_FIND_ISSUER_NAME
структура CERT_NAME_BLOB
Найдите сертификат с точным совпадением всего имени издателя с именем в CERT_NAME_BLOB. Поиск ограничен сертификатами, которые соответствуют dwMsgAndCertEncodingType.
CERT_FIND_ISSUER_OF
структура CERT_CONTEXT
Ищет сертификат с издателем, который соответствует издателю в CERT_CONTEXT.

Вместо использования функции CertFindCertificateInStore с этим значением используйте функцию CertGetCertificateChain .

CERT_FIND_ISSUER_STR
Строка с завершением NULL (Юникод)
Найдите сертификат, содержащий указанную строку имени издателя. Член издателя сертификата преобразуется в строку имени соответствующего типа, используя соответствующую форму CertNameToStr в формате CERT_SIMPLE_NAME_STR. Затем выполняется сопоставление подстроки без учета регистра в строке. Если это значение задано, поиск ограничивается сертификатами, тип кодирования которых соответствует dwMsgAndCertEncodingType.
CERT_FIND_KEY_IDENTIFIER
структура CRYPT_HASH_BLOB
Выполняет поиск сертификата со свойством CERT_KEY_IDENTIFIER_PROP_ID, соответствующим идентификатору ключа в CRYPT_HASH_BLOB.
CERT_FIND_KEY_SPEC
DWORD, содержащий спецификацию ключа
Выполняет поиск сертификата со свойством CERT_KEY_SPEC_PROP_ID, соответствующим спецификации ключа в pvFindPara.
CERT_FIND_MD5_HASH
структура CRYPT_HASH_BLOB
Выполняет поиск сертификата с хэшом MD5, который соответствует хэшу в CRYPT_HASH_BLOB.
CERT_FIND_PROPERTY
DWORD, содержащий идентификатор свойства
Выполняет поиск сертификата со свойством, соответствующим идентификатору свойства, заданному параметром DWORD в pvFindPara.
CERT_FIND_PUBLIC_KEY
структура CERT_PUBLIC_KEY_INFO
Выполняет поиск сертификата с открытым ключом, который соответствует открытому ключу в структуре CERT_PUBLIC_KEY_INFO .
CERT_FIND_SHA1_HASH
структура CRYPT_HASH_BLOB
Выполняет поиск сертификата с хэшом SHA1, который соответствует хэшу в структуре CRYPT_HASH_BLOB .
CERT_FIND_SIGNATURE_HASH
структура CRYPT_HASH_BLOB
Выполняет поиск сертификата с хэшом подписи, который соответствует хэшу подписи в структуре CRYPT_HASH_BLOB .
CERT_FIND_SUBJECT_ATTR
структура CERT_RDN
Выполняет поиск сертификата с указанными атрибутами субъекта, которые соответствуют атрибутам в структуре 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_FIND_SUBJECT_CERT
структура CERT_INFO
Поиск сертификата с издателем и серийным номером, которые соответствуют издателю и серийному номеру в структуре CERT_INFO .
CERT_FIND_SUBJECT_NAME
структура CERT_NAME_BLOB
Выполняет поиск сертификата с точным соответствием имени всего субъекта с именем в структуре CERT_NAME_BLOB . Поиск ограничен сертификатами, которые соответствуют значению dwMsgAndCertEncodingType.
CERT_FIND_SUBJECT_STR
Строка с завершением NULL (Юникод)
Выполняет поиск сертификата, содержащего указанную строку имени субъекта. Элемент субъекта сертификата преобразуется в строку имени соответствующего типа, используя соответствующую форму CertNameToStr в формате CERT_SIMPLE_NAME_STR. Затем выполняется сопоставление подстроки без учета регистра в строке. Если это значение задано, поиск ограничивается сертификатами, тип кодирования которых соответствует dwMsgAndCertEncodingType.
 
Примечание Существуют альтернативные формы значения dwFindType , которые передают строку в pvFindPara. В одной форме используется строка Юникода, а в другой — строка ASCII . Значения, заканчивающиеся на "_W" или без суффикса, используют Юникод. Значения, заканчивающиеся на "_A", используют строки ASCII .
 

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