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

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

Синтаксис

BOOL CryptMsgSignCTL(
  [in]      DWORD                    dwMsgEncodingType,
  [in]      BYTE                     *pbCtlContent,
  [in]      DWORD                    cbCtlContent,
  [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] pbCtlContent

Закодированный CTL_INFO , который может быть членом структуры CTL_CONTEXT или может быть создан с помощью функции CryptEncodeObject .

[in] cbCtlContent

Размер (в байтах) содержимого, на который указывает pbCtlContent.

[in] pSignInfo

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

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

[in] dwFlags

Если определен CMS_PKCS7, можно задать значение 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

CryptMsgEncodeAndSignCTL

CryptMsgOpenToEncode

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