Поделиться через


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

Функция CryptSignMessageWithKey подписывает сообщение с помощью закрытого ключа CSP, указанного в параметрах. Создается заполнитель SignerId , который сохраняется в сообщении.

Синтаксис

BOOL CryptSignMessageWithKey(
  [in]      PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara,
  [in]      const BYTE                   *pbToBeSigned,
  [in]      DWORD                        cbToBeSigned,
  [out]     BYTE                         *pbSignedBlob,
  [in, out] DWORD                        *pcbSignedBlob
);

Параметры

[in] pSignPara

Указатель на структуру CRYPT_KEY_SIGN_MESSAGE_PARA , содержащую параметры сигнатуры.

[in] pbToBeSigned

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

[in] cbToBeSigned

Количество элементов массива в буферном массиве pbToBeSigned .

[out] pbSignedBlob

Указатель на буфер для получения закодированного подписанного сообщения.

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

[in, out] pcbSignedBlob

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

Примечание При обработке возвращаемых данных приложения должны использовать фактический размер возвращаемых данных. Фактический размер может быть немного меньше размера буфера, указанного на входных данных. (На входных данных размеры буфера обычно указываются достаточно большими, чтобы убедиться, что в буфере помещаются самые большие выходные данные.) В выходных данных переменная, на которую указывает этот параметр, обновляется с учетом фактического размера данных, скопированных в буфер.
 

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

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

Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE).

Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.

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

Код возврата Описание
ERROR_MORE_DATA
Если буфер, заданный параметром pbSignedBlob , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbSignedBlob.
E_INVALIDARG
Недопустимый тип кодирования сообщений . В настоящее время поддерживается только PKCS_7_ASN_ENCODING. CbSize в *pSignPara является недопустимым.
CRYPT_E_NO_KEY_PROPERTY
PSigningCert в *pSignPara не имеет свойства CERT_KEY_PROV_INFO_PROP_ID или CERT_KEY_CONTEXT_PROP_ID.

Требования

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