Крипто-Про CSP |
BOOL WINAPI CPGenKey( HCRYPTPROV hProv, ALG_ID AlgId, DWORD dwFlags, HCRYPTKEY * phKey );
Значение AlgId | Описание |
---|---|
CALG_G28147 | Ключ шифрования и/или имтозащиты данных по ГОСТ 28147-89. В последствии этот ключ можно пометить как ключ для импорта/экспорта с помощью функции CPSetKeyParam(). |
CALG_TLS1_MASTER | Специальный ключ для реализации протокола TLS. |
AlgId | Описание |
---|---|
CALG_DH_EX_EPHEM | Эфемерная ключевая пара на базе ГОСТ Р 34.10-94. Предназначена для обмена сессионными ключами. |
CALG_DH_EL_EPHEM | Эфемерная ключевая пара на базе ГОСТ Р 34.10-2001. Предназначена для обмена сессионными ключами. |
AlgId | Описание |
---|---|
AT_KEYEXCHANGE | Производится ключевая пара, сохраняемая в ключевом контейнере. Предназначена для обмена сессионными ключами и ЭЦП. В качестве алгоритма ключевой пары выбирается алгоритм по умолчанию для hProv , параметр PP_DHOID CPGetProvParam(). |
CALG_DH_EX_SF | Производится ключевая пара согласно ГОСТ Р 34.10-94, сохраняемая в ключевом контейнере. Предназначена для обмена сессионными ключами и ЭЦП. |
CALG_DH_EL_SF | Производится ключевая пара согласно ГОСТ Р 34.10-2001, сохраняемая в ключевом контейнере. Предназначена для обмена сессионными ключами и ЭЦП. |
AT_SIGNATURE | Производится ключевая пара, сохраняемая в ключевом контейнере. Предназначена для ЭЦП. В качестве алгоритма ключевой пары выбирается алгоритм по умолчанию для hProv , параметр PP_SIGNATUREOID функции CPGetProvParam(). |
CALG_GR3410 | Производится ключевая пара согласно ГОСТ Р 34.10-94, сохраняемая в ключевом контейнере. Предназначена для ЭЦП. Используется в криптопровайдере "КриптоПро ГОСТ Р 34.10-94 CSP" и эквивалентна AT_SIGNATURE. |
CALG_GR3410EL | Производится ключевая пара согласно ГОСТ Р 34.10-2001, сохраняемая в ключевом контейнере. Предназначена для ЭЦП.Используется в криптопровайдере "КриптоПро ГОСТ Р 34.10-2001 CSP" и эквивалентна AT_SIGNATURE. |
Значение dwFlags | Описание |
---|---|
CRYPT_EXPORTABLE | Если этот флаг установлен, то произведённый ключ может быть
передан из криптопровайдера в ключевой блоб через функцию CPExportKey(). Если этот флаг
не установлен, ключ не будет экспортируемым и будет доступен только
в пределах текущей сессии приложению, которое создало этот ключ.
Действие этого флага не распространяются на открытые ключи ключевых
пар. Экспорт закрытых ключей ключевых пар возможен только на эфемерных ключах и ключах с алгоритмом CALG_PRO_EXPORT. |
CRYPT_USER_PROTECTED | Если этот флаг установлен, то при любом запросе на доступ к носителю закрытого ключа пользователя выводится окно диалога, запрашивающего право доступа к ключу. |
CRYPT_PREGEN | Если этот флаг установлен, то генерируется "пустая" ключевая пара обмена. Параметры этой ключевой пары должны быть установлены с использованием функции CPSetKeyParam(). |
Коды возврата | Описание |
---|---|
NTE_BAD_ALGID | Параметр AlgId определяет алгоритм, не поддерживаемый криптопровайдером. Эта ошибка возвращается также в случае попытки генерации пользовательских ключей AT_KEYEXCHANGE и AT_SIGNATURE криптопровайдером, сертифицированным по уровню KC2 и выше, при отсутствии физического ДСЧ в составе СКЗИ. |
NTE_BAD_FLAGS | Величина dwFlags имеет ошибочное значение. |
NTE_NO_MEMORY | Криптопровайдер во время операции исчерпал память. |
NTE_FAIL | Ошибка при считывании данных из системного реестра. см. Дополнительные параметры и определения . |
SCARD_W_CANCELLED_BY_USER | Пользователь прервал операцию нажатием клавиши Cancel |
SCARD_W_WRONG_CHV | Пользователь ввел неправильный пароль или пароль, установленный функцией SetProvParam(), неправильный |
SCARD_E_INVALID_CHV | Пользователь ввел пароль с нарушением формата или пароль, установленный функцией SetProvParam(), имеет неправильный формат. Например, пароль имеет недопустимую длину или содержит недопустимые символы. |
SCARD_W_CHV_BLOCKED | Ввод Pin-кода был заблокирован смарт-картой, т.к. исчерпалось количество попыток разрешенное картой для ввода. |
NTE_TOKEN_KEYSET_STORAGE_FULL | Недостаточно места на носителе для сохранения информации. |
NTE_SILENT_CONTEXT | Операция не может быть выполнена без пользовательского интерфейса. |
SCARD_W_REMOVED_CARD | Носитель контейнера был удален из считывателя |
Если при запросе
функции CPAcquireContext() был
создан ключевой контейнер с признаком CRYPT_VERIFYCONTEXT,
прикладные программы не могут создавать долговременные ключевые
пары. В этом случае функция CPGenKey() возвращает код
ошибки NTE_PERM. Когда ключи порождаются для симметричного
шифрования, по умолчанию ключ будет установлен в шифратор в режиме
гаммирования с обратной связью (CFB) со случайным начальным
вектором. Эти параметры могут быть получены с использованием
функции CPSetKeyParam() и частично
изменены функцией CPSetKeyParam()
Функция CPGenKey()
получает ключ с програмного ДСЧ контекста криптопровайдера
hProv , который инициализируется при выполнении функции
CPAcquireContext() c
накопленного в контейнере ключевого носителя состояния ДСЧ и
установленного в системе физического ДСЧ. Криптопровайдер
"КриптоПро CSP-ECC/TLS" гарантирует инициализацию состояния ДСЧ
контейнера ключевого носителя с физического или, если нет
физического, с БиоДСЧ.
В случае, если контекст криптопровайдера открыт в режиме
CRYPT_VERIFYCONTEXT, и в системе не установлено физического ДСЧ,
программный ДСЧ инициализируется с накапливаемого в реестре
общесистемного состояния ДСЧ и накопленных состояний ДСЧ всех
открытых ранее контейнеров ключевых носителей в рамках времени
жизни разделяемой библиотеки КриптоПро CSP. Для гарантированной
инициализации программного ДСЧ с физического ДСЧ, в случае если
ранее не открывались контейнеры ключевых носителей, следует
использовать функцию CPSetProvParam() с
флагом PP_USE_HARDWARE_RNG.
ФункцияCPGenKey() при выработке долговременных ключевых пар всегда
использует физический ДСЧ. В случае, если контекст криптопровайдера
hProv открыт в режиме CRYPT_SILENT (запрет UI, необходимый
БиоДСЧ), и в системе не установлен физический ДСЧ, выдаётся
ошибка.
Windows
2000/XP/2003: Необходимо Windows 2000 SP4 или старше с Internet
Explorer 6.0 или старше.
Windows
NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP
2.0 ).
Solaris: 9
Update 4 или выше.
FreeBSD:
FreeBSD 5.2 или выше
Linux: RedHat
7.3, RedHad 9.0.
Файл описания:
Прототип описан в файле wincsp.h.
Ядро Windows
NT: IRQL < DISPATCH_LEVEL
Ядро ОС: При
использовании в ядре ОС CPGenKey допустимо вызывать только для
производства ключей сессии.
CPDestroyKey() ,CPExportKey() ,CPImportKey() ,CPGetKeyParam() ,CPSetKeyParam() ,CPReleaseContext() ,CPGenKey
в MS CSP ,CryptGenKey
в MS CryptoAPI 2.0
![]() |
Что Вы
думаете по поводу данной статьи? |
![]() |
Закажите CD c Крипто-Про CSP |