PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC función de devolución de llamada (wincrypt.h)

Se llama a la función de devolución de llamada PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC para firmar y codificar un hash calculado.

Sintaxis

PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC PfnCryptSignAndEncodeHashFunc;

BOOL PfnCryptSignAndEncodeHashFunc(
  [in]      NCRYPT_KEY_HANDLE hKey,
  [in]      DWORD dwCertEncodingType,
  [in]      PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
  [in]      void *pvDecodedSignPara,
  [in]      LPCWSTR pwszCNGPubKeyAlgid,
  [in]      LPCWSTR pwszCNGHashAlgid,
  [in]      BYTE *pbComputedHash,
  [in]      DWORD cbComputedHash,
  [out]     BYTE *pbSignature,
  [in, out] DWORD *pcbSignature
)
{...}

Parámetros

[in] hKey

Identificador de la clave privada Cryptography API: Next Generation (CNG) que se va a usar para firmar el hash.

[in] dwCertEncodingType

Especifica el tipo de codificación usada. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes al combinarlos con una operación OR bit a bit, como se muestra en el ejemplo siguiente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING tipos de codificación definidos actualmente son:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pSignatureAlgorithm

Puntero a una estructura CRYPT_ALGORITHM_IDENTIFIER que contiene el identificador de objeto de firma (OID) y sus parámetros codificados opcionales.

[in] pvDecodedSignPara

Puntero opcional a la estructura de datos de parámetros de firma descodificada que devolvió anteriormente la función PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC .

[in] pwszCNGPubKeyAlgid

Cadena Unicode que contiene el identificador del algoritmo de clave pública de CNG que corresponde a pSignatureAlgorithm-pszObjId>.

[in] pwszCNGHashAlgid

Cadena Unicode que contiene el identificador del algoritmo hash CNG que corresponde a pSignatureAlgorithm-pszObjId> o a un identificador de algoritmo hash en pvDecodedSignPara.

[in] pbComputedHash

Puntero a los bytes hash calculados devueltos por la función BCryptFinishHash que corresponde a pwszCNGHashAlgid.

[in] cbComputedHash

Valor que representa la longitud, en bytes, del hash calculado.

[out] pbSignature

Puntero a los bytes de firma codificados.

[in, out] pcbSignature

Valor que representa la longitud, en bytes, de la firma codificada.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero (TRUE).

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

Si esta función de devolución de llamada no admite el algoritmo de firma, debe devolver FALSE y llamar a SetLastError con ERROR_NOT_SUPPORTED.

Comentarios

Puede usar funciones de compatibilidad con OID para implementar esta función de devolución de llamada. Wincrypt.h define la constante siguiente para este propósito.

Constante Definición
CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC "CryptDllSignAndEncodeHash"

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