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


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

Функция CertSetCertificateContextProperty задает расширенное свойство для указанного контекста сертификата.

Синтаксис

BOOL CertSetCertificateContextProperty(
  [in] PCCERT_CONTEXT pCertContext,
  [in] DWORD          dwPropId,
  [in] DWORD          dwFlags,
  [in] const void     *pvData
);

Параметры

[in] pCertContext

Указатель на структуру CERT_CONTEXT.

[in] dwPropId

Свойство, которое нужно задать. Значение dwPropId определяет тип и содержимое параметра pvData. В настоящее время определенные идентификаторы и связанные pvData типы приведены следующим образом.

заметкиCRYPT_HASH_BLOB и CRYPT_DATA_BLOB описаны в разделе CRYPT_INTEGER_BLOB.
 

CERT_ACCESS_STATE_PROP_ID

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

Возвращает значение DWORD, указывающее, сохраняются ли операции записи в сертификат. Значение DWORD не задано, если сертификат находится в хранилище памяти или в хранилище на основе реестра, которое открывается только для чтения.

CERT_AIA_URL_RETRIEVED_PROP_ID

Этот идентификатор зарезервирован.

CERT_ARCHIVED_KEY_HASH_PROP_ID

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

Это свойство сохраняет зашифрованный ключ хэш- для контекста сертификата.

CERT_ARCHIVED_PROP_ID

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

Указывает, что сертификата пропускается во время перечисления. Сертификат с этим набором свойств по-прежнему найден с явными операциями поиска, например поиск сертификата с определенным хэш- или определенным серийным номером. Это свойство можно задать для пустого BLOB, {0,NULL}.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Этот идентификатор зарезервирован.

CERT_AUTO_ENROLL_PROP_ID

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

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

CERT_AUTO_ENROLL_RETRY_PROP_ID

Этот идентификатор зарезервирован.

CERT_BACKED_UP_PROP_ID

Этот идентификатор зарезервирован.

CERT_CA_DISABLE_CRL_PROP_ID

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

Отключает список отзыва сертификатов (CRL) для сертификатов, используемых центром сертификации (ЦС). Если сертификат ЦС содержит это свойство, он также должен включать свойство CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID.

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

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

Содержит список URL-адресов протокола состояния веб-сертификата (OCSP), используемых для сертификатов, выданных сертификатом ЦС. Содержимое массива — это абстрактные нотации синтаксиса One (ASN.1)), закодированные байтами структуры X509_AUTHORITY_INFO_ACCESS, в которой pszAccessMethod задано значение szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

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

Задает расположение кросс-сертификатов. Это значение применимо только к сертификатам, а не к спискам отзыва сертификатов (CRLS) или списков доверия сертификатов (CTLS). Структура CRYPT_DATA_BLOB содержит структуру абстрактного синтаксиса нотации One (ASN.1), закодированную в кодировке CROSS_CERT_DIST_POINTS_INFO с помощью функции CryptEncodeObject со значением X509_CROSS_CERT_DIST_POINTS для параметра lpszStuctType.

CERT_CTL_USAGE_PROP_ID

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

Структура CRYPT_DATA_BLOB содержит структуру, закодированную в кодировке ASN.1, CTL_USAGE. Эта структура закодирована с помощью функции CryptEncodeObject с набором значений X509_ENHANCED_KEY_USAGE.

CERT_DATE_STAMP_PROP_ID

Тип данных pvData: указатель на структуру FILETIME.

Это свойство задает время добавления сертификата в хранилище.

CERT_DESCRIPTION_PROP_ID

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

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

CERT_EFS_PROP_ID

Этот идентификатор зарезервирован.

CERT_ENHKEY_USAGE_PROP_ID

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

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

CERT_ENROLLMENT_PROP_ID

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

Сведения о регистрации ожидающего запроса, содержащего RequestID, CADNSName, CAName и DisplayName. Формат данных определяется следующим образом.

Байт Содержание
Первые 4 байта Идентификатор ожидающего запроса
Следующие 4 байта Размер CADNSName в символах, включая завершающий символ NULL, за которым следует строка CADNSName с завершающим символом NULL
Следующие 4 байта Размер CAName в символах, в том числе завершающий символ NULL, за которым следует строка CAName с завершающим символом NULL
Следующие 4 байта Размер DisplayName в символах, включая завершающий символ NULL, а затем строку DisplayName с завершающим символом NULL
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

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

Это свойство задает строку, содержащую расширенные сведения об ошибке для контекста сертификата.

CERT_FORTEZZA_DATA_PROP_ID

Этот идентификатор зарезервирован.

CERT_FRIENDLY_NAME_PROP_ID

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

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

CERT_HASH_PROP_ID

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

Это свойство неявно задается вызовом функции CertGetCertificateContextProperty.

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

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

Это свойство вызывает NCryptIsKeyHandle, чтобы определить, является ли это NCRYPT_KEY_HANDLE. Для NCRYPT_KEY_HANDLEзадает CERT_NCRYPT_KEY_HANDLE_PROP_ID; в противном случае он задает CERT_KEY_PROV_HANDLE_PROP_ID.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Задает дескриптор ключа CAPI, связанного с сертификатом.

CERT_IE30_RESERVED_PROP_ID

Этот идентификатор зарезервирован.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

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

Это свойство задает хэш- хэшаMD5 открытого ключа, связанного с закрытым ключом, используемым для подписи этого сертификата.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

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

Структура CRYPT_DATA_BLOB содержит хэш MD5 имени издателя и серийный номер этого сертификата.

CERT_KEY_CONTEXT_PROP_ID

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

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

примечание Дополнительные элементы структуры CERT_KEY_CONTEXT можно добавить для этого свойства. В этом случае значение элемента cbSize будет скорректировано соответствующим образом. Элемент cbSize должен иметь размер структуры CERT_KEY_CONTEXT.
 

CERT_KEY_IDENTIFIER_PROP_ID

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

Обычно это свойство неявно устанавливается вызовом функции CertGetCertificateContextProper ty.

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.

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

CERT_KEY_SPEC_PROP_ID

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

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

CERT_MD5_HASH_PROP_ID

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

Это свойство неявно задается вызовом функции CertGetCertificateContextProperty.

CERT_NCRYPT_KEY_HANDLE_PROP_ID

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

Это свойство задает NCRYPT_KEY_HANDLE для закрытого ключа сертификата и задает dwKeySpec значение CERT_NCRYPT_KEY_SPEC.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Задает дескриптор ключа CNG, связанного с сертификатом.

CERT_NEW_KEY_PROP_ID

Этот идентификатор зарезервирован.

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 в настоящее время используется только с библиотеками ctls.

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

Этот идентификатор зарезервирован.

CERT_OCSP_CACHE_PREFIX_PROP_ID

Этот идентификатор зарезервирован.

CERT_OCSP_RESPONSE_PROP_ID

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

Это свойство задает ответ (OCSP) закодированного протокола состояния сертификата из CERT_SERVER_OCSP_RESPONSE_CONTEXT для этого сертификата.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

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

Это свойство неявно задано путем вызова функции CertGetCertificateContextProperty.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: этот идентификатор не поддерживается.

CERT_PUBKEY_ALG_PARA_PROP_ID

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

Это свойство используется с открытыми ключами, поддерживающими наследование параметров алгоритма. BLOB-объект данных содержит параметры алгоритма PublicKey в кодировке ASN.1. Для DSS это параметры, закодированные с помощью функции CryptEncodeObject. Это используется только в том случае, если определена CMS_PKCS7.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Этот идентификатор зарезервирован.

CERT_PVK_FILE_PROP_ID

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

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

CERT_RENEWAL_PROP_ID

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

Это свойство указывает хэш обновленного сертификата.

CERT_REQUEST_ORIGINATOR_PROP_ID

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

Структура CRYPT_DATA_BLOB содержит строку Юникода, завершающую значение NULL, которая содержит DNS-имя компьютера для происхождения запроса контекста сертификата.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

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

Возвращает указатель на закодированную CERT_POLICIES_INFO структуру, содержащую политики приложений корневого сертификата для контекста. Это свойство можно декодировать с помощью функции CryptDecodeObject с параметром lpszStructType, равным X509_CERT_POLICIES, и параметру dwCertEncodingType задано сочетание X509_ASN_ENCODING битовой ORPKCS_7_ASN_ENCODING.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Этот идентификатор зарезервирован.

CERT_SIGN_HASH_CNG_ALG_PROP_ID

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

Это свойство неявно задано путем вызова функции CertGetCertificateContextProperty.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: этот идентификатор не поддерживается.

CERT_SHA1_HASH_PROP_ID

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

Это свойство неявно задается вызовом функции CertGetCertificateContextProperty.

CERT_SIGNATURE_HASH_PROP_ID

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

Если хэш подписи не существует, он вычисляется с помощью функции CryptHashToBeSigned. pvData указывает на существующий или вычисляемый хэш. Обычно длина хэша составляет 20 байтов для SHA и 16 для MD5.

CERT_SMART_CARD_DATA_PROP_ID

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

Это свойство задает свойство данных смарт-карты контекста сертификата смарт-карты.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

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

Это свойство задает свойство сведений контекста корневого сертификата смарт-карты.

CERT_SOURCE_LOCATION_PROP_ID

Этот идентификатор зарезервирован.

CERT_SOURCE_URL_PROP_ID

Этот идентификатор зарезервирован.

CERT_SUBJECT_DISABLE_CRL_PROP_ID

Этот идентификатор зарезервирован.

CERT_SUBJECT_INFO_ACCESS_PROP_ID

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

Это свойство задает расширение доступа к информации субъекта контекста сертификата в виде закодированной CERT_SUBJECT_INFO_ACCESS структуры.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

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

Возвращает хэш MD5 закодированного имени субъекта контекста сертификата.

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Этот идентификатор зарезервирован.

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

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

Это свойство неявно задано путем вызова функции CertGetCertificateContextProperty.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: этот идентификатор не поддерживается.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

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

Это свойство задает хэш MD5 открытого ключа этого сертификата.

pvData — это указатель на структуру CRYPT_DATA_BLOB.

Пользователь может определить дополнительные типы dwPropId , используя значения DWORD от CERT_FIRST_USER_PROP_ID до CERT_LAST_USER_PROP_ID. Для всех пользовательских типов dwPropIdpvData указывает на закодированную структуру CRYPT_DATA_BLOB.

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAG можно задать для свойств CERT_KEY_PROV_HANDLE_PROP_ID или dwProp 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
Недопустимое свойство. Указанный идентификатор был больше 0x0000FFFF или для свойства CERT_KEY_CONTEXT_PROP_ID элемент cbSize, который недействителен в структуре CERT_KEY_CONTEXT.

Замечания

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

Код может использовать макрос для оценки класса хэша для контекста сертификата. Заголовок Wincrypt.h определяет следующие макросы для этой цели. Эти макросы используются внутренне функцией CertSetCertificateContextProperty.

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) Каждый макрос принимает значение dwPropId (X) в качестве входных данных и вычисляет логическое значение. В следующей таблице показаны значения dwPropId, которые оцениваются TRUE для каждого макроса.

Макрос Значение TRUE, если dwPropId
IS_CERT_HASH_PROP_ID(dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_IDили
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID или
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
IS_CHAIN_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_IDили
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

Макрос IS_STRONG_SIGN_PROP_ID (x) оценивается как TRUE, если свойства CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_IDили CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID заданы в параметре dwPropId.

Примеры

Пример использования этой функции см. в разделе Пример программы C: получение и настройка свойств сертификата.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка wincrypt.h
библиотеки Crypt32.lib
DLL Crypt32.dll

См. также

CERT_ALT_NAME_INFO

CERT_CONTEXT

CERT_ENHKEY_USAGE

CERT_KEY_CONTEXT

CROSS_CERT_DIST_POINTS_INFO

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCertificateContextProperty

CertSetCRLContextProperty

CryptEncodeObject

CryptHashToBeSigned

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