BOOL WINAPI CPGetKeyParam( HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE * pbData, DWORD * pdwDataLen, DWORD dwFlags );
Значение dwParam | Содержимое буфера pbData |
---|---|
KP_ALGID | Идентификатор алгоритма (ALG_ID), соответствующий данному ключу. |
KP_PERMISSIONS | Флаги разрешения использования ключа. Возвращаются в виде переменной типа DWORD. |
KP_IV | Возвращает начальное значение вектора инициализации (IV или синхропосылки) алгоритма шифрования. Начальное значение синхропосылки изменяется на случайное по завершению функции CPEncrypt() с флагом Final == TRUE. |
KP_CERTIFICATE | Получение сертификата из контейнера (из носителя). |
KP_MODE | Режим алгоритма шифрования. Возвращается в виде переменной типа DWORD. Используются режимы шифрования:
|
KP_MODE_BITS | Глубина обратной связи. Возвращается в виде переменной типа DWORD. Значение этой величины равно 64, что соответствует режиму гаммирования с обратной связью ГОСТ 28147-89. |
KP_MIXMODE | Режим преобразования ключа. Возвращается в виде переменной типа DWORD. Используются режимы преобразования:
|
KP_KEYLEN | Длина ключа в битах. Возвращается в виде переменной типа DWORD. Для ключей шифрования в параметре pbData возвращается длина ключа, для ключевых пар возвращается длина открытого ключа. |
KP_BLOCKLEN | Длина блока шифрования, обрабатываемого криптопровайдером. Возвращается в виде переменной типа DWORD. В случае сессионного ключа если для ключа установлен режим блочного шифрованя (CRYPT_MODE_ЕСB, CRYPT_MODE_CBС), в параметре pbData устанавливается размер блока алгоритма ГОСТ 28147-89, если установлен режим поточного шифрования (CRYPT_MODE_CNT, CRYPT_MODE_CFB), в параметре pbData устанавливается значение оптимального с точки зрения скорости шифрования размера блока, принимаемого от приложения (в настоящее время 8Кбит). В случае ключевой пары в параметре pbData устанавливается число бит модуля q для ключей на базе эллиптической кривой (ГОСТ 34.10-2001). |
KP_CIPHEROID | Идентификатор узла замены, устанавливаемого приложением. Строковая величина с признаком конца строки. |
KP_DHOID | Идентификатор алгоритма Диффи-Хеллмана. Строка, заканчивающаяся нулем. |
KP_SIGNATUREOID | Идентификатор алгоритма подписи. Строка, заканчивающаяся нулем. |
KP_HASHOID | Идентификатор функции хэширования, устанавливаемой приложением. Строка, заканчивающаяся нулем. |
KP_DELTA | Возвращает значение дельты после установки на пользовательский ключ значение синхропосылки. Данные возвращаются в форме BLOB структуры, где pbData указавает на данные – 32 бйта дельты, а cbData передаёт длину данных. Специфика протокола ООО КриптоПро взаимодействия с функциональным ключевым носителем. |
Коды возврата | Описание |
---|---|
ERROR_INVALID_PARAMETER | Один из параметров содержит некорректное значение. Чаще всего это некорректный указатель. |
ERROR_MORE_DATA | Размер буфера pbData недостаточен для копирования затребованных данных. |
NTE_BAD_FLAGS | Параметр dwFlags имеет ненулевое значение. |
NTE_BAD_TYPE | Параметр dwParam передаёт неизвестное значение параметра. |
NTE_BAD_KEY | Дескриптор ключа ошибочен. |
NTE_PERM | Попытка чтения ключевых параметров, когда право чтения криптопровайдером не представлено. |
SCARD_E_NO_SUCH_CERTIFICATE | При попытке получения сертификата, когда сертификат отсутствует. |
Синхропосылка ключа для шифрования по алгоритму ГОСТ 28147-89 вырабатывается криптопровайдером автоматически с установкой типа ключа CALG28147 (сессионный ключ). Эту синхропосылку рекомендуется получить на передающем конце из ключа с помощью функции CPGetKeyParam() для значения pvParam KP_IV. На приёмном конце значение синхропосылки устанавливается на ключ функцией CPSetKeyParam() при значении pvParam KP_IV. Если требуется задание синхропосылки из приложения, то её рекомендуется вырабатывать с помощью функции CPGenRandom(). Использовать в системе другие алгоритмы образования синхропосылок можно только по согласованию с разработчиком криптопровайдера.
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/XP/2003/Vista/2008/7: Необходимо Windows 2000 SP4 или старше с Internet Explorer 6.0 или старше.
Файл описания: Прототип описан в файле CSP_WinCrypt.h.
Ядро ОС: Вместо неё используется аналогичная функция CPCGetKeyParam .
CPSetKeyParam() ,CPGetKeyParam в MS CSP ,CryptGetKeyParam в MS CryptoAPI 2.0