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
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

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
CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
0x00000001
Defina se a função de retorno de chamada atualizar o membro Parameters da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm .
CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
0x00000002
Defina se a função de retorno de chamada atualizar o membro pszObjId da estrutura CRYPT_ALGORITHM_IDENTIFIER referenciada pelo membro ContentEncryptionAlgorithm .
CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
0x00008000
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

Confira também

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY