Condividi tramite


PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC funzione di callback (wincrypt.h)

La funzione di callback PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC viene chiamata per firmare e codificare un hash calcolato.

Sintassi

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
)
{...}

Parametri

[in] hKey

Handle per l'API di crittografia: chiave privata CNG (Next Generation) da usare per firmare l'hash.

[in] dwCertEncodingType

Specifica il tipo di codifica utilizzata. È sempre accettabile specificare sia il certificato che i tipi di codifica dei messaggi combinandoli con un'operazione OR bit per bit, come illustrato nell'esempio seguente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING I tipi di codifica attualmente definiti sono:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pSignatureAlgorithm

Puntatore a una struttura CRYPT_ALGORITHM_IDENTIFIER che contiene l'identificatore dell'oggetto firma (OID) e i relativi parametri con codifica facoltativa.

[in] pvDecodedSignPara

Puntatore facoltativo alla struttura dei dati dei parametri della firma decodificata restituita in precedenza dalla funzione PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC .

[in] pwszCNGPubKeyAlgid

Stringa Unicode che contiene l'identificatore dell'algoritmo di chiave pubblica CNG corrispondente a pSignatureAlgorithm-pszObjId>.

[in] pwszCNGHashAlgid

Stringa Unicode che contiene l'identificatore dell'algoritmo hash CNG che corrisponde a pSignatureAlgorithm-pszObjId> o a un identificatore dell'algoritmo hash in pvDecodedSignPara.

[in] pbComputedHash

Puntatore ai byte hash calcolati restituiti dalla funzione BCryptFinishHash che corrisponde a pwszCNGHashAlgid.

[in] cbComputedHash

Valore che rappresenta la lunghezza, in byte, dell'hash calcolato.

[out] pbSignature

Puntatore ai byte di firma codificati.

[in, out] pcbSignature

Valore che rappresenta la lunghezza, in byte, della firma codificata.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero (TRUE).

Se la funzione non riesce, restituisce zero (FALSE). Per informazioni sugli errori estesi, chiamare GetLastError.

Se questa funzione di callback non supporta l'algoritmo di firma, deve restituire FALSE e chiamare SetLastError con ERROR_NOT_SUPPORTED.

Commenti

È possibile usare le funzioni di supporto OID per distribuire questa funzione di callback. Wincrypt.h definisce la costante seguente a questo scopo.

Costante Definizione
CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC "CryptDllSignAndEncodeHash"

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h