функция обратного вызова PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC (wincrypt.h)
Функция обратного вызова PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC вызывается для подписывания и кодирования вычисляемого хэша.
Синтаксис
PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC PfnCryptSignAndEncodeHashFunc;
BOOL PfnCryptSignAndEncodeHashFunc(
[in] NCRYPT_KEY_HANDLE hKey,
[in] DWORD dwCertEncodingType,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] void *pvDecodedSignPara,
[in] LPCWSTR pwszCNGPubKeyAlgid,
[in] LPCWSTR pwszCNGHashAlgid,
[in] BYTE *pbComputedHash,
[in] DWORD cbComputedHash,
[out] BYTE *pbSignature,
[in, out] DWORD *pcbSignature
)
{...}
Параметры
[in] hKey
Дескриптор для API шифрования: закрытый ключ следующего поколения (CNG), используемый для подписывания хэша.
[in] dwCertEncodingType
Указывает тип используемой кодировки. Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING в настоящее время определены следующие типы кодирования:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pSignatureAlgorithm
Указатель на структуру CRYPT_ALGORITHM_IDENTIFIER , содержащую идентификатор объекта сигнатуры (OID) и его необязательные закодированные параметры.
[in] pvDecodedSignPara
Необязательный указатель на структуру данных декодированных параметров сигнатуры, ранее возвращенную функцией PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC .
[in] pwszCNGPubKeyAlgid
Строка Юникода, содержащая идентификатор алгоритма открытого ключа CNG, соответствующий pSignatureAlgorithm-pszObjId>.
[in] pwszCNGHashAlgid
Строка Юникода, содержащая идентификатор хэш-алгоритма CNG, соответствующий pSignatureAlgorithm-pszObjId> или идентификатору хэш-алгоритма в pvDecodedSignPara.
[in] pbComputedHash
Указатель на вычисляемые хэш-байты, возвращаемые функцией BCryptFinishHash , которая соответствует pwszCNGHashAlgid.
[in] cbComputedHash
Значение типа , представляющее длину вычисляемого хэша (в байтах).
[out] pbSignature
Указатель на закодированные байты подписи.
[in, out] pcbSignature
Значение типа , представляющее длину закодированной сигнатуры в байтах.
Возвращаемое значение
Если функция выполняется успешно, функция возвращает ненулевое значение (TRUE).
Если функция завершается сбоем, она возвращает ноль (FALSE). Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.
Если эта функция обратного вызова не поддерживает алгоритм подписи, она должна возвращать значение FALSE и вызывать SetLastError с ERROR_NOT_SUPPORTED.
Комментарии
Для развертывания функции обратного вызова можно использовать функции поддержки OID . Wincrypt.h определяет для этой цели следующую константу.
Константа | Определение |
---|---|
CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC | "CryptDllSignAndEncodeHash" |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |