Vipnet, Rutoken ЭЦП, Java
Здравствуйте!
Работаю с Рутокен ЭЦП - делаю авторизацию в Java приложении:
Пользователь открывает приложение, вводит логин/пароль, с сервера приходят определенные данные в формате xml, которые необходимо подписать и отправить обратно на сервер.
На Рутокене ЭЦП имеется контейнер с закрытым ключом(ГОСТ) и сертификатом. Контейнер на Рутокене создан с помощью VipNet CSP.
В примерах ViPNet JCrypto SDK имеется следующий кусок кода для работы с контейнерами:
// получение хранилища для работы с одним контейнером в формате ViPNet
KeyStore keyStore = KeyStore.getInstance(
"ViPNetContainer", // тип хранилища
"ViPNet" // название провайдера
);
// создание пустого хранилища
keyStore.load(null, null);
// подготовка потока ввода с данными ViPNet контейнера
InputStream inputStream = null;
// загрузка хранилища
keyStore.load(inputStream, null);
Но к сожалению нет примера работы с контейнерами, которые находятся на Рутокене. И нет информации как конкретно работать с Рутокеном.
В документации Руководство Разработчика отсюда имеется пример работы с KeyStore:
KeyStore keyStore = KeyStore.getInstance("rtStore", "JRT11");
keyStore.load(null, "12345678".toCharArray());
PrivateKey privateKey = (PrivateKey)keyStore.getKey("alias", null);
Но также имеется информация о том, что это работает только для ключей, создаваемых с помощью KeyPairGenerator
Провайдер JRT11 позволяет осуществлять извлечение ключа из хранилища через стандартный интерфейс JCA при помощи класса KeyStore. Операция извлечения используется для ключей, создаваемых с помощью класса KeyPairGenerator и записываемых сразу на Рутокен.
При попытке вызвать keyStore.getAliases() возвращается null. В целом хотелось бы иметь возможность достучаться до PrivateKey и до PublicKey, лежащих в контейнере на Рутокен с помощью Java и подписать/проверить необходимые данные(xml).
Имеются ли какие-нибудь примеры для работы с Рутокен ЭЦП + VipNet + Java?
PS. На текущий момент интересна работа с первым попавшимся контейнером на устройстве Рутокен.