Функция CertSetCTLContextProperty (wincrypt.h)
Функция CertSetCTLContextProperty задает расширенное свойство для указанного контекста списка доверия сертификатов (CTL).
Синтаксис
BOOL CertSetCTLContextProperty(
[in] PCCTL_CONTEXT pCtlContext,
[in] DWORD dwPropId,
[in] DWORD dwFlags,
[in] const void *pvData
);
Параметры
[in] pCtlContext
Указатель на структуру CTL_CONTEXT .
[in] dwPropId
Определяет свойство, которое необходимо задать. Значение dwPropId определяет тип и содержимое параметра pvData . В настоящее время определены идентификаторы и связанные с ними типы pvData следующим образом.
Значение | Значение |
---|---|
|
Тип данных pvData: NULL
Указывает, что сертификат пропускается во время перечисления. Сертификат с этим набором свойств по-прежнему обнаруживается с помощью явных операций поиска, таких как поиск сертификата с определенным хэшом или определенным серийным номером. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Свойство устанавливается после регистрации сертификата с помощью автоматической регистрации. Структура CRYPT_DATA_BLOB , на которую указывает pvData , включает в себя завершающееся null имя в Юникоде типа сертификата, для которого сертификаты были автоматически зарегистрированы. Все последующие вызовы автоматической регистрации сертификата проверяют наличие этого свойства, чтобы определить, был ли сертификат зарегистрирован. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
pvData указывает на структуру CRYPT_DATA_BLOB , содержащую абстрактную синтаксическую нотацию 1 (ASN.1), CTL_USAGE структуру. Эта структура была закодирована с помощью CryptEncodeObject с X509_ENHANCED_KEY_USAGE заданным значением. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Свойство задано и отображается в пользовательском интерфейсе сертификата. Это свойство позволяет пользователю описывать использование сертификата. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Структура CRYPT_DATA_BLOB , содержащая структуру CERT_ENHKEY_USAGE в кодировке ASN.1. Эта структура была закодирована с помощью CryptEncodeObject с X509_ENHANCED_KEY_USAGE заданным значением. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Структура CRYPT_DATA_BLOB указывает отображаемое имя сертификата. |
|
Тип данных pvData: указатель на CRYPT_HASH_BLOB
Это свойство неявно задается вызовом CertGetCertificateContextProperty. |
|
Тип данных pvData: указатель на CERT_KEY_CONTEXT
Структура CERT_KEY_CONTEXT содержит как значение HCRYPTPROV , так и спецификацию ключа для закрытого ключа. Дополнительные сведения о параметрах элемента hCryptProv и dwFlags см. в разделе CERT_KEY_PROV_HANDLE_PROP_ID ниже. Обратите внимание, что для этого свойства можно добавить дополнительные CERT_KEY_CONTEXT элементы структуры. Если это так, значение члена cbSize будет скорректировано соответствующим образом. Члену cbSize необходимо задать размер структуры CERT_KEY_CONTEXT |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Это свойство обычно неявно задается вызовом CertGetCertificateContextProperty. |
|
Тип данных pvData: указатель на HCRYPTPROV
Передается дескриптор HCRYPTPROV для закрытого ключа сертификата. Элемент hCryptProvструктуры CERT_KEY_CONTEXT обновляется, если он существует. Если он не существует, он создается с помощью dwKeySpec , инициализированной CERT_KEY_PROV_INFO_PROP_ID. Если CERT_STORE_NO_CRYPT_RELEASE_FLAG не задано, значение hCryptProv неявно освобождается, если свойству присвоено значение NULL или при окончательном освобождении структуры CERT_CONTEXT . |
|
Тип данных pvData: указатель на CRYPT_KEY_PROV_INFO
Структура CRYPT_KEY_PROV_INFO указывает закрытый ключ сертификата. |
|
Тип данных pvData: указатель на DWORD
Значение DWORD указывает закрытый ключ. Член dwKeySpecструктуры CERT_KEY_CONTEXT обновляется, если он существует. В противном случае он создается с параметром hCryptProv , равным нулю. |
|
Тип данных pvData: указатель на CRYPT_HASH_BLOB
Это свойство неявно задается вызовом CertGetCertificateContextProperty. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Структура CRYPT_DATA_BLOB содержит структуру в кодировке ASN.1 CERT_ALT_NAME_INFO , закодированную с помощью CryptEncodeObject с набором X509_ALTERNATE_NAME значений. CERT_NEXT_UPDATE_LOCATION_PROP_ID в настоящее время используется только с CCL. |
|
Тип данных pvData: указатель на CRYPT_DATA_BLOB
Структура CRYPT_DATA_BLOB указывает имя файла, содержащего закрытый ключ, связанный с открытым ключом сертификата. Внутри структуры CRYPT_DATA_BLOB элемент pbData является указателем на строку Юникода, завершаемую null, а член cbData указывает длину строки. |
|
Тип данных pvData: указатель на CRYPT_HASH_BLOB
Это свойство неявно задается вызовом CertGetCertificateContextProperty. |
|
Тип данных pvData: указатель на CRYPT_HASH_BLOB
Если хэш подписи не существует, он вычисляется с помощью CryptHashToBeSigned. pvData указывает на существующий или вычисляемый хэш. Обычно длина хэша составляет 20 байт для SHA и 16 для MD5. |
Как правило, задается только свойство CERT_NEXT_UPDATE_LOCATION_PROP_ID.
Дополнительные типы dwPropId могут быть определены пользователем с помощью значений DWORD из CERT_FIRST_USER_PROP_ID в CERT_LAST_USER_PROP_ID. Для всех определяемых пользователем типов dwPropIdpvData указывает на закодированную структуру CRYPT_DATA_BLOB .
[in] dwFlags
CERT_STORE_NO_CRYPT_RELEASE_FLAG можно задать для свойств dwPropId CERT_KEY_PROV_HANDLE_PROP_ID или CERT_KEY_CONTEXT_PROP_ID.
Если задано значение CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG, все ошибки записи поставщика игнорируются, а свойства кэшированного контекста всегда задаются.
Если задано CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG, все наборы свойств не сохраняются.
[in] pvData
Указатель на тип данных, который определяется значением, переданным в dwPropId.
Возвращаемое значение
Если функция выполняется успешно, возвращается значение TRUE.
Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведен один из возможных кодов ошибки.
Код возврата | Описание |
---|---|
|
Недопустимый идентификатор свойства. Дополнительные сведения см. в разделе CertSetCertificateContextProperty. |
Комментарии
Если свойство уже существует, его старое значение заменяется.
Примеры
См . пример программы C: получение и настройка свойств сертификата.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |