Función CryptGetTimeValidObject (wincrypt.h)

La función CryptGetTimeValidObject recupera una CRL, una respuesta OCSP o un objeto CTL válido dentro de un contexto y hora determinados.

Sintaxis

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
);

Parámetros

[in] pszTimeValidOid

Puntero a un identificador de objeto (OID) que identifica el objeto que se solicita. Si el parámetro HIWORD del parámetro pszTimeValidOid es cero, loWORD especifica el identificador entero para el tipo de la estructura especificada.

Este parámetro puede ser uno de los valores siguientes. Para obtener información sobre cómo afectan estos valores al parámetro pvPara, vea el encabezado "Para el parámetro pvPara" en la columna Significado.

Valor Significado
TIME_VALID_OID_GET_CTL
((LPCSTR)1)
Proporciona una lista de confianza de certificados (CTL) basada en una dirección URL obtenida de la propiedad NextUpdateLocation o la extensión del contexto CTL actual.

Para el parámetro pvPara: puntero a un PCCTL_CONTEXT que representa la lista de confianza del certificado actual.

TIME_VALID_OID_GET_CRL
Este valor está reservado para uso futuro.
TIME_VALID_OID_GET_CRL_FROM_CERT
((LPCSTR)3)
Proporciona una CRL basada en la información obtenida de la extensión de puntos de distribución crL del contexto de certificado actual.

Para el parámetro pvPara: puntero a un PCCERT_CONTEXT que representa el certificado del firmante.

TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT
((LPCSTR)4)
Proporciona una CRL diferencial basada en la información obtenida de la extensión CRL más reciente del contexto de certificado actual.

Para el parámetro pvPara: puntero a un PCCERT_CONTEXT que representa el certificado del firmante.

TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL
((LPCSTR)5)
Proporciona una CRL diferencial basada en la información obtenida de la extensión CRL más reciente del contexto crL actual.

Para el parámetro pvPara: puntero a un PCCERT_CRL_CONTEXT_PAIR que representa el certificado del firmante y su CRL base.

[in] pvPara

Estructura determinada por el valor de pszTimeValidOid. Para obtener más información, consulte la descripción del parámetro pszTimeValidOid .

[in] pIssuer

Puntero a un CERT_CONTEXT que contiene el certificado del emisor.

[in, optional] pftValidFor

Puntero a una versión opcional de la estructura FILETIME de la hora actual del sistema o una hora de actualización del contexto actual.

[in] dwFlags

Valor que determina varios factores de recuperación, como las comprobaciones de tiempo de espera, origen y validez.

En la tabla siguiente se enumeran los valores posibles para el parámetro dwFlags .

Valor Significado
CRYPT_ACCUMULATIVE_TIMEOUT
0x00000800
Use la configuración acumulativa del registro de tiempo de espera del equipo cliente para las recuperaciones de direcciones URL de revocación.
CRYPT_CACHE_ONLY_RETRIEVAL
0x00000002
Recupere los bits codificados solo de la memoria caché de direcciones URL del cliente. No use la conexión para recuperar la dirección URL.
CRYPT_CHECK_FRESHNESS_TIME_VALIDITY
0x00000400
Compruebe si la propiedad o extensión ThisUpdate del contexto actual es mayor o igual que el parámetro ftValidFor .
CRYPT_DONT_CHECK_TIME_VALIDITY
0x00000200
No realice la comprobación de validez de tiempo. Úselo para recuperar una CRL base más reciente a través de la conexión o para omitir la comprobación de validez de tiempo durante una recuperación de caché. Cuando se establece esta marca, pftValidFor puede ser NULL.
CRYPT_DONT_VERIFY_SIGNATURE
0x00000100
No realice la comprobación de firma. Úselo cuando se realice la comprobación del objeto recuperado fuera de esta función o para forzar un reemplazo de una entrada de caché recuperada con una nueva entrada de caché para el objeto.
CRYPT_KEEP_TIME_VALID
0x00000080
Este valor está reservado para uso futuro.
CRYPT_OCSP_ONLY_RETRIEVAL
0x01000000
Recupera el objeto válido de hora de un servicio de respondedor OCSP solo en función de las direcciones URL de acceso a la información de autoridad en el contexto actual. La función CertVerifyRevocation establece esta marca cuando se llama con el parámetro dwFlags establecido en CERT_VERIFY_REV_SERVER_OCSP_FLAG.
CRYPT_WIRE_ONLY_RETRIEVAL
0x00000004
Recupera los bits codificados solo de la conexión. No usa la caché de direcciones URL.

[in] dwTimeout

Valor, en milisegundos, que especifica cuándo finalizar un intento de recuperación de dirección URL que no ha devuelto un resultado.

[out, optional] ppvObject

Puntero a una dirección para el objeto devuelto. El tipo de valor devuelto puede ser uno de los tipos admitidos que se muestran en el parámetro pszObjectOid de la función CryptRetrieveObjectByUrl .

[in, optional] pCredentials

Puntero a una estructura de CRYPT_CREDENTIALS opcional que se usa para acceder a la dirección URL. El único tipo de credenciales admitidos actualmente son las credenciales de nombre de usuario y contraseña.

[in, out, optional] pExtraInfo

Puntero a una estructura de CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO opcional que contiene información adicional sobre la entrada de caché de un objeto.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve TRUE.

Si se produce un error en la función, devuelve FALSE. Para obtener información de error extendida, llame a GetLastError.

Siguen algunos códigos de error posibles.

Código devuelto Descripción
CRYPT_E_NOT_FOUND
El autor de la llamada especificó TIME_VALID_OID_GET_CRL para el parámetro pszTimeValidOid . Este OID no se admite.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
El autor de la llamada establece la marca CRYPT_OCSP_ONLY_RETRIEVAL y el contexto incluye una dirección URL que no es OCSP.
E_INVALIDARG
La función no pudo recuperar una CRL desde un contexto de certificado o recuperar un CTL, y no pudo copiar las direcciones URL de una entrada de caché.
E_OUTOFMEMORY
La función no pudo asignar memoria para una operación de matriz interna.
ERROR_NOT_CONNECTED
El autor de la llamada no estableció la marca CRYPT_CACHE_ONLY_RETRIEVAL y no está conectado a Internet.

Comentarios

La biblioteca de vínculos dinámicos de Cryptnet implementa una caché de objetos (TVO) válida para la hora que se usa para admitir la función CryptGetTimeValidObject . El agente de TVO global del proceso usa la memoria caché, donde cada entrada de caché consta de la siguiente información.

  • Identificador de origen
  • OID de contexto
  • Context
  • Dirección URL de recuperación
  • Hora de expiración
  • Información de hora de la dirección URL sin conexión
El agente de TVO admite la recuperación de objetos TVO a petición o mediante la actualización automática.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Cryptnet.lib
Archivo DLL Cryptnet.dll