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


структура CERT_CHAIN_PARA (wincrypt.h)

Структура CERT_CHAIN_PARA определяет критерии поиска и сопоставления, которые будут использоваться при построении цепочки сертификатов.

Синтаксис

typedef struct _CERT_CHAIN_PARA {
  DWORD                   cbSize;
  CERT_USAGE_MATCH        RequestedUsage;
  CERT_USAGE_MATCH        RequestedIssuancePolicy;
  DWORD                   dwUrlRetrievalTimeout;
  BOOL                    fCheckRevocationFreshnessTime;
  DWORD                   dwRevocationFreshnessTime;
  LPFILETIME              pftCacheResync;
  PCCERT_STRONG_SIGN_PARA pStrongSignPara;
  DWORD                   dwStrongSignFlags;
} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;

Члены

cbSize

Размер данной структуры (в байтах).

RequestedUsage

Структура, указывающая тип сопоставления, необходимый для поиска сертификатов издателя для построения цепочки сертификатов. Структура, на которую указывает, следует ли использовать логику AND или ИЛИ в процессе сопоставления. Структура также включает массив OID для сопоставления.

RequestedIssuancePolicy

Необязательная структура, указывающая тип сопоставления ограничений политики выдачи, которые применяются при построении цепочки сертификатов. Структура, на которую указывает, следует ли использовать логику AND или ИЛИ в процессе сопоставления. Структура также включает массив OID для сопоставления.

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

dwUrlRetrievalTimeout

Необязательное время (в миллисекундах) до истечения времени ожидания проверки отзыва. Этот член является необязательным.

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

fCheckRevocationFreshnessTime

Необязательный член. Если этот флаг имеет значение TRUE, предпринимается попытка получить новый список отзыва сертификатов, если это обновление больше или равно текущему системное время за вычетом значения dwRevocationFreshnessTime . Если этот флаг не установлен, используется время следующего обновления списка отзыва сертификатов.

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

dwRevocationFreshnessTime

Текущее время в секундах за вычетом времени обновления списка отзыва сертификатов для всех элементов.

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

pftCacheResync

Необязательный член. Если задано значение, отличное от NULL , сведения, кэшированные до указанного времени, считаются недопустимыми и выполняется повторная синхронизация кэша.

Windows Vista: Поддержка этого члена начинается.

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

pStrongSignPara

Необязательный элемент. Укажите указатель на структуру CERT_STRONG_SIGN_PARA , чтобы включить проверку строгой сигнатуры.

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

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

dwStrongSignFlags

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

Значение Значение
CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG
0x00000001
Если цепочка строго подписана, открытый ключ в конечном сертификате проверяется, соответствует ли он требованиям к минимальной длине открытого ключа для строгой подписи. Вы можете указать CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG для отключения проверки по умолчанию.
 

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

Примечание Этот член можно использовать, только если CERT_CHAIN_PARA_HAS_EXTRA_FIELDS определяется с помощью директивы #define перед включением Wincrypt.h. Если это значение определено, приложение должно обнулить все неиспользуемые поля.
 

Комментарии

При проверке наличия надежных подписей применяются следующие замечания.

  • При использовании функции CertGetCertificateChain или CertSelectCertificateChains задайте для элемента pStrongSignPara проверка для надежных подписей.
  • Если в цепочке найден сертификат без строгой сигнатуры, ошибки CERT_TRUST_HAS_WEAK_SIGNATURE и CERT_TRUST_IS_NOT_SIGNATURE_VALID задаются в поле dwErrorStatus структуры CERT_TRUST_STATUS . Параметр ppChainContext функции CertGetCertificateChain и параметр pprgpSelection функции CertSelectCertificateChains указывают на CERT_CHAIN_CONTEXT структуру, которая, в свою очередь, указывает на структуру CERT_TRUST_STATUS .
  • Если цепочка строго подписана, открытый ключ в конечном сертификате проверяется, соответствует ли он требованиям к минимальной длине открытого ключа для строгой подписи. Если условие не выполнено, ошибки CERT_TRUST_HAS_WEAK_SIGNATURE и CERT_TRUST_IS_NOT_SIGNATURE_VALID задаются в поле dwErrorStatus структуры CERT_TRUST_STATUS . Задайте значение CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG в элементе dwStrongSignFlags, чтобы отключить эту проверка.
  • Если флаги CERT_STRONG_SIGN_ENABLE_CRL_CHECK или CERT_STRONG_SIGN_ENABLE_OCSP_CHECK заданы в структуре CERT_STRONG_SIGN_SERIALIZED_INFO , на которую ссылается структура CERT_STRONG_SIGN_PARA , на которую указывает член pStrongSignPara , а ответ CRL или OCSP найден без строгой сигнатуры, ответ CRL или OCSP будет рассматриваться как автономный. То есть ошибки CERT_TRUST_IS_OFFLINE_REVOCATION и CERT_TRUST_REVOCATION_STATUS_UNKNOWN задаются в поле dwErrorStatus структуры CERT_TRUST_STATUS . Кроме того, член dwRevocationResult структуры CERT_REVOCATION_INFO имеет значение NTE_BAD_ALGID.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть wincrypt.h

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

CERT_USAGE_MATCH