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

Функция CryptMsgCountersignEncoded подписывает существующую подпись сообщения PKCS #7. Создаваемый буфер BYTE pbCountersignature — это signerInfo в кодировке PKCS #7, который можно использовать в качестве атрибута Countersignature без проверки подлинности сообщения PKCS #9 signed-data или signed-and-enveloped-data.

Синтаксис

BOOL CryptMsgCountersignEncoded(
  [in]      DWORD                    dwEncodingType,
  [in]      PBYTE                    pbSignerInfo,
  [in]      DWORD                    cbSignerInfo,
  [in]      DWORD                    cCountersigners,
  [in]      PCMSG_SIGNER_ENCODE_INFO rgCountersigners,
  [out]     PBYTE                    pbCountersignature,
  [in, out] PDWORD                   pcbCountersignature
);

Параметры

[in] dwEncodingType

Указывает используемый тип кодирования. В настоящее время используются только X509_ASN_ENCODING и PKCS_7_ASN_ENCODING; однако в будущем могут быть добавлены дополнительные типы кодирования. Для любого из текущих типов кодирования используйте:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbSignerInfo

Указатель на закодированный объект SignerInfo, который должен быть подсвечен.

[in] cbSignerInfo

Количество закодированных данных SignerInfo в байтах.

[in] cCountersigners

Число счетчиков в массиве rgCountersigners .

[in] rgCountersigners

Массив структур CMSG_SIGNER_ENCODE_INFO счетчиков.

[out] pbCountersignature

Указатель на буфер для получения закодированного атрибута контригнатуры PKCS #9.

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

[in, out] pcbCountersignature

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

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

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

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

В следующей таблице перечислены коды ошибок, наиболее часто возвращаемые функцией GetLastError .

Код возврата Описание
CRYPT_E_OID_FORMAT
Идентификатор объекта имеет неправильный формат.
E_INVALIDARG
Один или несколько аргументов являются недопустимыми.
E_OUTOFMEMORY
Не хватает памяти.
 

Распространенные ошибки могут быть возвращены одной из следующих функций:

Если функция завершается сбоем, GetLastError может вернуть ошибку кодирования и декодирования абстрактной синтаксической нотации 1 (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

Требования

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

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

CryptMsgCountersign

CryptMsgVerifyCountersignatureEncoded

Низкоуровневые функции сообщений

Упрощенные функции сообщений