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 de identificador de objetoCryptoAPI (OID). 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

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

pvReserved

Esse parâmetro é reservado e deve ser NULL.

Valor de retorno

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

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

Observações

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 rgpKeyAgreeKeyEncryptInfo membro da estrutura CMSG_KEY_AGREE_ENCRYPT_INFO apontada pelo parâmetro pKeyAgreeEncryptInfo . Essa função deve usar os pfnAlloc e membros pfnFree da estrutura CMSG_CONTENT_ENCRYPT_INFO apontada pelo parâmetro pContentEncryptInfo para gerenciar a memória de todos os valores que ele atualiza.

Se, após a entrada, o membro dwEncryptFlags da estrutura CMSG_CONTENT_ENCRYPT_INFO apontado pelo membro pContentEncryptInfo está 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 parâmetro deve ser adicionado com zeros para sempre obter o mesmo comprimento codificado máximo.

Observação O comprimento da chave pública Efêmera gerada pode variar dependendo do número de bits zero à esquerda.

 

Você pode usar funções de suporte de 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 fCNG membro 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
falso CMSG_OID_EXPORT_KEY_AGREE_FUNC ou CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree"
verdadeiro CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC "CryptMsgDllCNGExportKeyAgree"

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho wincrypt.h