Compartilhar via


Função CryptMsgEncodeAndSignCTL (wincrypt.h)

A função CryptMsgEncodeAndSignCTL codifica uma CTL e cria uma mensagem assinada que contém a CTL codificada.

Essa função codifica primeiro a CTL apontada por pCtlInfo e, em seguida, chama CryptMsgSignCTL para assinar a mensagem codificada.

Sintaxe

BOOL CryptMsgEncodeAndSignCTL(
  [in]      DWORD                    dwMsgEncodingType,
  [in]      PCTL_INFO                pCtlInfo,
  [in]      PCMSG_SIGNED_ENCODE_INFO pSignInfo,
  [in]      DWORD                    dwFlags,
  [out]     BYTE                     *pbEncoded,
  [in, out] DWORD                    *pcbEncoded
);

Parâmetros

[in] dwMsgEncodingType

Especifica o tipo de codificação usado. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Os tipos de codificação definidos no momento são:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pCtlInfo

Um ponteiro para a estrutura CTL_INFO que contém a CTL a ser codificada e assinada.

[in] pSignInfo

Um ponteiro para uma estrutura CMSG_SIGNED_ENCODE_INFO que contém uma matriz de estruturas de CMSG_SIGNER_ENCODE_INFO .

A mensagem poderá ser codificada sem signatários se o membro cbSize da estrutura estiver definido como o tamanho da estrutura e todos os outros membros forem definidos como zero.

[in] dwFlags

CMSG_ENCODE_SORTED_CTL_FLAG será definido se as entradas CTL devem ser classificadas antes da codificação. Esse sinalizador será definido se as funções CertFindSubjectInSortedCTL ou CertEnumSubjectInSortedCTL forem chamadas.

CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG será definido se CMSG_ENCODE_SORTED_CTL_FLAG estiver definido e o identificador para TrustedSubjects for um hash, como MD5 ou SHA1.

Se CMS_PKCS7 for definido, dwFlags poderá ser definido como CMSG_CMS_ENCAPSULATED_CTL_FLAG para codificar uma mensagem V3 SignedData compatível com CMS.

[out] pbEncoded

Um ponteiro para um buffer que recebe a mensagem codificada e assinada criada.

Esse parâmetro pode ser NULL para definir o tamanho dessas informações para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbEncoded

Um ponteiro para um DWORD que especifica o tamanho, em bytes, do buffer pbEncoded . Quando a função retorna, o DWORD contém o número de bytes armazenados ou a serem armazenados no buffer.

Retornar valor

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. Erros podem ser propagados de chamadas para CryptMsgOpenToEncode e CryptMsgUpdate.

Requisitos

Requisito Valor
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
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

CMSG_SIGNED_ENCODE_INFO

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

Cryptmsgopentoencode

CryptMsgSignCTL

Funções de verificação usando CTLs