Функция CryptMsgEncodeAndSignCTL (wincrypt.h)

Функция CryptMsgEncodeAndSignCTL кодирует CTL и создает подписанное сообщение, содержащее закодированный CTL.

Эта функция сначала кодирует CTL, на который указывает pCtlInfo , а затем вызывает CryptMsgSignCTL для подписи закодированного сообщения.

Синтаксис

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
);

Параметры

[in] dwMsgEncodingType

Указывает используемый тип кодирования. Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

В настоящее время определены следующие типы кодирования:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pCtlInfo

Указатель на структуру CTL_INFO , содержащую CTL для кодирования и подписи.

[in] pSignInfo

Указатель на структуру CMSG_SIGNED_ENCODE_INFO , содержащую массив CMSG_SIGNER_ENCODE_INFO структур.

Сообщение может быть закодировано без подписывателей, если для элемента cbSize структуры задан размер структуры, а для всех остальных элементов задано значение 0.

[in] dwFlags

CMSG_ENCODE_SORTED_CTL_FLAG устанавливается, если записи CTL необходимо отсортировать перед кодировкой. Этот флаг устанавливается, если будут вызваны функции CertFindSubjectInSortedCTL или CertEnumSubjectInSortedCTL .

CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG устанавливается, если задано CMSG_ENCODE_SORTED_CTL_FLAG, а идентификатором TrustedSubjects является хэш, например MD5 или SHA1.

Если определен CMS_PKCS7, dwFlags можно задать CMSG_CMS_ENCAPSULATED_CTL_FLAG для кодирования сообщения SignedData, совместимого с CMS версии 3.

[out] pbEncoded

Указатель на буфер, который получает созданное закодированное сообщение со знаком.

Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbEncoded

Указатель на DWORD , указывающий размер буфера pbEncoded (в байтах). При возврате функции значение DWORD содержит количество байтов, хранящихся или хранимых в буфере.

Возвращаемое значение

Если функция выполнена успешно, возвращается ненулевое значение (TRUE).

Если функция завершается сбоем, возвращаемое значение равно нулю (FALSE). Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Ошибки можно распространять из вызовов в CryptMsgOpenToEncode и CryptMsgUpdate.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CMSG_SIGNED_ENCODE_INFO

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

CryptMsgOpenToEncode

CryptMsgSignCTL

Функции проверки с помощью списков CCL