Крипто-Про CSP

CPEncrypt

Функция CPEncrypt() производит зашифрование данных. Одновременно может быть произведено их хеширование.

BOOL WINAPI CPEncrypt(
  HCRYPTPROV hProv,
  HCRYPTKEY hKey,
  HCRYPTHASH hHash,
  BOOL Final,
  DWORD dwFlags,
  BYTE * pbData,
  DWORD * pdwDataLen,
  DWORD dwBufLen
);

Аргументы

hProv
[in] Дескриптор криптопровайдера. Получается при помощи функции CPAcquireContext().
hKey
[in] Дескриптор ключа сессии, используемого для зашифрования данных.
hHash
[in] Дескриптор объекта функции хеширования. Если значение хеш-функции не вычисляется, этот параметр равен нулю.
Final
[in] Булева величина. Определяет, является ли переданный функции блок последним зашифрованным блоком данных. Она должна быть установлена TRUE, если это последний (или единственный) блок, и FALSE – в противнустановленного в реестре флага равноом случае.
dwFlags
[in] Значения флагов. Параметр зарезервирован для будущего использования и должен быть нулевым.
pbData
[in/out] Указатель на буфер, содержащий данные для зашифрования. После зашифрования зашифрованные данные помещаются в этот же буфер.
pdwDataLen
[in/out] Указатель на буфер, содержащий длину данных. Параметр dwDataLen определяет число байтов открытого текста в буфере pbData . Через этот параметр функция возвращает указатель на число байтов шифртекста, помещенного в буфер pbData .
dwBufLen
[in] Размер установленного в реестре флага равнобуфера pbData в байтах.

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

При успешном завершении функция возвращает TRUE, в противном случае возвращается FALSE. Если возвращается FALSE, соответствующий код ошибки (см. таблицу) может быть получен через функцию GetLastError().
Коды возврата Описание
NTE_BAD_ALGID Ключ hKey определяет алгоритм, который данный криптопровайдер не поддерживает.
NTE_BAD_FLAGS Величина dwFlags имеет ненулевое значение.
NTE_BAD_DATA Данные для зашифрования недействительны. В частности, в блочных режимах шифрования, если Final = FALSE, а длина шифруемого текста не кратна длине блока шифрования, возвращается данная ошибка.
NTE_BAD_KEY Ключ недействителен. В частности, эта ошибка возвращается, если на ключе в состоянии CRYPT_SIMPLEMIX_MODE зашифровано более 10**12 бит текста.
NTE_BAD_LEN Размер буфера недостаточен для помещения в него шифртекста.
ERROR_MORE_DATA Размер буфера pbData не достаточен для копирования затребованных данных.
NTE_PERM Право зашифрования на данном ключе криптопровайдером не предоставлено.
NTE_FAIL Нарушение целостности ключей в ОЗУ. см. Дополнительные параметры и определения .

Требования:

Windows 2000/XP/2003: Необходимо Windows 2000 SP4 или старше с Internet Explorer 6.0 или старше.
Windows NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP 2.0 World Wide Web link ).
Solaris: 9 Update 4 или выше.
FreeBSD: FreeBSD 5.2 или выше
Linux: RedHat 7.3, RedHad 9.0.
Файл описания: Прототип описан в файле wincsp.h.
Ядро Windows NT: IRQL < DISPATCH_LEVEL

См. также:

CPDecrypt() ,CPGenKey() ,CPEncrypt в MS CSP World Wide Web link ,CryptEncrypt в MS CryptoAPI 2.0 World Wide Web link

Крипто-Про CSP Версия: 3.0 Сборка 3293
Что Вы думаете по поводу данной статьи?
Закажите CD c Крипто-Про CSP