estrutura CMSG_CNG_CONTENT_DECRYPT_INFO (wincrypt.h)

A estrutura CMSG_CNG_CONTENT_DECRYPT_INFO contém todas as informações relevantes passadas entre o CryptMsgControl e as funções instaláveis do OID ( identificador de objeto ) para a importação e descriptografia de uma CEK (chave de criptografia de conteúdo) de CNG (Cryptography API: Next Generation). A função CryptMsgControl usa essa estrutura para chamar as seguintes funções:

Sintaxe

typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO {
  DWORD                      cbSize;
  CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
  PFN_CMSG_ALLOC             pfnAlloc;
  PFN_CMSG_FREE              pfnFree;
  NCRYPT_KEY_HANDLE          hNCryptKey;
  BYTE                       *pbContentEncryptKey;
  DWORD                      cbContentEncryptKey;
  BCRYPT_KEY_HANDLE          hCNGContentEncryptKey;
  BYTE                       *pbCNGContentEncryptKeyObject;
} CMSG_CNG_CONTENT_DECRYPT_INFO, *PCMSG_CNG_CONTENT_DECRYPT_INFO;

Membros

cbSize

Contém o tamanho, em bytes, dessa estrutura.

ContentEncryptionAlgorithm

Uma estrutura CRYPT_ALGORITHM_IDENTIFIER que especifica o algoritmo usado para criptografar o conteúdo da mensagem e quaisquer parâmetros associados.

pfnAlloc

Um ponteiro para uma função instalável usada para alocar memória para qualquer membro atualizado.

pfnFree

Um ponteiro para uma função instalável usada para liberar memória alocada por pfnAlloc.

hNCryptKey

Um identificador para a chave privada CNG a ser usada para descriptografia do CEK contido no parâmetro pKeyTransDecryptPara ou no parâmetro pKeyAgreeDecryptPara da função PFN_CMSG_CNG_IMPORT_KEY_TRANS . As funções de retorno de chamada devem usar essa chave em vez daquela contida na estrutura DecryptPara porque essa estrutura pode conter um identificador HCRYPTPROV convertido.

pbContentEncryptKey

Usando o membro hNCryptKey , a função PFN_CMSG_CNG_IMPORT_KEY_TRANS deve atualizar esse membro descriptografando o CEK no parâmetro pKeyTransDecryptPara ou a função PFN_CMSG_CNG_IMPORT_KEY_AGREE deve atualizar esse membro descriptografando EncryptedKey no parâmetro pKeyAgreeDecryptPara . A memória desse membro deve ser alocada usando o membro pfnAlloc . A função PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY usará esses bytes como o segredo para gerar o membro hCNGContentEncryptKey . Mesmo para um erro, você deve liberar e zero qualquer memória alocada usando o membro pfnFree .

cbContentEncryptKey

A função PFN_CMSG_CNG_IMPORT_KEY_TRANS ou PFN_CMSG_CNG_IMPORT_KEY_AGREE deve atualizar esse membro com o tamanho, em bytes, do membro pbContentEncryptKey acima.

hCNGContentEncryptKey

A função PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY deve atualizar esse membro com o BCRYPT_KEY_HANDLE gerado a ser usado para descriptografia de conteúdo. Mesmo para um erro, você deve liberar esse identificador usando a função BCryptDestroyKey .

pbCNGContentEncryptKeyObject

A função PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY deve atualizar esse membro com a memória alocada pelo membro pfnAlloc a ser associada ao membro hCNGContentEncryptKey . Mesmo para um erro, você deve liberar e zero qualquer memória alocada usando o membro pfnFree .

Requisitos

   
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho wincrypt.h