Función CryptVerifyCertificateSignatureEx (wincrypt.h)
La función CryptVerifyCertificateSignatureEx comprueba la firma de un certificado de firmante, una lista de revocación de certificados, una solicitud de certificado o una solicitud keygen mediante la clave pública del emisor. La función no requiere acceso a una clave privada.
Sintaxis
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
Parámetros
[in] hCryptProv
Este parámetro no se usa y debe establecerse en NULL.
Windows Server 2003 y Windows XP: Identificador del proveedor de servicios criptográficos que se usa para comprobar la firma. El tipo de datos de este parámetro es HCRYPTPROV.
Null se pasa a menos que haya un motivo seguro para pasar un proveedor criptográfico específico. Pasar NULL hace que se adquiera el proveedor RSA o DSS predeterminado.
[in] dwCertEncodingType
Tipo de codificación de certificado que se usó para cifrar el asunto. Esta función omite el identificador de tipo de codificación de mensaje , contenido en el alto WORD de este valor.
Este parámetro puede ser el siguiente tipo de codificación de certificado definido actualmente.
Valor | Significado |
---|---|
|
Especifica la codificación de certificados X.509. |
[in] dwSubjectType
Tipo de asunto. Este parámetro puede ser uno de los siguientes tipos de asunto.
Valor | Significado |
---|---|
|
pvSubject es un puntero a una estructura CRYPT_DATA_BLOB . |
|
pvSubject es un puntero a una estructura CCERT_CONTEXT . |
|
pvSubject es un puntero a una estructura CCRL_CONTEXT . |
|
pvSubject es un puntero a una estructura OCSP_BASIC_SIGNED_RESPONSE_INFO .
Windows Server 2003 y Windows XP: Este tipo de asunto no se admite. |
[in] pvSubject
Puntero a una estructura del tipo indicado por dwSubjectType que contiene la firma que se va a comprobar.
[in] dwIssuerType
Tipo de emisor. Este parámetro puede ser uno de los siguientes tipos de emisor.
Valor | Significado |
---|---|
|
pvIssuer es un puntero a una estructura de CERT_PUBLIC_KEY_INFO . |
|
pvIssuer es un puntero a una estructura de CCERT_CONTEXT . |
|
pvIssuer es un puntero a una estructura CCERT_CHAIN_CONTEXT . |
|
pvIssuer debe ser NULL. |
[in] pvIssuer
Puntero a una estructura del tipo indicado por el valor de dwIssuerType. La estructura contiene acceso a la clave pública necesaria para comprobar la firma.
[in] dwFlags
Marcas que modifican el comportamiento de la función. Puede ser cero o un OR bit a bit de los siguientes valores.
Valor | Significado |
---|---|
|
Si establece esta marca y CryptVerifyCertificateSignatureEx detecta un algoritmo MD2 o MD4, la función devuelve FALSE y establece GetLastErroren NTE_BAD_ALGID. La firma todavía se comprueba, pero esta combinación de errores permite al autor de la llamada, sabiendo ahora que se usó un algoritmo MD2 o MD4, para decidir si confiar o rechazar la firma.
Windows 8 y Windows Server 2012: Comienza la compatibilidad con esta marca. |
|
Establece propiedades de firma seguras, después de una comprobación correcta, en el asunto al que apunta el parámetro pvSubject .
La propiedad siguiente se establece en el contexto del certificado:
Nota Esta marca solo es aplicable si se especifica CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL en el parámetro dwSubjectType .
|
|
Devuelve un puntero a una estructura de CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO en el parámetro pvExtra . La estructura contiene la longitud, en bits, de la clave pública y los nombres de los algoritmos de firma y hash usados.
Debe llamar a CryptMemFree para liberar la estructura. Si no se puede asignar memoria para la estructura de CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO , esta función devuelve correctamente, pero establece el parámetro pvExtra en NULL. Nota Esta marca solo es aplicable si CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE se especifica en el parámetro dwSubjectType .
|
[in, out, optional] pvExtra
Puntero a una estructura de CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO si el parámetro dwFlags está establecido en CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG.
Debe llamar a CryptMemFree para liberar la estructura.
Valor devuelto
Devuelve un valor distinto de cero si es correcto o cero de lo contrario.
Para obtener información de error extendida, llame a GetLastError.
Código devuelto | Descripción |
---|---|
|
Tipo de codificación de certificado no válido. Actualmente solo se admite X509_ASN_ENCODING . |
|
El identificador de objeto (OID) del algoritmo de firma no se asigna a un algoritmo hash conocido o compatible. |
|
La firma no era válida. |
Si se produce un error en la función, GetLastError puede devolver un error de codificación y descodificación de sintaxis abstracta uno (ASN.1). Para obtener información sobre estos errores, vea Valores devueltos de codificación y descodificación de ASN.1.
Comentarios
El búfer de asunto puede contener un BLOB codificado o un contexto para un certificado o CRL. En el caso de un contexto de certificado, si faltan los parámetros de clave pública del certificado y si estos parámetros se pueden heredar del emisor del certificado, por ejemplo, del parámetro de clave pública de DSS, la propiedad CERT_PUBKEY_ALG_PARA_PROP_ID del contexto se actualiza con los parámetros del algoritmo de clave pública del emisor para una firma válida.
Requisitos
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 | wincrypt.h |
Library | Crypt32.lib |
Archivo DLL | Crypt32.dll |