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


Функция 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 следующим образом.

Значение Значение
CERT_ARCHIVED_PROP_ID
Тип данных pvData: NULL

Указывает, что сертификат пропускается во время перечисления. Сертификат с этим набором свойств по-прежнему обнаруживается с помощью явных операций поиска, таких как поиск сертификата с определенным хэшом или определенным серийным номером.

CERT_AUTO_ENROLL_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Свойство устанавливается после регистрации сертификата с помощью автоматической регистрации. Структура CRYPT_DATA_BLOB , на которую указывает pvData , включает в себя завершающееся null имя в Юникоде типа сертификата, для которого сертификаты были автоматически зарегистрированы. Все последующие вызовы автоматической регистрации сертификата проверяют наличие этого свойства, чтобы определить, был ли сертификат зарегистрирован.

CERT_CTL_USAGE_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

pvData указывает на структуру CRYPT_DATA_BLOB , содержащую абстрактную синтаксическую нотацию 1 (ASN.1), CTL_USAGE структуру. Эта структура была закодирована с помощью CryptEncodeObject с X509_ENHANCED_KEY_USAGE заданным значением.

CERT_DESCRIPTION_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Свойство задано и отображается в пользовательском интерфейсе сертификата. Это свойство позволяет пользователю описывать использование сертификата.

CERT_ENHKEY_USAGE_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Структура CRYPT_DATA_BLOB , содержащая структуру CERT_ENHKEY_USAGE в кодировке ASN.1. Эта структура была закодирована с помощью CryptEncodeObject с X509_ENHANCED_KEY_USAGE заданным значением.

CERT_FRIENDLY_NAME_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Структура CRYPT_DATA_BLOB указывает отображаемое имя сертификата.

CERT_HASH_PROP_ID
Тип данных pvData: указатель на CRYPT_HASH_BLOB

Это свойство неявно задается вызовом CertGetCertificateContextProperty.

CERT_KEY_CONTEXT_PROP_ID
Тип данных pvData: указатель на CERT_KEY_CONTEXT

Структура CERT_KEY_CONTEXT содержит как значение HCRYPTPROV , так и спецификацию ключа для закрытого ключа. Дополнительные сведения о параметрах элемента hCryptProv и dwFlags см. в разделе CERT_KEY_PROV_HANDLE_PROP_ID ниже. Обратите внимание, что для этого свойства можно добавить дополнительные CERT_KEY_CONTEXT элементы структуры. Если это так, значение члена cbSize будет скорректировано соответствующим образом. Члену cbSize необходимо задать размер структуры CERT_KEY_CONTEXT

CERT_KEY_IDENTIFIER_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Это свойство обычно неявно задается вызовом CertGetCertificateContextProperty.

CERT_KEY_PROV_HANDLE_PROP_ID
Тип данных pvData: указатель на HCRYPTPROV

Передается дескриптор HCRYPTPROV для закрытого ключа сертификата. Элемент hCryptProvструктуры CERT_KEY_CONTEXT обновляется, если он существует. Если он не существует, он создается с помощью dwKeySpec , инициализированной CERT_KEY_PROV_INFO_PROP_ID. Если CERT_STORE_NO_CRYPT_RELEASE_FLAG не задано, значение hCryptProv неявно освобождается, если свойству присвоено значение NULL или при окончательном освобождении структуры CERT_CONTEXT .

CERT_KEY_PROV_INFO_PROP_ID
Тип данных pvData: указатель на CRYPT_KEY_PROV_INFO

Структура CRYPT_KEY_PROV_INFO указывает закрытый ключ сертификата.

CERT_KEY_SPEC_PROP_ID
Тип данных pvData: указатель на DWORD

Значение DWORD указывает закрытый ключ. Член dwKeySpecструктуры CERT_KEY_CONTEXT обновляется, если он существует. В противном случае он создается с параметром hCryptProv , равным нулю.

CERT_MD5_HASH_PROP_ID
Тип данных pvData: указатель на CRYPT_HASH_BLOB

Это свойство неявно задается вызовом CertGetCertificateContextProperty.

CERT_NEXT_UPDATE_LOCATION_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Структура CRYPT_DATA_BLOB содержит структуру в кодировке ASN.1 CERT_ALT_NAME_INFO , закодированную с помощью CryptEncodeObject с набором X509_ALTERNATE_NAME значений. CERT_NEXT_UPDATE_LOCATION_PROP_ID в настоящее время используется только с CCL.

CERT_PVK_FILE_PROP_ID
Тип данных pvData: указатель на CRYPT_DATA_BLOB

Структура CRYPT_DATA_BLOB указывает имя файла, содержащего закрытый ключ, связанный с открытым ключом сертификата. Внутри структуры CRYPT_DATA_BLOB элемент pbData является указателем на строку Юникода, завершаемую null, а член cbData указывает длину строки.

CERT_SHA1_HASH_PROP_ID
Тип данных pvData: указатель на CRYPT_HASH_BLOB

Это свойство неявно задается вызовом CertGetCertificateContextProperty.

CERT_SIGNATURE_HASH_PROP_ID
CRYPT_HASH_BLOB
Тип данных 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.

Примечание Для любого dwPropId при установке параметра pvData значения NULL свойство удаляется.
 

Возвращаемое значение

Если функция выполняется успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведен один из возможных кодов ошибки.

Код возврата Описание
E_INVALIDARG
Недопустимый идентификатор свойства. Дополнительные сведения см. в разделе CertSetCertificateContextProperty.

Комментарии

Если свойство уже существует, его старое значение заменяется.

Примеры

См . пример программы C: получение и настройка свойств сертификата.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CertGetCTLContextProperty

CertSetCertificateContextProperty

CryptEncodeObject

Расширенные функции свойств