Функция
CPDuplicateKey() создаёт точную копию заданного ключа, включая все его переменные, определяющие внутреннее состояние ключа (вектор IV, режим шифрования, режим преобразования, режим дополнения, набор узлов замены и прочее).
BOOL WINAPI CPDuplicateKey(
HCRYPTPROV hProv,
HCRYPTKEY hKey,
DWORD * pdwReserved,
DWORD dwFlags,
HCRYPTKEY * phKey
);
Аргументы
- hProv
- [in] Дескриптор криптопровайдера. Получается при помощи функции CPAcquireContext().
- hKey
- [in] Дескриптор исходного (копируемого) ключа. Возможно дублирование только ключей класса ALG_CLASS_DATA_ENCRYPT (см. CryptGetProvParam в MS CryptoAPI 2.0 ).
- pdwReserved
- [in] Параметр зарезервирован для будущего использования и должен быть NULL.
- dwFlags
- [in] Параметр зарезервирован для будущего использования и должен быть нулевым.
- phKey
- [out] Адрес, по которому функция возвращает дескриптор скопированного ключа.
Возвращаемые значения
При успешном завершении функция возвращает TRUE, в противном случае возвращается FALSE. Если возвращается FALSE, соответствующий код ошибки (см. таблицу) может быть получен через функцию GetLastError().
Коды возврата | Описание |
---|
ERROR_INVALID_PARAMETER | Один из параметров содержит некорректное значение. Чаще всего это некорректный указатель. |
NTE_BAD_KEY | Дескриптор исходного ключа ошибочен. |
NTE_BAD_FLAGS | Параметр dwFlags имеет ненулевое значение. |
Требования:
AIX: 5/6/7 или выше.
FreeBSD: 7/8/9 или выше.
Linux: LSB 3.1 (RHEL 4, SuSE 10) или выше.
Solaris: 10 или выше.
Mac OSX: 10.7/8 или выше.
iOS: 6/7 или выше.
Windows 2000 или выше: Необходимо Windows 2000 SP4 или старше с Internet Explorer 6.0 или старше.
Файл описания: Прототип описан в файле CSP_WinCrypt.h.
Ядро ОС: Вместо неё используется аналогичная функция CPCDuplicateKey .
См. также
CPDestroyKey() ,CPDuplicateKey в MS CSP ,CryptDuplicateKey в MS CryptoAPI 2.0