Condividi tramite


struttura CMSG_CONTENT_ENCRYPT_INFO (wincrypt.h)

La struttura CMSG_CONTENT_ENCRYPT_INFO contiene informazioni condivise tra le funzioni PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE e PFN_CMSG_EXPORT_MAIL_LIST usate per la crittografia e l'esportazione di una chiave di crittografia del contenuto, che può essere installata tramite un'API di crittografia: identificatore di oggetto CNG (Next Generation).

Sintassi

typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  PFN_CMSG_ALLOC              pfnAlloc;
  PFN_CMSG_FREE               pfnFree;
  DWORD                       dwEncryptFlags;
  union {
    HCRYPTKEY         hContentEncryptKey;
    BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
  } DUMMYUNIONNAME;
  DWORD                       dwFlags;
  BOOL                        fCNG;
  BYTE                        *pbCNGContentEncryptKeyObject;
  BYTE                        *pbContentEncryptKey;
  DWORD                       cbContentEncryptKey;
} CMSG_CONTENT_ENCRYPT_INFO, *PCMSG_CONTENT_ENCRYPT_INFO;

Members

cbSize

Dimensione, in byte, della struttura.

hCryptProv

Handle per un provider di servizi di crittografia (CSP). Se il membro fCNG è FALSE e il membro hCryptProv è NULL all'input, hCryptProv deve essere aggiornato dalla funzione di callback. Se viene acquisito un provider che deve essere rilasciato, il CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG deve essere impostato nel membro dwFlags .

ContentEncryptionAlgorithm

Struttura CRYPT_ALGORITHM_IDENTIFIER che specifica l'algoritmo utilizzato per crittografare la chiave. Se la funzione di callback aggiorna il membro pszObjId o il membro Parameters della struttura CRYPT_ALGORITHM_IDENTIFIER , impostare il valore appropriato nel membro dwFlags . È necessario allocare e liberare memoria per questi valori usando i membri pfnAlloc e pfnFree .

pvEncryptionAuxInfo

Puntatore a una struttura che dipende dall'algoritmo di crittografia. Nella tabella seguente sono elencati i possibili ID algoritmo e il contenuto del membro corrispondente.

Valore Significato
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

Per tutti gli altri algoritmi di crittografia, questo valore è NULL.

cRecipients

Valore che specifica il numero di destinatari di un messaggio.

rgCmsRecipients

Puntatore a una matrice di strutture CMSG_RECIPIENT_ENCODE_INFO che contengono le informazioni sul destinatario del messaggio.

pfnAlloc

Puntatore a una funzione installabile usata per allocare memoria per un membro aggiornato.

pfnFree

Puntatore a una funzione installabile usata per liberare memoria allocata da pfnAlloc.

dwEncryptFlags

Valore che indica se l'output codificato deve essere riempito con zeri per ottenere una lunghezza massima coerente necessaria per lo streaming di lunghezza definita nelle funzioni CryptMsgCalculateEncodedLength o CryptMsgOpenToEncode .

CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)

DUMMYUNIONNAME

DUMMYUNIONNAME.hContentEncryptKey

Handle per la chiave di crittografia del contenuto quando il membro fCNG è FALSE.

DUMMYUNIONNAME.hCNGContentEncryptKey

Handle per la chiave di crittografia del contenuto quando il membro fCNG è TRUE.

dwFlags

Valore che indica se la memoria deve essere liberata per i membri hCryptProv o ContentEncryptionAlgorithm .

Valore Significato
CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
0x00000001
Impostare se la funzione di callback aggiorna il membro Parameters della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm .
CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
0x00000002
Impostare se la funzione di callback aggiorna il membro pszObjId della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm .
CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
0x00008000
Impostare se la funzione di callback acquisisce un membro hCryptProv che deve essere liberato.

fCNG

Valore che indica se usare un provider cryptography API: Next Generation (CNG) per generare la chiave di crittografia del contenuto.

Se il membro fCNG è FALSE, viene chiamata la funzione CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC per aggiornare il membro hContentEncryptKey .

Se il membro fCNG è TRUE, la funzione CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC viene chiamata per aggiornare i membri hCNGContentEncryptKey e cbContentEncryptKey e i membri pbCNGContentEncryptKeyObject e pbContentEncryptKey devono essere allocati dal membro pfnAlloc . Liberare e rilasciare la chiave di crittografia del contenuto chiamando la funzione CryptMsgClose .

pbCNGContentEncryptKeyObject

Puntatore al buffer contenente la chiave di crittografia del contenuto CNG.

pbContentEncryptKey

Puntatore al buffer che contiene una chiave di crittografia del contenuto CAPI1.

cbContentEncryptKey

Dimensione, in byte, del membro pbCNGContentEncryptKeyObject o pbContentEncryptKey a seconda del valore del membro fCNG .

Commenti

Quando viene chiamato con il parametro dwMsgType impostato su CMSG_ENVELOPED, la funzione CryptMsgOpenToEncode inizializza la struttura CMSG_CONTENT_ENCRYPT_INFO dalla struttura CMSG_ENVELOPED_ENCODE_INFO .

Se la struttura CMSG_ENVELOPED_ENCODE_INFO utilizza il membro rgpRecipients anziché il membro rgCmsRecipients , la funzione CryptMsgOpenToEncode converte le strutture membro rgpRecipients in strutture CMSG_RECIPIENT_ENCODE_INFO per il membro rgCmsRecipients della struttura CMSG_CONTENT_ENCRYPT_INFO .

Quando il membro fCNG è FALSE, i membri seguenti possono essere modificati nella struttura CMSG_CONTENT_ENCRYPT_INFO :

hContentEncryptKey
hCryptProv
Membro pszObjId della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm
Membro Parameters della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm
dwFlags

Quando il membro fCNG è TRUE, i membri seguenti possono essere modificati nella struttura CMSG_CONTENT_ENCRYPT_INFO :

hCNGContentEncryptKey
pbCNGContentEncryptKeyObject
pbContentEncryptKey
cbContentEncryptKey
Membro pszObjId della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm
Membro Parameters della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm
dwFlags

I membri seguenti sono di sola lettura:

cbSize
pvEncryptionAuxInfo
cRecipients
rgCmsRecipients
pfnAlloc
pfnFree
dwEncryptFlags

Requisiti

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

Vedi anche

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY