3.3.2 Работа с криптографическими функциями

Для работы с криптографическими функциями:

1. МП должно вызвать метод init (filesWithCheckSums).

2. МП должно вызвать метод initCryptoContext (storeId, userId):

a) МП должно передать уникальный идентификатор хранилища СКЗИ и уникальный идентификатор пользователя МП во входных параметрах функции ПМ;

b) требования к формированию идентификаторов зависят от особенностей реализации СКЗИ и ПМ;

c) при работе с хранилищем СКЗИ будет запрошена установка/ввод пароля;

d) для каждого пользователя может быть создано несколько защищенных хранилищ с доступом по паролю. Необходимость использования дополнительного усложненного пароля определяется МП в зависимости от вида выполняемой операции;

e) идентификаторы хранилищ СКЗИ должны быть уникальными для различных пользователей МП и различных сегментов хранилищ одного пользователя;

f) идентификатор пользователя МП должен быть уникальным;

g) МП определяет какой сегмент хранилища СКЗИ необходимо использовать для выполнения криптографической операции, а также формирует и хранит уникальный идентификатор сегмента хранилища;

h) сегмент хранилища СКЗИ для хранения транспортных сертификатов и сертификатов для проверки ЭП определяется разработчиком исходя из особенностей реализации СКЗИ и особенностей ПМ.

3. В случае использования МП и ПМ новым пользователем криптографические ключи, не принадлежащие ему, должны удаляться с использованием механизмов СКЗИ по гарантированному уничтожению ключей (подробнее см. в разделе 3.2.3.22).

4. После успешного создания защищенного сегмента хранилища МП получит от СКЗИ объект cryptContext, который будет использоваться для вызова криптографических функций в рамках одной сессии пользователя.

5. Объект cryptContext формируется на стороне СКЗИ и содержит информацию о состоянии и параметрах работы с криптографическим провайдером для выполнения операций криптографии и управления криптографическими ресурсами.

6. В случае завершения сессии пользователя или аварийного завершения работы МП или ПМ МП должно вызвать метод releaseContext (cryptoContext) и деинициализировать работу с хранилищем СКЗИ. Для продолжения работы с криптографическими функциями необходимо заново инициализировать хранилище СКЗИ.