Функция 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 |