КриптоПро CSP  

Основные отличия интерфейса КриптоПро CSP версии 4.0 от версии 3.6

Основные отличия интерфейса КриптоПро CSP версии 4.0 от версии 3.6.

В данном разделе приведена краткая справка об основных изменениях в СКЗИ КриптоПро CSP при работе с уровня CryptoAPI 1.0.

Три типа провайдера

Основным отличием СКЗИ КриптоПро CSP версии 4.0 от предыдущих версий является поддержка стандартов ГОСТ Р 34.11-2012 (алгоритм хэширования) и ГОСТ Р 34.10-2012 (алгоритмы формирования и проверки электронной подписи), потребовавшая введения двух новых типов провайдера (PROV_GOST_2012_256 и PROV_GOST_2012_512) в дополнение к ранее существовавшему PROV_GOST_2001_DH. При создании контекста с помощью вызова функции CPAcquireContext() тип провайдера должен быть указан в поле dwProvType структуры PVTABLEPROVSTRUC.

Соответствие между типами провайдера и алгоритмами долговременных ключевых пар

Тип провайдера, указанный при создании контекста, однозначным образом определяет алгоритмы ключевых пар, сохраняемых в контейнере.

Соответствие между типом провайдера и параметрами шифрования

Тип провайдера также определяет набор узлов замены алгоритма шифрования ГОСТ 28147-89, используемый по умолчанию.

Отличия в использовании ключей алгоритмов ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012

При использовании ключей алгоритмов ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012 существуют следующие отличия.

Установка параметров ключей алгоритмов электронной подписи и Диффи-Хеллмана

Идентификаторы параметров долговременных и эфемерных ключей электронной подписи и Диффи-Хеллмана, соответствующих используемому типу провайдера, могут быть установлены и/или получены с использованием функций CPGetProvParam() / CPSetProvParam() и CPSetKeyParam() / CPGetKeyParam() с флагами PP_SIGNATUREOID/PP_DHOID и KP_DHOID соответственно. Для создания эфемерных ключей, не соответствующих используемому типу провайдера, с необходимыми параметрами необходимо сначала устанавливать данные параметры явным образом с использованием функции SetKeyParam с параметром KP_DHOID, после чего выработать значение ключа с помощью функции CPSetKeyParam() с параметром KP_X. Внимание! Параметры эфемерных ключей, не соответствующих типу провайдера, по умолчанию не определены.