Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123
Опции
К последнему сообщению К первому непрочитанному
Offline Anton Petrov  
#21 Оставлено : 22 февраля 2019 г. 12:57:22(UTC)
Anton Petrov

Статус: Участник

Группы: Участники
Зарегистрирован: 06.03.2017(UTC)
Сообщений: 15

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Вывод:
Offline Евгений Афанасьев  
#22 Оставлено : 22 февраля 2019 г. 13:00:24(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Соответственно, в коде KeyStore keyStore = KeyStore.getInstance("Aladdin eToken PRO USB 72K Java [Main Interface] 00 00", "JCSP"); ?

В ошибке было
Aladdin eToken PRO USB 72K Java [Main Interface] 01 00

Отредактировано пользователем 22 февраля 2019 г. 13:01:39(UTC)  | Причина: Не указана

Offline Anton Petrov  
#23 Оставлено : 22 февраля 2019 г. 13:51:26(UTC)
Anton Petrov

Статус: Участник

Группы: Участники
Зарегистрирован: 06.03.2017(UTC)
Сообщений: 15

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
В коде это выглядит так(это к тому, что наименование считывателя мы не явно указываем через строковый литерал, а получаем с помощью метода getNames()\getReaders()):
Код:
KeyStoreConfig.getInstance().load();
for (Object storeT : KeyStoreConfig.getInstance().getNames()) {
    KeyStore store = KeyStore.getInstance(String.valueOf(storeT), JCSP.PROVIDER_NAME);
    store.load(null, null);
    ...
}


С Exception-ом падает на том токене, который был добавлен "динамически" (после первого вызова getNames() или getReaders()). Но если при первом вызове getNames()/getReaders() токен уже был, то всё проходит корректно, при этом, даже если выткнуть токен и воткнуть другой(т.е. он получит такое же наименование считывателя), то считывание контейнеров проходит успешно.

Отредактировано пользователем 22 февраля 2019 г. 14:01:55(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#24 Оставлено : 22 февраля 2019 г. 14:03:38(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
И последнее -
KeyStoreConfig.getInstance().load() делается совместно с пересозданием JCSP (new JCSP())? Сначала new JCSP(), потом KeyStoreConfig.getInstance() можно без load() даже. Потому что в нем этот список тоже ведется и он перезагружается при пересоздании провайдера. Если сделать load() в коде, то в списке провайдера новых не будет (не будут зарегистрированы на этапе создания, т.к. load сделан снаружи без связи со списком KeyStore в провайдере).

Отредактировано пользователем 22 февраля 2019 г. 14:04:25(UTC)  | Причина: Не указана

thanks 2 пользователей поблагодарили Евгений Афанасьев за этот пост.
Anton Petrov оставлено 22.02.2019(UTC), est412 оставлено 22.02.2019(UTC)
Offline Anton Petrov  
#25 Оставлено : 22 февраля 2019 г. 14:29:56(UTC)
Anton Petrov

Статус: Участник

Группы: Участники
Зарегистрирован: 06.03.2017(UTC)
Сообщений: 15

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Спасибо! Всё работает как надо!

Таблетка:

Включить динамическое перестраивание списков:
Код:
/opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long dynamic_readers 1


В коде:
Код:
Provider jcsp = new JCSP();
Security.removeProvider(JCSP.PROVIDER_NAME);
Security.addProvider(jcsp);
for (Object storeT : KeyStoreConfig.getInstance().getNames()) {
    KeyStore store = KeyStore.getInstance(String.valueOf(storeT), JCSP.PROVIDER_NAME);
    store.load(null, null);
    ...    
}

Отредактировано пользователем 22 февраля 2019 г. 14:31:48(UTC)  | Причина: Не указана

thanks 2 пользователей поблагодарили Anton Petrov за этот пост.
est412 оставлено 22.02.2019(UTC), Eldar Gainutdinov оставлено 10.11.2021(UTC)
Offline Евгений Афанасьев  
#26 Оставлено : 22 февраля 2019 г. 14:30:47(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Скорее всего, KeyStoreConfig.getInstance().load(); не нужен тут, он делается при создании провайдера, в конструкторе.
Offline Anton Petrov  
#27 Оставлено : 22 февраля 2019 г. 14:36:05(UTC)
Anton Petrov

Статус: Участник

Группы: Участники
Зарегистрирован: 06.03.2017(UTC)
Сообщений: 15

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Так точно, без KeyStoreConfig.getInstance().load(); отработало корректно.
Поправил выше в коде.

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.