КриптоПро CSP  

CPCDuplicateKey

Функция CPCDuplicateKey() создает точную копию заданного ключа, включая все его переменные, определяющие внутреннее состояние ключа (например, вектор IV).

DWORD CPCAPI CPCDuplicateKey(
  HCRYPTMODULE hCSP,
  HCRYPTPROV hProv,
  HCRYPTKEY hKey,
  DWORD * pdwReserved,
  DWORD dwFlags,
  HCRYPTKEY * phKey
);

Аргументы

hCSP
[in] Указатель на таблицу функций криптопровайдера. Получается при помощи функции CPCCreateProvider()
hProv
[in] Дескриптор криптопровайдера. Получается при помощи функции CPCAcquireContext().
hKey
[in] Дескриптор исходного (копируемого) ключа. Возможно дублирование только ключей класса ALG_CLASS_DATA_ENCRYPT (см. CryptGetProvParam в MS CryptoAPI 2.0 World Wide Web link ).
pdwReserved
[in] Параметр зарезервирован для будущего использования и должен быть NULL.
dwFlags
[in] Параметр зарезервирован для будущего использования и должен быть нулевым.
phKey
[out] Адрес, по которому функция возвращает дескриптор скопированного ключа.

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

При успешном завершении функция возвращает 0 (S_OK), в противном случае возвращается соответствующий код ошибки (см. таблицу).
Коды возвратаОписание
ERROR_INVALID_PARAMETERОдин из параметров содержит некорректное значение. Чаще всего это некорректный указатель.
NTE_BAD_KEYДескриптор исходного ключа ошибочен.
NTE_BAD_FLAGSПараметр dwFlags имеет ненулевое значение.

Требования:

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

См. также

CPCDestroyKey() ,CPDuplicateKey в MS CSP World Wide Web link ,CryptDuplicateKey в MS CryptoAPI 2.0 World Wide Web link