КриптоПро CSP  

CPCHashData

Функция CPCHashData() передаёт данные указанному объекту функции хэширования.

DWORD CPCAPI CPCHashData(
  HCRYPTMODULE hCSP,
  HCRYPTPROV hProv,
  HCRYPTHASH hHash,
  CONST BYTE * pbData,
  DWORD dwDataLen,
  DWORD dwFlags
);

Аргументы

hCSP
[in] Указатель на таблицу функций криптопровайдера. Получается при помощи функции CPCCreateProvider()
hProv
[in] Дескриптор криптопровайдера. Получается при помощи функции CPCAcquireContext().
hHash
[in] Дескриптор объекта функции хэширования. Приложение получает этот дескриптор, используя функцию CPCCreateHash().
pbData
[in] Если значение dwFlags нулевое, указатель на буфер, содержащий данные для хэширования. Если установлен флаг CP_HASH_DATA_IOVEC указатель на массив структур CSP_iovec. См. Вектор ввода вывода .
dwDataLen
[in] Если значение dwFlags нулевое, число байтов хэшируемых данных. Если установлен флаг CP_HASH_DATA_IOVEC, число элементов массива CSP_iovec.
dwFlags
[in] Значения флагов. Параметр определяет способ обработки фрагмента данных в потоке. Нулевое значение соответствует хэшированию фрагмента данных потока, флаг CP_HASH_DATA_IOVEC соответствует обработке данных в форме вектора ввода/вывода. См. Вектор ввода вывода .

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

При успешном завершении функция возвращает 0 (S_OK), в противном случае возвращается соответствующий код ошибки (см. таблицу).
Коды возвратаОписание
ERROR_INVALID_PARAMETERОдин из параметров содержит некорректное значение. Чаще всего это некорректный указатель.
NTE_BAD_ALGIDКлюч сессии hKey определяет алгоритм, который данный криптопровайдер не поддерживает.
NTE_BAD_HASHДескриптор хэша ошибочен.
NTE_BAD_HASH_STATEБыла сделана попытка добавить данные к объекту функции хэширования, который уже отмечен как "закрытый".
NTE_BAD_KEYИспользуется алгоритм хэширования (CALG_G28147_IMIT, CALG_GR3413_2015_M_IMIT, CALG_GR3413_2015_K_IMIT), но сессионный ключ удалён прежде, чем действие хэширования завершено.
NTE_BAD_FLAGSВеличина dwFlags имеет значение, отличное от нулевого либо от CP_HASH_DATA_IOVEC.
NTE_BAD_LENВеличина dwDataLen при установленном флаге CP_HASH_DATA_IOVEC имеет значение, превосходящее CSP_UIO_MAXIOV.
NTE_FAILНарушение целостности ключей в ОЗУ.
SCARD_W_CANCELLED_BY_USERОперация хэширования отменена пользователем.
ERROR_MESSAGE_EXCEEDS_MAX_SIZEПопытка хэширования слишком большого блока данных.

Требования:

Ядро FreeBSD: 7/8/9 или выше
Ядро Linux: ядро 2.4.x/2.6.x/3.0.х/3.2.х или выше
Ядро Solaris: 10/11 или выше.
Ядро Windows 2000 или выше: Необходимо Windows 2000 SP4 или старше.

См. также

CPCCreateHash() ,CPCHashSessionKey() ,CPHashData в MS CSP World Wide Web link ,CryptHashData в MS CryptoAPI 2.0 World Wide Web link