Función WinVerifyTrust (wintrust.h)

La función WinVerifyTrust realiza una acción de comprobación de confianza en un objeto especificado. La función pasa la consulta a un proveedor de confianza que admite el identificador de acción, si existe alguno.

Para la comprobación de certificados, use las funciones CertGetCertificateChain y CertVerifyCertificateChainPolicy .

Sintaxis

LONG WinVerifyTrust(
  [in] HWND   hwnd,
  [in] GUID   *pgActionID,
  [in] LPVOID pWVTData
);

Parámetros

[in] hwnd

Identificador opcional para una ventana del autor de la llamada. Un proveedor de confianza puede usar este valor para determinar si puede interactuar con el usuario. Sin embargo, los proveedores de confianza suelen realizar acciones de verificación sin entrada del usuario.

Este parámetro puede ser uno de los valores siguientes.

Valor Significado
INVALID_HANDLE_VALUE
No hay ningún usuario interactivo. El proveedor de confianza realiza la acción de comprobación sin la ayuda del usuario.
Cero
El proveedor de confianza puede usar el escritorio interactivo para mostrar su interfaz de usuario.
Un identificador de ventana válido
Un proveedor de confianza puede tratar cualquier valor distinto de INVALID_HANDLE_VALUE o cero como identificador de ventana válido que pueda usar para interactuar con el usuario.

[in] pgActionID

Puntero a una estructura GUID que identifica una acción y el proveedor de confianza que admite esa acción. Este valor indica el tipo de acción de comprobación que se va a realizar en la estructura a la que apunta pWinTrustData.

El servicio WinTrust está diseñado para trabajar con proveedores de confianza implementados por terceros. Cada proveedor de confianza proporciona su propio conjunto único de identificadores de acción. Para obtener información sobre los identificadores de acción admitidos por un proveedor de confianza, consulte la documentación de ese proveedor de confianza.

Por ejemplo, Microsoft proporciona un proveedor de confianza para editores de software que puede establecer la confiabilidad del software que se descarga de Internet o de alguna otra red pública. El proveedor de confianza del publicador de software admite los siguientes identificadores de acción. Estas constantes se definen en Softpub.h.

Valor Significado
DRIVER_ACTION_VERIFY
Compruebe la autenticidad de un controlador firmado de Windows Hardware Quality Labs (WHQL). Se trata de un proveedor de directivas de complemento Authenticode.
HTTPSPROV_ACTION
Compruebe una conexión SSL/TLS a través de Internet Explorer.
OFFICESIGN_ACTION_VERIFY
No se admite este identificador de acción. Compruebe la autenticidad de un archivo de almacenamiento estructurado mediante el proveedor de directivas de complemento Microsoft Office Authenticode.

Windows Server 2003 y Windows XP: Se admite este identificador de acción.

WINTRUST_ACTION_GENERIC_CHAIN_VERIFY
Compruebe las cadenas de certificados creadas a partir de cualquier tipo de objeto. Se proporciona una devolución de llamada para implementar la directiva de cadena final mediante el contexto de cadena para cada firmante y firmante de contador.
WINTRUST_ACTION_GENERIC_VERIFY_V2
Compruebe un archivo u objeto mediante el proveedor de directivas Authenticode.
WINTRUST_ACTION_TRUSTPROVIDER_TEST
Escriba la estructura CRYPT_PROVIDER_DATA en un archivo después de llamar al proveedor de directivas Authenticode.

[in] pWVTData

Puntero que, cuando se convierte como una estructura de WINTRUST_DATA , contiene información que el proveedor de confianza necesita para procesar el identificador de acción especificado. Normalmente, la estructura incluye información que identifica el objeto que el proveedor de confianza debe evaluar.

El formato de la estructura depende del identificador de acción. Para obtener información sobre los datos necesarios para un identificador de acción específico, consulte la documentación del proveedor de confianza que admite esa acción.

Valor devuelto

Si el proveedor de confianza comprueba que el sujeto es de confianza para la acción especificada, el valor devuelto es cero. Ningún otro valor aparte de cero debe considerarse una devolución correcta.

Si el proveedor de confianza no comprueba que el sujeto es de confianza para la acción especificada, la función devuelve un código de estado del proveedor de confianza.

Nota El valor devuelto es LONG, no HRESULT como se documentó anteriormente. No use macros HRESULT como SUCCEEDED para determinar si la función se realizó correctamente. En su lugar, compruebe si el valor devuelto es igual a cero.

 

Por ejemplo, un proveedor de confianza puede indicar que el sujeto no es de confianza o es de confianza, pero con limitaciones o advertencias. El valor devuelto puede ser un valor específico del proveedor de confianza descrito en la documentación de un proveedor de confianza individual o puede ser uno de los siguientes códigos de error.

Código devuelto Descripción
TRUST_E_SUBJECT_NOT_TRUSTED
El asunto produjo un error en la acción de comprobación especificada. La mayoría de los proveedores de confianza devuelven un código de error más detallado que describe el motivo del error.
Nota  

El código de retorno TRUST_E_SUBJECT_NOT_TRUSTED se puede devolver en función del valor de la clave del Registro EnableCertPaddingCheck en HKLM\Software\Microsoft\Cryptography\Wintrust\Config. Si EnableCertPaddingCheck está establecido en "1", se realiza una comprobación adicional para comprobar que la estructura de WIN_CERTIFICATE no contiene información extraña. La comprobación valida que no hay ningún dato distinto de cero más allá de la estructura PKCS #7. Para obtener más información, consulte el siguiente aviso de seguridad: http://technet.microsoft.com/security/advisory/2915720#section1.

 
TRUST_E_PROVIDER_UNKNOWN
El proveedor de confianza no se reconoce en este sistema.
TRUST_E_ACTION_UNKNOWN
El proveedor de confianza no admite la acción especificada.
TRUST_E_SUBJECT_FORM_UNKNOWN
El proveedor de confianza no admite el formulario especificado para el asunto.

Comentarios

La función WinVerifyTrust permite a las aplicaciones invocar a un proveedor de confianza para comprobar que un objeto especificado cumple los criterios de una operación de comprobación especificada. El parámetro pgActionID identifica la operación de comprobación y el parámetro pWinTrustData identifica el objeto cuya confianza se va a comprobar. Un proveedor de confianza es un archivo DLL registrado con el sistema operativo. Una llamada a WinVerifyTrust reenvía esa llamada al proveedor de confianza registrado, si existe, que admite ese identificador de acción especificado.

Por ejemplo, el proveedor de confianza del publicador de software puede comprobar que un archivo de imagen ejecutable procede de un editor de software de confianza y que el archivo no se ha modificado desde que se publicó. En este caso, el parámetro pWinTrustData especifica el nombre del archivo y el tipo de archivo, como un archivo de imagen ejecutable portable de Microsoft.

Cada proveedor de confianza admite un conjunto específico de acciones que puede evaluar. Cada acción tiene un GUID que lo identifica. Un proveedor de confianza puede admitir cualquier número de identificadores de acción, pero dos proveedores de confianza no pueden admitir el mismo identificador de acción.

Para obtener un ejemplo en el que se muestra cómo usar esta función para comprobar la firma de un archivo ejecutable portátil (PE), vea Ejemplo de programa C: Comprobación de la firma de un archivo PE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wintrust.h (incluir Softpub.h)
Library Wintrust.lib
Archivo DLL Wintrust.dll