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


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

Функция CertGetCRLContextProperty получает расширенное свойство для указанного контекста списка отзыва сертификатов (CRL).

Синтаксис

BOOL CertGetCRLContextProperty(
  [in]      PCCRL_CONTEXT pCrlContext,
  [in]      DWORD         dwPropId,
  [out]     void          *pvData,
  [in, out] DWORD         *pcbData
);

Параметры

[in] pCrlContext

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

[in] dwPropId

Определяет извлекаемое свойство. В следующей таблице перечислены определенные в настоящее время идентификаторы и тип данных, возвращаемый в pvData .

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

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

CERT_ARCHIVED_PROP_ID
Тип данных для pvData: NULL

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

CERT_AUTO_ENROLL_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

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

CERT_CTL_USAGE_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

Возвращает массив байтов, содержащий абстрактную синтаксическую нотацию 1 (ASN.1), закодированную CTL_USAGE структуре.

CERT_DESCRIPTION_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

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

CERT_ENHKEY_USAGE_PROP_ID
Тип данных для pvData:

Возвращает массив байтов, содержащий структуру ASN.1 , закодированную CERT_ENHKEY_USAGE .

CERT_FRIENDLY_NAME_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

Возвращает символьную строку Юникода, завершающуюся null, которая содержит отображаемое имя списка отзыва сертификатов.

CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
Тип данных для pvData: указатель на строку Юникода, завершаемую null.

Возвращает строку, содержащую набор алгоритма открытого ключа L"<PUBKEY>/<BITLENGTH>" и пар битовой длины. В качестве разделителя используется точка с запятой L";".

Значение <PUBKEY> определяет алгоритм открытого ключа CNG. Поддерживаются следующие алгоритмы:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Пара <PUBKEY>/<BITLENGTH> возвращается для каждого сертификата в цепочке издателей CRL, за исключением конечной части. Это свойство задается только в том случае, если ответ OCSP с независимой цепочкой подписыватель преобразуется в список отзыва сертификатов.
Примечание Это свойство невозможно получить для делегированного сертификата подписателя OCSP. Делегированный сертификат подписывателя подписывается тем же ключом, который используется для подписывания сертификата субъекта, и проверяется там.
 
Ниже представлен пример такого кода:

: L"RSA/2048; RSA/4096"

CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID
Тип данных для pvData: указатель на строку Юникода, завершаемую null.

Возвращает строку, содержащую набор пар алгоритмов L"<SIGNATURE>/<HASH>". Точка с запятой L";" используется в качестве разделителя между парами.

Это свойство задается только в том случае, если ответ OCSP преобразуется в список отзыва сертификатов. Для делегированного сертификата подписывателя OCSP возвращается только пара алгоритмов для сертификата подписывателя. Для независимой цепочки сертификатов подписывающих OCSP для каждого сертификата в цепочке, за исключением корневого сертификата, возвращается пара алгоритмов.

Значение <SIGNATURE> определяет алгоритм открытого ключа CNG. Поддерживаются следующие алгоритмы:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Значение <HASH> определяет хэш-алгоритм CNG. Поддерживаются следующие алгоритмы:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
Пример приведен ниже.
  • L"RSA/SHA256; RSA/SHA256"
CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Тип данных для pvData: указатель на значение DWORD .

Возвращает длину (в битах) открытого ключа в сертификате издателя списка отзыва сертификатов. Это свойство также применимо к ответу OCSP, который был преобразован в список отзыва сертификатов.

Windows 8 и Windows Server 2012: начинается поддержка этого свойства.

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

Возвращает структуру CERT_KEY_CONTEXT .

CERT_KEY_IDENTIFIER_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

Если оно отсутствует, выполняет поиск расширения szOID_SUBJECT_KEY_IDENTIFIER. Если это не удается, хэш SHA1 выполняется для элемента SubjectPublicKeyInfo сертификата для создания значений идентификатора.

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

Возвращает дескриптор поставщика, полученный из CERT_KEY_CONTEXT_PROP_ID.

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

Возвращает указатель на CRYPT_KEY_PROV_INFO.

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

Возвращает значение DWORD , указывающее закрытый ключ, полученный из свойства CERT_KEY_CONTEXT_PROP_ID, если он существует. В противном случае, если CERT_KEY_PROV_INFO_PROP_ID существует, он является источником dwKeySpec.

CERT_MD5_HASH_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

Возвращает хэш MD5. Если хэш не существует, он вычисляется с помощью CryptHashCertificate.

CERT_NEXT_UPDATE_LOCATION_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

Возвращает структуру в кодировке ASN.1 CERT_ALT_NAME_INFO .

CERT_NEXT_UPDATE_LOCATION_PROP_ID в настоящее время используется только с CCL.

CERT_PVK_FILE_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

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

CERT_SHA1_HASH_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

Возвращает хэш SHA1. Если хэш не существует, он вычисляется с помощью CryptHashCertificate.

CERT_SIGN_HASH_CNG_ALG_PROP_ID
Тип данных pvData: указатель на строку Юникода, завершаемую null.

Возвращает строку L"<SIGNATURE>/<HASH>", представляющую подпись сертификата. Значение <SIGNATURE> определяет алгоритм открытого ключа CNG. Поддерживаются следующие алгоритмы:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Значение <HASH> определяет хэш-алгоритм CNG. Поддерживаются следующие алгоритмы:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
Ниже приведено несколько типичных примеров.
  • L"RSA/SHA1"
  • L"RSA/SHA256"
  • L"ECDSA/SHA256"
Это свойство также применимо к ответу OCSP, который был преобразован в список отзыва сертификатов.

Windows 8 и Windows Server 2012: начинается поддержка этого свойства.

CERT_SIGNATURE_HASH_PROP_ID
Тип данных для pvData: указатель на массив BYTE .

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

 

Для многих идентификаторов свойств pvData указывает на массив байтов, а не на CRYPT_DATA_BLOB , как указывает параметр pvData в CertSetCRLContextProperty.

Дополнительные сведения о каждом идентификаторе свойства см. в документации по параметру dwPropId в разделе CertSetCertificateContextProperty.

[out] pvData

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

Этот параметр может иметь значение NULL , чтобы задать размер сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbData

Указатель на значение DWORD , указывающее размер (в байтах) буфера, на который указывает параметр pvData . Когда функция возвращает значение DWORD , содержит количество байтов, которые будут храниться в буфере.

Примечание При обработке данных, возвращаемых в буфере, приложения должны использовать фактический размер возвращаемых данных. Фактический размер может быть немного меньше размера буфера, указанного во входных данных. (На входных данных размеры буфера обычно указываются достаточно большими, чтобы убедиться, что максимально возможные выходные данные помещаются в буфер.) В выходных данных переменная, на которую указывает этот параметр, обновляется с учетом фактического размера данных, скопированных в буфер.
 

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

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

Если функция завершается сбоем, возвращается значение FALSE.

Обратите внимание, что ошибки из вызываемой функции CryptHashCertificate можно распространить на эту функцию. Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
CRYPT_E_NOT_FOUND
Список отзыва сертификатов не имеет указанного свойства.
ERROR_MORE_DATA
Если буфер, заданный параметром pvData , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbData.

Требования

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

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

CertEnumCRLContextProperties

CertGetCertificateContextProperty

CryptHashCertificate

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