Funzione CryptSignAndEncryptMessage (wincrypt.h)

La funzione CryptSignAndEncryptMessage crea un hash del contenuto specificato, firma l'hash , crittografa il contenuto, esegue l'hash crittografato e l'hash firmato e quindi codifica sia il contenuto crittografato che l'hash firmato. Il risultato è lo stesso di se l'hash è stato prima firmato e quindi crittografato.

Sintassi

BOOL CryptSignAndEncryptMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA    pSignPara,
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeSignedAndEncrypted,
  [in]      DWORD                       cbToBeSignedAndEncrypted,
  [out]     BYTE                        *pbSignedAndEncryptedBlob,
  [in, out] DWORD                       *pcbSignedAndEncryptedBlob
);

Parametri

[in] pSignPara

Puntatore a una struttura CRYPT_SIGN_MESSAGE_PARA contenente i parametri di firma.

[in] pEncryptPara

Puntatore a una struttura CRYPT_ENCRYPT_MESSAGE_PARA contenente parametri di crittografia.

[in] cRecipientCert

Numero di elementi di matrice in rgpRecipientCert.

[in] rgpRecipientCert

Matrice di puntatori alle strutture CERT_CONTEXT . Ogni struttura è il certificato di un destinatario previsto del messaggio.

[in] pbToBeSignedAndEncrypted

Puntatore a un buffer contenente il contenuto da firmare e crittografare.

[in] cbToBeSignedAndEncrypted

Dimensioni, in byte, del buffer pbToBeSignedAndEncrypted .

[out] pbSignedAndEncryptedBlob

Puntatore a un buffer per ricevere il messaggio crittografato e codificato.

Questo parametro può essere NULL per impostare le dimensioni di queste informazioni per scopi di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out] pcbSignedAndEncryptedBlob

Puntatore a DWORD che specifica le dimensioni, in byte, del buffer a cui punta pbSignedAndEncryptedBlob. Quando la funzione restituisce, questa variabile contiene le dimensioni, in byte, del messaggio firmato e crittografato copiato in *pbSignedAndEncryptedBlob.

Nota Quando si elaborano i dati restituiti, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori rispetto alle dimensioni del buffer specificato nell'input. In base all'input, le dimensioni del buffer vengono in genere specificate abbastanza grandi per garantire che i dati di output più grandi siano adatti al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata per riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

Se la funzione ha esito negativo, il valore restituito è zero (FALSE).

Per informazioni sull'errore estese, chiamare GetLastError.

Di seguito viene elencato il codice di errore più comunemente restituito dalla funzione GetLastError .

Codice restituito Descrizione
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbSignedAndEncryptedBlob non è sufficiente per contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile puntata da pcbSignedAndEncryptedBlob.
 
Nota Gli errori delle funzioni denominate CryptSignMessage e CryptEncryptMessage potrebbero essere propagati a questa funzione.
 

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

Funzioni di messaggio semplificate