Funzione CryptEncryptMessage (wincrypt.h)

La funzione CryptEncryptMessagecrittografa e codifica un messaggio.

Sintassi

BOOL CryptEncryptMessage(
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeEncrypted,
  [in]      DWORD                       cbToBeEncrypted,
  [out]     BYTE                        *pbEncryptedBlob,
  [in, out] DWORD                       *pcbEncryptedBlob
);

Parametri

[in] pEncryptPara

Puntatore a una struttura CRYPT_ENCRYPT_MESSAGE_PARA che contiene i parametri di crittografia.

La funzione CryptEncryptMessage non supporta gli OID SHA2, szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF e szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF.

[in] cRecipientCert

Numero di elementi nella matrice rgpRecipientCert .

[in] rgpRecipientCert

Matrice di puntatori a CERT_CONTEXT strutture che contengono i certificati dei destinatari desiderati del messaggio.

[in] pbToBeEncrypted

Puntatore a un buffer contenente il messaggio da crittografare.

[in] cbToBeEncrypted

Dimensione, in byte, del messaggio da crittografare.

[out] pbEncryptedBlob

Puntatore al BLOB che contiene un buffer che riceve il messaggio crittografato e codificato.

Per impostare le dimensioni di queste informazioni ai fini dell'allocazione di memoria, questo parametro può essere NULL. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out] pcbEncryptedBlob

Puntatore a un DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pbEncryptedBlob . Quando la funzione viene restituita, questa variabile contiene le dimensioni, in byte, del messaggio crittografato e codificato copiato in pbEncryptedBlob.

Nota Quando si elaborano i dati restituiti nel buffer di pbEncryptedBlob, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori alle dimensioni del buffer specificato nell'input. In caso di input, le dimensioni del buffer vengono in genere specificate sufficientemente 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 in modo da riflettere le dimensioni effettive dei dati copiati nel buffer.
 

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.

Nota Gli errori delle chiamate a CryptGenKey, CryptEncrypt, CryptImportKey e CryptExportKey possono essere propagati a questa funzione.
 
La funzione GetLastError restituisce i codici di errore seguenti più spesso.
Codice restituito Descrizione
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbEncryptedBlob non è sufficientemente grande da contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile a cui punta pcbEncryptedBlob.
E_INVALIDARG
Il tipo di codifica del messaggio non è valido. Attualmente è supportato solo PKCS_7_ASN_ENCODING. CbSize in *pEncryptPara non è valido.
 

Se la funzione ha esito negativo, GetLastError può restituire un errore di codifica/decodifica ASN.1 ( Abstract Syntax Notation One ). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.

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

Funzioni di messaggio semplificate