BOOL WINAPI CPDeriveKey( HCRYPTPROV hProv, ALG_ID AlgId, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY * phKey );
Значение AlgId | Описание |
---|---|
CALG_G28147 | Ключ шифрования и/или имтозащиты данных по ГОСТ 28147-89. Впоследствии этот ключ может быть преобразован с помощью функции CPSetKeyParam() в ключ, на котором возможен экпорт/импорт других ключей. |
CALG_TLS1_ENC_KEY | Ключ шифрования на основе объекта TLS1_MASTER_HASH. |
CALG_TLS1_MAC_KEY | Ключ имитозащиты на основе объекта TLS1_MASTER_HASH. |
CALG_UECSYMMETRIC CALG_UECSYMMETRIC_EPHEM CALG_G28147 | Ключи различных типов на основе объекта CALG_UECMASTER_DIVERS. Если именованный ключевой контекст не содерхит ключа AT_UECSYMMETRICKEY, ключ CALG_UECSYMMETRIC заносится в ключевой контейнер. |
Значение dwFlags | Описание |
---|---|
CRYPT_EXPORTABLE | Если флаг установлен, то произведённый ключ может быть передан из криптопровайдера в ключевой блоб через функцию CPExportKey(). Если флаг не установлен, ключ не будет экспортируемым и будет доступен только в пределах текущей сессии приложению, которое создало этот ключ. Действие этого флага не распространяются на открытый ключ ключевых пары. |
CRYPT_SERVER | Если при работе с TLS флаг установлен, то создаётся ключ шифрования сервера, если не установлен - создаётся ключ шифрования клиента. |
Коды возврата | Описание |
---|---|
ERROR_INVALID_PARAMETER | Один из параметров содержит некорректное значение. Чаще всего это некорректный указатель. |
NTE_BAD_ALGID | Параметр AlgId определяет алгоритм, который не поддерживается криптопровайдером. |
NTE_BAD_FLAGS | Величина dwFlags имеет ошибочное значение. |
NTE_BAD_HASH | Дескриптор хэша ошибочен. |
NTE_NO_MEMORY | Криптопровайдер во время операции исчерпал память. |
NTE_FAIL | Ошибка при считывании данных из системного реестра. см. Дополнительные параметры и определения . |
Если на вход подаётся фиксированный набор данных, то функция создаёт один и тот же ключ. В этом случае создаваемый ключ можно использовать только для шифрования данных или экспорта ключей на ключевые носители. Использовать его для шифрования данных или экспорта ключей, помещаемых на диск или передаваемых по каналу связи, не рекомендуется.
Использование алгоритмов CALG_MD5, CALG_SHA_256, CALG_SHA_384, CALG_SHA_512 не входит в функционал СКЗИ КриптоПро CSP 3.9, относящийся к действию сертификата ФСБ.
Режимы шифрования, преобразования ключа, дополнения открытого текста до кратности блока, набор узлов замены для получаемого ключа устанавливаются такие же, как и для вновь созданного ключа (см. CPSetKeyParam()).
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.
Ядро ОС: Вместо неё используется аналогичная функция CPCDeriveKey .
CPDestroyKey() ,CPGenKey() ,CPDeriveKey в MS CSP ,CryptDeriveKey в MS CryptoAPI 2.0