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 |
---|---|
|
|
|
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 |
---|---|
|
Impostare se la funzione di callback aggiorna il membro Parameters della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm . |
|
Impostare se la funzione di callback aggiorna il membro pszObjId della struttura CRYPT_ALGORITHM_IDENTIFIER a cui fa riferimento il membro ContentEncryptionAlgorithm . |
|
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 |