PFN_CMSG_EXPORT_KEY_AGREE função de retorno de chamada (wincrypt.h)

A função de retorno de chamada PFN_CMSG_EXPORT_KEY_AGREE criptografa e exporta a chave de criptografia de conteúdo para um destinatário de contrato de chave de uma mensagem enveloped. PFN_CMSG_EXPORT_KEY_AGREE pode ser instalado usando um OID (identificador de objetoCryptoAPI). Essa função é chamada pela função CryptMsgOpenToEncode quando seu parâmetro dwMsgType é definido como CMSG_ENVELOPED.

Sintaxe

PFN_CMSG_EXPORT_KEY_AGREE PfnCmsgExportKeyAgree;

BOOL PfnCmsgExportKeyAgree(
  [in]      PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
  [in]      PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,
  [in, out] PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,
  [in]      DWORD dwFlags,
            void *pvReserved
)
{...}

Parâmetros

[in] pContentEncryptInfo

Um ponteiro para uma estrutura CMSG_CONTENT_ENCRYPT_INFO que contém a chave de criptografia de conteúdo.

[in] pKeyAgreeEncodeInfo

Um ponteiro para uma estrutura CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO que especifica a chave usada para criptografar a chave de criptografia de conteúdo.

[in, out] pKeyAgreeEncryptInfo

Um ponteiro para uma estrutura CMSG_KEY_AGREE_ENCRYPT_INFO que contém a chave de criptografia de conteúdo criptografada.

[in] dwFlags

Este valor não é usado. Defina-o como zero.

pvReserved

Esse parâmetro é reservado e deve ser NULL.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).

Se a função falhar, o valor retornado será zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.

Comentários

Para cada chave de destinatário, a função PFN_CMSG_EXPORT_KEY_AGREE deve atualizar o membro EncryptedKey da estrutura CMSG_KEY_AGREE_KEY_ENCRYPT_INFO referenciada pelo membro rgpKeyAgreeKeyEncryptInfo da estrutura CMSG_KEY_AGREE_ENCRYPT_INFO apontada pelo parâmetro pKeyAgreeEncryptInfo . Essa função deve usar os membros pfnAlloc e pfnFree da estrutura CMSG_CONTENT_ENCRYPT_INFO apontada pelo parâmetro pContentEncryptInfo para gerenciar a memória de todos os valores que atualizar.

Se, após a entrada, o membro dwEncryptFlags da estrutura CMSG_CONTENT_ENCRYPT_INFO apontado pelo membro pContentEncryptInfo for definido como CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG, o membro PublicKey efêmero da estrutura CERT_PUBLIC_KEY_INFO referenciada pelo membro OriginatorPublicKeyInfo da estrutura CMSG_KEY_AGREE_ENCRYPT_INFO apontada pelo pKeyAgreeEncryptInfo O parâmetro deve ser preenchido com zeros para sempre obter o mesmo comprimento codificado máximo.

Nota O comprimento da chave pública Efêmera Y gerada pode variar dependendo do número de bits zero à esquerda.

 

Você pode usar as funções de suporte do OID para implantar essa função de retorno de chamada. Wincrypt.h define as seguintes constantes para essa finalidade.

Você deve definir diferentes funções de retorno de chamada para chaves CAPI1 e API de Criptografia: chaves CNG (próxima geração). Ambas as funções têm a mesma assinatura, mas usam OIDs diferentes. Qual função é chamada depende do valor do membro fCNG da estrutura CMSG_CONTENT_ENCRYPT_INFO apontada pelo parâmetro pContentEncryptInfo . A tabela a seguir mostra a relação entre a função de retorno de chamada e o valor do membro fCNG .

Valor fCNG Constante Definição
FALSE CMSG_OID_EXPORT_KEY_AGREE_FUNC ou CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree"
TRUE CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC "CryptMsgDllCNGExportKeyAgree"

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]
Plataforma de Destino Windows
Cabeçalho wincrypt.h