Función CryptMsgVerifyCountersignatureEncoded (wincrypt.h)

La función CryptMsgVerifyCountersignatureEncoded comprueba una contrafirma en términos de la estructura SignerInfo (definida por PKCS #7).

Sintaxis

BOOL CryptMsgVerifyCountersignatureEncoded(
  [in] HCRYPTPROV_LEGACY hCryptProv,
  [in] DWORD             dwEncodingType,
  [in] PBYTE             pbSignerInfo,
  [in] DWORD             cbSignerInfo,
  [in] PBYTE             pbSignerInfoCountersignature,
  [in] DWORD             cbSignerInfoCountersignature,
  [in] PCERT_INFO        pciCountersigner
);

Parámetros

[in] hCryptProv

Este parámetro no se usa y debe establecerse en NULL.

Windows Server 2003 y Windows XP: NULL o el identificador del proveedor criptográfico que se va a usar para aplicar un algoritmo hash al campo encryptedDigest de pbSignerInfo. El tipo de datos de este parámetro es HCRYPTPROV.

A menos que haya un motivo seguro para pasar un proveedor criptográfico específico en hCryptProv, pase NULL para hacer que se use el proveedor RSA o DSS predeterminado.

[in] dwEncodingType

Especifica el tipo de codificación utilizado. Actualmente, solo se usan X509_ASN_ENCODING y PKCS_7_ASN_ENCODING; sin embargo, en el futuro se pueden agregar tipos de codificación adicionales. Para cualquier tipo de codificación actual, use:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbSignerInfo

Puntero al BLOB codificado que contiene el firmante del contenido de un mensaje que se va a contrasignar.

[in] cbSignerInfo

Recuento, en bytes, del BLOB codificado para el firmante del contenido.

[in] pbSignerInfoCountersignature

Puntero al BLOB codificado que contiene la información del contrafirmador.

[in] cbSignerInfoCountersignature

Recuento, en bytes, del BLOB codificado para el contrafirmador del mensaje.

[in] pciCountersigner

Puntero a un CERT_INFO que incluye con el emisor y el número de serie del contrafirmador. Para obtener más información, vea la sección Comentarios.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).

Si se produce un error en la función, el valor devuelto es cero (FALSE). Para obtener información de error extendida, llame a GetLastError.

En la tabla siguiente se enumeran los códigos de error devueltos normalmente por la función GetLastError .

Código devuelto Descripción
CRYPT_E_AUTH_ATTR_MISSING
El mensaje no contiene un atributo autenticado esperado.
CRYPT_E_HASH_VALUE
El valor hash no es correcto.
CRYPT_E_UNEXPECTED_ENCODING
El mensaje no está codificado según lo previsto.
CRYPT_E_UNKNOWN_ALGO
El algoritmo criptográfico es desconocido.
E_INVALIDARG
Uno o varios argumentos no son válidos.
E_OUTOFMEMORY
Se quedó sin memoria.
 

Es posible que se devuelvan errores propagados de las funciones siguientes.

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

La comprobación del contador se realiza mediante la estructura PKCS #7 SIGNERINFO . La firma debe contener el hash cifrado del campo encryptedDigest de pbSignerInfo.

El emisor y el número de serie del contador deben coincidir con la información del contrafirmador de pbSignerInfoCountersignature. Los únicos campos a los que se hace referencia desde pciCountersigner son SerialNumber, Issuer y SubjectPublicKeyInfo. SubjectPublicKeyInfo se usa para tener acceso a la clave pública que, a continuación, se usa para cifrar el hash del pciCountersigner , por lo que se compara con el hash de pbSignerInfo.

Ejemplos

Para obtener un ejemplo que usa esta función, vea Ejemplo de programa C: codificación y descodificación de un mensaje contrasignado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CryptMsgCountersign

CryptMsgCountersignEncoded

Funciones de mensaje de bajo nivel

Funciones de mensaje simplificadas