Compartir a través de


Función CryptSignMessage (wincrypt.h)

La función CryptSignMessage crea un hash del contenido especificado, firma el hash y, a continuación, codifica tanto el contenido del mensaje original como el hash firmado.

Sintaxis

BOOL CryptSignMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  [in]      BOOL                     fDetachedSignature,
  [in]      DWORD                    cToBeSigned,
  [in]      const BYTE * []          rgpbToBeSigned,
  [in]      DWORD []                 rgcbToBeSigned,
  [out]     BYTE                     *pbSignedBlob,
  [in, out] DWORD                    *pcbSignedBlob
);

Parámetros

[in] pSignPara

Puntero a CRYPT_SIGN_MESSAGE_PARA estructura que contiene los parámetros de firma.

[in] fDetachedSignature

TRUE si se trata de una firma desasociada. De lo contrario, FALSE. Si este parámetro se establece en TRUE, solo el hash firmado se codifica en pbSignedBlob. De lo contrario, se codifican rgpbToBeSigned y el hash firmado.

[in] cToBeSigned

Recuento del número de elementos de matriz en rgpbToBeSigned y rgcbToBeSigned. Este parámetro debe establecerse en uno a menos que fDetachedSignature esté establecido en TRUE.

[in] rgpbToBeSigned

Matriz de punteros a búferes que contienen el contenido que se va a firmar.

[in] rgcbToBeSigned

Matriz de tamaños, en bytes, de los búferes de contenido a los que apunta rgpbToBeSigned.

[out] pbSignedBlob

Puntero a un búfer para recibir el hash firmado codificado, si fDetachedSignature es TRUE, o en el contenido codificado y el hash firmado si fDetachedSignature es FALSE.

Este parámetro puede ser NULL para establecer el tamaño de esta información con fines de asignación de memoria. Para obtener más información, vea Recuperación de datos de longitud desconocida.

[in, out] pcbSignedBlob

Puntero a un DWORD que especifica el tamaño, en bytes, del búfer pbSignedBlob . Cuando se devuelve la función, esta variable contiene el tamaño, en bytes, del mensaje firmado y codificado.

Nota Al procesar los datos devueltos, las aplicaciones deben usar el tamaño real de los datos devueltos. El tamaño real puede ser ligeramente menor que el tamaño del búfer especificado en la entrada. (En la entrada, los tamaños del búfer suelen especificarse lo suficientemente grandes como para asegurarse de que los datos de salida más grandes posibles caben en el búfer). En la salida, la variable a la que apunta este parámetro se actualiza para reflejar el tamaño real de los datos copiados en el búfer.
 

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.

A continuación se enumeran los códigos de error devueltos normalmente por la función GetLastError .

Código devuelto Descripción
ERROR_MORE_DATA
Si el búfer especificado por el parámetro pbSignedBlob no es lo suficientemente grande como para contener los datos devueltos, la función establece el código de ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbSignedBlob.
E_INVALIDARG
El tipo de codificación de mensajes no es válido. Actualmente solo se admiten PKCS_7_ASN_ENCODING. CbSize en *pSignPara no es válido.
CRYPT_E_NO_KEY_PROPERTY
PSigningCert en *pSignPara no tiene una propiedad CERT_KEY_PROV_INFO_PROP_ID ni CERT_KEY_CONTEXT_PROP_ID.
 
Nota Los errores de las funciones llamadas CryptCreateHash, CryptHashData y CryptSignHash podrían propagarse a esta función.
 
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.

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 wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

Funciones de mensaje simplificadas