estrutura CMSG_CONTENT_ENCRYPT_INFO (wincrypt.h)
A estrutura CMSG_CONTENT_ENCRYPT_INFO contém informações compartilhadas entre as funções PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE e PFN_CMSG_EXPORT_MAIL_LIST usadas para a criptografia e exportação de uma chave de criptografia de conteúdo, que pode ser instalada usando um identificador de objeto de criptografia: OID (Next Generation).
Sintaxe
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;
Membros
cbSize
O tamanho, em bytes, dessa estrutura.
hCryptProv
Um identificador para um provedor de serviços criptográficos (CSP). Se o membro fCNG for FALSE e o membro hCryptProv for NULL após a entrada, hCryptProv deverá ser atualizado pela função de retorno de chamada. Se um provedor for adquirido que deve ser liberado, o CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG deve ser definido no membro dwFlags .
ContentEncryptionAlgorithm
Uma estrutura CRYPT_ALGORITHM_IDENTIFIER que especifica o algoritmo usado para criptografar a chave. Se a função de retorno de chamada atualizar o membro pszObjId ou o membro Parameters da estrutura CRYPT_ALGORITHM_IDENTIFIER , defina o valor apropriado no membro dwFlags . Você deve alocar e liberar memória para esses valores usando os membros pfnAlloc e pfnFree .
pvEncryptionAuxInfo
Um ponteiro para uma estrutura que depende do algoritmo de criptografia. A tabela a seguir lista possíveis IDs de algoritmo e o conteúdo do membro correspondente.
Valor | Significado |
---|---|
|
|
|
Para todos os outros algoritmos de criptografia, esse valor é NULL.
cRecipients
Um valor que especifica o número de destinatários de uma mensagem.
rgCmsRecipients
Um ponteiro para uma matriz de estruturas CMSG_RECIPIENT_ENCODE_INFO que contêm as informações do destinatário da mensagem.
pfnAlloc
Um ponteiro para uma função instalável usada para alocar memória para um membro atualizado.
pfnFree
Um ponteiro para uma função instalável usada para liberar memória alocada por pfnAlloc.
dwEncryptFlags
Um valor que indica se a saída codificada deve ser preenchida com zeros para obter um comprimento máximo consistente necessário para streaming de comprimento definido nas funções CryptMsgCalculateEncodedLength ou CryptMsgOpenToEncode .
CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)
DUMMYUNIONNAME
DUMMYUNIONNAME.hContentEncryptKey
Um identificador para a chave de criptografia de conteúdo quando o membro fCNG é FALSE.
DUMMYUNIONNAME.hCNGContentEncryptKey
Um identificador para a chave de criptografia de conteúdo quando o membro fCNG é TRUE.
dwFlags
Um valor que indica se a memória deve ser liberada para os membros hCryptProv ou ContentEncryptionAlgorithm .
Valor | Significado |
---|---|
|
Defina se a função de retorno de chamada atualizar o membro Parameters da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm . |
|
Defina se a função de retorno de chamada atualizar o membro pszObjId da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm . |
|
Defina se a função de retorno de chamada adquire um membro hCryptProv que deve ser liberado. |
fCNG
Um valor que indica se um provedor de CNG (Cryptography API: Next Generation ) deve ser usado para gerar a chave de criptografia de conteúdo.
Se o membro fCNG for FALSE, a função CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC será chamada para atualizar o membro hContentEncryptKey .
Se o membro fCNG for TRUE, a função CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC será chamada para atualizar os membros hCNGContentEncryptKey e cbContentEncryptKey e os membros pbCNGContentEncryptKeyObject e pbContentEncryptKey deverão ser alocados pelo membro pfnAlloc . Libere e libere a chave de criptografia de conteúdo chamando a função CryptMsgClose .
pbCNGContentEncryptKeyObject
Um ponteiro para o buffer que contém a chave de criptografia de conteúdo CNG.
pbContentEncryptKey
Um ponteiro para o buffer que contém uma chave de criptografia de conteúdo CAPI1.
cbContentEncryptKey
O tamanho, em bytes, do membro pbCNGContentEncryptKeyObject ou pbContentEncryptKey , dependendo do valor do membro fCNG .
Comentários
Quando chamada com o parâmetro dwMsgType definido como CMSG_ENVELOPED, a função CryptMsgOpenToEncode inicializa a estrutura CMSG_CONTENT_ENCRYPT_INFO da estrutura CMSG_ENVELOPED_ENCODE_INFO .
Se a estrutura CMSG_ENVELOPED_ENCODE_INFO usar o membro rgpRecipients em vez do membro rgCmsRecipients , a função CryptMsgOpenToEncode converterá as estruturas de membro rgpRecipientsem estruturas CMSG_RECIPIENT_ENCODE_INFO para o membro rgCmsRecipients da estrutura CMSG_CONTENT_ENCRYPT_INFO .
Quando o membro fCNG é FALSE, os seguintes membros podem ser alterados na estrutura CMSG_CONTENT_ENCRYPT_INFO :
- hContentEncryptKey
- Hcryptprov
- O membro pszObjId da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm
- O membro Parameters da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm
- dwFlags
Quando o membro fCNG é TRUE, os seguintes membros podem ser alterados na estrutura CMSG_CONTENT_ENCRYPT_INFO :
- hCNGContentEncryptKey
- pbCNGContentEncryptKeyObject
- pbContentEncryptKey
- cbContentEncryptKey
- O membro pszObjId da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm
- O membro Parameters da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm
- dwFlags
Os seguintes membros são somente leitura:
- cbSize
- pvEncryptionAuxInfo
- cRecipients
- rgCmsRecipients
- pfnAlloc
- pfnFree
- dwEncryptFlags
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | wincrypt.h |