struttura CRYPT_ENCRYPT_MESSAGE_PARA (wincrypt.h)

La struttura CRYPT_ENCRYPT_MESSAGE_PARA contiene informazioni utilizzate per crittografare i messaggi.

Sintassi

typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  HCRYPTPROV_LEGACY          hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
  void                       *pvEncryptionAuxInfo;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;

Members

cbSize

Dimensione, in byte, della struttura.

dwMsgEncodingType

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

hCryptProv

Questo membro non viene usato e deve essere impostato su NULL.

Windows Server 2003 e Windows XP: Handle per il provider del servizio di crittografia (CSP) da usare per la crittografia. Il CSP identificato da hCryptProv viene usato per eseguire la crittografia del contenuto, la crittografia della chiave del destinatario e l'esportazione della chiave del destinatario. La chiave privata non viene usata.

A meno che non vi sia un motivo sicuro per passare un provider di crittografia specifico in hCryptProv, passare zero per usare il provider RSA o DSS predefinito.

Il tipo di dati di questo membro è HCRYPTPROV.

ContentEncryptionAlgorithm

Struttura CRYPT_ALGORITHM_IDENTIFIER che contiene l'identificatore di oggetto (OID) dell'algoritmo di crittografia da usare. Il CSP specificato da hCryptProv deve supportare questo algoritmo di crittografia.

Gli algoritmi di crittografia szOID_OIWSEC_desCBC (CALG_DES) e szOID_RSA_DES_EDE3_CBC (CALG_3DES) richiedono che il membro Parameters di questa struttura contenga un vettore di inizializzazione a otto byte codificato (IV). Se il membro cbData del membro Parameters è zero, viene generata una notazione sintassi astratta (ASN.1)-encoded OCTET STRING che contiene l'IV usando CryptGenRandom. Per altre informazioni sul parametro KP_IV, vedere CryptSetKeyParam.

Gli algoritmi di crittografia szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM, 128 bit), szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM, 192 bit) e szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM, 256 bit) richiedono che il membro Parameters di questa struttura contenga un vettore di inizializzazione a sedici byte codificato (IV). Se il membro cbData del membro Parameters è zero, viene generata una notazione sintassi astratta ( ASN.1)-encoded OCTET STRING che contiene l'IV.

L'algoritmo szOID_RSA_RC2CBC (CALG_RC2) richiede che il membro pbData del membro Parameters di questa struttura sia una struttura CRYPT_RC2_CBC_PARAMETERS . Se il membro cbData del membro Parameters è zero, viene generata una struttura con codifica ASN.1 CRYPT_RC2_CBC_PARAMETERS che contiene l'IV come membro pbData . Questo pbData generato usa la dwVersion predefinita che corrisponde alla lunghezza della chiave a 40 bit. Per eseguire l'override della lunghezza predefinita della chiave a 40 bit, è possibile impostare pvEncryptionAuxInfo in modo che punti a una struttura CMSG_RC2_AUX_INFO che contiene una lunghezza di bit chiave.

Nota Quando un messaggio viene decrittografato, se ha un parametro vettore di inizializzazione , le funzioni del messaggio di crittografia chiamano CryptSetKeyParam con il vettore di inizializzazione prima di decrittografare.
 

pvEncryptionAuxInfo

Puntatore a una struttura di CMSG_RC2_AUX_INFO per la crittografia RC2 o una struttura di CMSG_SP3_COMPATIBLE_AUX_INFO per la crittografia compatibile con SP3. Per la crittografia compatibile con RC2 o SP3, questo membro deve essere impostato su NULL.

Se il membro ContentEncryptionAlgorithm contiene szOID_RSA_RC4, questo membro punta a una struttura CMSG_RC4_AUX_INFO che specifica il numero di byte salt da includere.

dwFlags

In genere impostato su zero. Tuttavia, se l'output codificato deve essere un CMSG_ENVELOPED contenuto interno di un messaggio di crittografia esterno, ad esempio un messaggio di CMSG_SIGNED, è necessario impostare il CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG. Se non è impostato, il contenuto verrà codificato come tipo di contenuto interno di CMSG_DATA.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG può essere impostato per incapsulare il contenuto interno non dei dati all'interno di una STRINGA OCTET prima di crittografare.

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG possibile impostare per identificare i destinatari in base al relativo identificatore di chiave e non al relativo emittente e al numero di serie.

dwInnerContentType

In genere impostato su zero. Il membro dwInnerContentType deve essere impostato per impostare i tipi di messaggio di crittografia se l'input da crittografare è l'output codificato di un altro messaggio di crittografia, ad esempio CMSG_SIGNED.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione wincrypt.h

Vedi anche

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage