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


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

Функция CryptGetTimeValidObject извлекает список отзыва сертификатов, ответ OCSP или объект CTL, действительный в пределах заданного контекста и времени.

Синтаксис

BOOL CryptGetTimeValidObject(
  [in]                LPCSTR                                  pszTimeValidOid,
  [in]                LPVOID                                  pvPara,
  [in]                PCCERT_CONTEXT                          pIssuer,
  [in, optional]      LPFILETIME                              pftValidFor,
  [in]                DWORD                                   dwFlags,
  [in]                DWORD                                   dwTimeout,
  [out, optional]     LPVOID                                  *ppvObject,
  [in, optional]      PCRYPT_CREDENTIALS                      pCredentials,
  [in, out, optional] PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO pExtraInfo
);

Параметры

[in] pszTimeValidOid

Указатель на идентификатор объекта (OID), который идентифицирует запрашиваемый объект. Если значение HIWORD параметра pszTimeValidOid равно нулю, loWORD задает целочисленный идентификатор для типа указанной структуры.

Этот параметр может принимать одно из указанных ниже значений. Сведения о том, как эти значения влияют на параметр pvPara, см. в заголовке "Для параметра pvPara" в столбце Значение.

Значение Значение
TIME_VALID_OID_GET_CTL
((LPCSTR)1)
Предоставляет список доверия сертификатов (CTL) на основе URL-адреса, полученного из свойства NextUpdateLocation или расширения текущего контекста CTL.

Для параметра pvPara: указатель на PCCTL_CONTEXT , представляющий текущий список доверия сертификатов.

TIME_VALID_OID_GET_CRL
Это значение зарезервировано для использования в будущем.
TIME_VALID_OID_GET_CRL_FROM_CERT
((LPCSTR)3)
Предоставляет список отзыва сертификатов на основе сведений, полученных из расширения точек распространения CRL текущего контекста сертификата.

Для параметра pvPara: указатель на PCCERT_CONTEXT , представляющий сертификат субъекта.

TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT
((LPCSTR)4)
Предоставляет разностный список отзыва сертификатов на основе информации, полученной из самого свежего расширения списка отзыва сертификатов текущего контекста сертификата.

Для параметра pvPara: указатель на PCCERT_CONTEXT , представляющий сертификат субъекта.

TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL
((LPCSTR)5)
Предоставляет разностный список отзыва сертификатов на основе информации, полученной из самого свежего расширения списка отзыва сертификатов текущего контекста CRL.

Для параметра pvPara: указатель на PCCERT_CRL_CONTEXT_PAIR , представляющий сертификат субъекта и его базовый список отзыва сертификатов.

[in] pvPara

Структура, определяемая значением pszTimeValidOid. Дополнительные сведения см. в описании параметра pszTimeValidOid .

[in] pIssuer

Указатель на CERT_CONTEXT , содержащий сертификат издателя.

[in, optional] pftValidFor

Указатель на необязательную версию структуры FILETIME текущего системного времени или времени актуальности из текущего контекста.

[in] dwFlags

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

В следующей таблице перечислены возможные значения параметра dwFlags .

Значение Значение
CRYPT_ACCUMULATIVE_TIMEOUT
0x00000800
Используйте накопительный параметр реестра времени ожидания клиентского компьютера для извлечения URL-адреса отзыва.
CRYPT_CACHE_ONLY_RETRIEVAL
0x00000002
Извлеките закодированные биты только из кэша URL-адресов клиента. Не используйте провод для получения URL-адреса.
CRYPT_CHECK_FRESHNESS_TIME_VALIDITY
0x00000400
Убедитесь, что свойство ThisUpdate или расширение текущего контекста больше или равно параметру ftValidFor .
CRYPT_DONT_CHECK_TIME_VALIDITY
0x00000200
Не выполняйте проверка допустимости времени. Используйте его для получения более нового базового списка отзыва сертификатов по сети или для обхода срока действия проверка во время получения кэша. Если этот флаг установлен, pftValidFor может иметь значение NULL.
CRYPT_DONT_VERIFY_SIGNATURE
0x00000100
Не выполняйте проверку подписи. Используйте этот параметр, когда проверка полученного объекта будет выполняться вне этой функции или для принудительной замены полученной записи кэша новой записью кэша для объекта.
CRYPT_KEEP_TIME_VALID
0x00000080
Это значение зарезервировано для использования в будущем.
CRYPT_OCSP_ONLY_RETRIEVAL
0x01000000
Извлекает допустимый объект времени из службы ответчика OCSP только на основе URL-адресов доступа к данным центра в текущем контексте. Функция CertVerifyRevocation устанавливает этот флаг при вызове с параметром dwFlags , равным CERT_VERIFY_REV_SERVER_OCSP_FLAG.
CRYPT_WIRE_ONLY_RETRIEVAL
0x00000004
Извлекает закодированные биты только из провода. Не использует кэш URL-адресов.

[in] dwTimeout

Значение в миллисекундах, указывающее, когда следует завершить попытку получения URL-адреса, которая не вернула результат.

[out, optional] ppvObject

Указатель на адрес возвращаемого объекта. Возвращаемый тип может быть одним из поддерживаемых типов, показанных в параметре pszObjectOid функции CryptRetrieveObjectByUrl .

[in, optional] pCredentials

Указатель на необязательную структуру CRYPT_CREDENTIALS , используемую для доступа к URL-адресу. Единственный поддерживаемый тип учетных данных — это имя пользователя и пароль.

[in, out, optional] pExtraInfo

Указатель на необязательную структуру CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO , содержащую дополнительные сведения о записи кэша для объекта.

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

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

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

Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
CRYPT_E_NOT_FOUND
Вызывающий объект, указанный TIME_VALID_OID_GET_CRL для параметра pszTimeValidOid . Этот OID не поддерживается.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
Вызывающий объект устанавливает флаг CRYPT_OCSP_ONLY_RETRIEVAL, а контекст содержит URL-адрес, отличный от OCSP.
E_INVALIDARG
Функции не удалось получить список отзыва сертификатов из контекста сертификата или CTL, а также не удалось скопировать URL-адреса из записи кэша.
E_OUTOFMEMORY
Функции не удалось выделить память для внутренней операции массива.
ERROR_NOT_CONNECTED
Вызывающий объект не установил флаг CRYPT_CACHE_ONLY_RETRIEVAL и не подключен к Интернету.

Комментарии

Библиотека динамической компоновки Cryptnet реализует кэш допустимых объектов времени (TVO), который используется для поддержки функции CryptGetTimeValidObject . Кэш используется глобальным агентом TVO процесса, где каждая запись кэша состоит из следующих сведений.

  • Идентификатор источника
  • Контекстный идентификатор
  • Контекст
  • URL-адрес получения
  • Срок действия
  • Сведения о времени автономного URL-адреса
Агент TVO поддерживает получение объектов TVO по запросу или путем автоматического обновления.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Cryptnet.lib
DLL Cryptnet.dll