Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2015(UTC) Сообщений: 7 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png)
|
Имеется: - КриптоПро CSP 3.6.7491 - Java 1.8.0_60 - eToken PKI Client 5.1 SP1 (5.1.66.0) - Windows 7 SP1 64-разрядная Имеется ПО, написанное на Java, которое взаимодействует с подписью. Причем ПО работает с разными хранилищами и носителями. Но вот с данным рабочим местом возникает проблема: не видит алиасы в хранилище. Вот кусок кода, который это взаимодействие осуществляет: Код:
import java.security.KeyStore;
import java.security.KeyStoreException;
private static KeyStore floppyStore;
//StoreName = OCFStore
//keyPassword = пароль
//certFilename = имя файла сертификата
public static String createSignature(String StoreName, String keyPassword)
{
KeyStore keyStore = getFloppyStore(StoreName,keyPassword);
Enumeration aliases = keyStore.aliases();
String alias = getAlias(certFilename);
if (alias == null) {
while (aliases.hasMoreElements())
{
//В цикл уже не попадает...
alias = (String)aliases.nextElement();
...
}
public static KeyStore getFloppyStore(String StoreName, String keyPassword)
{
floppyStore = KeyStore.getInstance(StoreName);
if (floppyStore != null)
{
if (keyPassword == null) {
floppyStore.load(null, null);
}
else {
floppyStore.load(null, keyPassword.toCharArray());
}
}
}
public static String getAlias(String fileoralias)
throws KeyStoreException
{
if (fileoralias == null) return null;
Enumeration aliasesEnum = floppyStore.aliases();
String result = null;
while (aliasesEnum.hasMoreElements()) {
String alias = aliasesEnum.nextElement().toString();
if (alias.indexOf(fileoralias)!= -1) {
result = alias;
break;
}
}
return result;
}
При вызове createSignature("OCFStore","пароль") доходит до перебора алиасов в хранилище, но перебирать нечего: aliases.hasMoreElements() возвращает false. В чем может быть проблема? Может дело в КриптоПро? Или в носителе? В Панели настроек КриптоПро носитель видится, открывается.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Здравствуйте. А JCP какая версия? Если убрать "Enumeration aliases = keyStore.aliases();" в строке 14, то заходит в цикл? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2015(UTC) Сообщений: 7 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png)
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Здравствуйте. А JCP какая версия? Если убрать "Enumeration aliases = keyStore.aliases();" в строке 14, то заходит в цикл? Версия JCP: 2.0.37538 Если убрать "Enumeration aliases = keyStore.aliases();", то будет ошибка компиляции, т.к. в строке 18 идет обращение к aliases, которая не определена: Код:while (aliases.hasMoreElements())
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Я имел в виду так временно модифицировать код, чтобы перечисление выполнялось один раз, допустим, в getAlias(). Отредактировано пользователем 22 октября 2015 г. 12:19:57(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2015(UTC) Сообщений: 7 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png)
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Я имел в виду так временно модифицировать код, чтобы перечисление выполнялось один раз, допустим, в getAlias(). Не совсем понимаю. Если речь идет про мой метод в строке 39: Код:public static String getAlias(String fileoralias)
то он возвращает null. Поэтому и заходит по условию в строке 17: Если речь идет про какой-то другой, встроенный метод, то поясните, пожалуйста.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
"Enumeration aliases = keyStore.aliases();" - aliases что-нибудь содержит, если смотреть в отладке? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2015(UTC) Сообщений: 7 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png)
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) "Enumeration aliases = keyStore.aliases();" - aliases что-нибудь содержит, если смотреть в отладке? Полноценно (через IDE) отладку запустить не могу, т.к. это делается на клиенте. Но вывод в лог дает такой результат: Код:java.util.Collections$3@7fe4568
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2015(UTC) Сообщений: 7 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png)
|
afev Может можно другими средствами КриптоПро проверить работоспособность? Может что-то не до конца установлено или не так установлено?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Выведите первое же перечисление алиасов, видимо, "Enumeration aliases = keyStore.aliases();". Вероятно, оно просто пустое, список контейнеров отсутствует. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2015(UTC) Сообщений: 7 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png)
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Выведите первое же перечисление алиасов, видимо, "Enumeration aliases = keyStore.aliases();". Не совсем понимаю фразу. Значение aliases я выводил ранее: Код:java.util.Collections$3@7fe4568
Вызов: Код:aliases.hasMoreElements()
дает false Вызов: Дает, соответственно, ошибку. Цитата:Вероятно, оно просто пустое, список контейнеров отсутствует. Если программно список контейнеров пуст, а в Панели настроек КриптоПро носитель открывается, то в чем может быть дело? Отредактировано пользователем 23 октября 2015 г. 11:31:38(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close