Функция CryptSignCertificate (wincrypt.h)
Функция CryptSignCertificate подписывает сведения о подписании в закодированном подписанном содержимом.
Синтаксис
BOOL CryptSignCertificate(
[in] BCRYPT_KEY_HANDLE hBCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] const BYTE *pbEncodedToBeSigned,
[in] DWORD cbEncodedToBeSigned,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] const void *pvHashAuxInfo,
[out] BYTE *pbSignature,
[in, out] DWORD *pcbSignature
);
Параметры
[in] hBCryptKey
Дескриптор CSP , который выполняет подпись. Этот дескриптор должен быть дескриптором HCRYPTPROV , который был создан с помощью функции CryptAcquireContext , или дескриптором NCRYPT_KEY_HANDLE , созданным с помощью функции NCryptOpenKey . Новые приложения всегда должны передавать дескриптор NCRYPT_KEY_HANDLE CSP CNG.
[in] dwKeySpec
Определяет закрытый ключ для использования из контейнера поставщика. Это может быть AT_KEYEXCHANGE или AT_SIGNATURE. Этот параметр игнорируется, если в параметре hCryptProvOrNCryptKey используется NCRYPT_KEY_HANDLE.
[in] dwCertEncodingType
Указывает используемый тип кодирования. Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
В настоящее время определены следующие типы кодирования:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pbEncodedToBeSigned
Указатель на закодированное содержимое для подписи.
[in] cbEncodedToBeSigned
Размер закодированного содержимого pbEncodedToBeSigned в байтах.
[in] pSignatureAlgorithm
Указатель на структуру CRYPT_ALGORITHM_IDENTIFIER с элементом pszObjId , равным одному из следующих элементов:
- szOID_RSA_MD5RSA
- szOID_RSA_SHA1RSA
- szOID_X957_SHA1DSA
- szOID_RSA_SSA_PSS
- szOID_ECDSA_SPECIFIED
[in] pvHashAuxInfo
В настоящий момент не используется. Должно иметь значение NULL.
[out] pbSignature
Указатель на буфер для получения хэша со знаком содержимого.
Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.
[in, out] pcbSignature
Указатель на DWORD , содержащий размер (в байтах) буфера, на который указывает параметр pbSignature . При возврате функции параметр DWORD содержит количество байтов, хранящихся или хранимых в буфере.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение не равно нулю (TRUE).
Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE). Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
Код возврата | Описание |
---|---|
|
Если буфер, заданный параметром pbSignature , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbSignature. |
|
Идентификатор объекта (OID) алгоритма подписи не сопоставляет с известным или поддерживаемым хэш-алгоритмом. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |