Статус: Новичок
Группы: Участники
Зарегистрирован: 02.08.2017(UTC) Сообщений: 5 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 5 раз
|
Добрый день. Тестирую работу через JCSP. Получаю две ошибки: 1. При работе через JCSP удается получить приватный ключ даже если ввели не правильный пароль. 2. Выполнение signature.sign() вызывает исключение java.security.SignatureException: Unsupported method. При использовании JCP не встречал таких проблем. Подскажите пожалуйста что я делаю не так? Код: String alias = ...;
KeyStore ks = KeyStore.getInstance("Aktiv Co. ruToken 0", "JCSP");
ks.load(null);
// Должен быть java.security.UnrecoverableKeyException, а его нет.
PrivateKey pk = (PrivateKey) ks.getKey(alias, "wrong".toCharArray());
// pk тут инициализирован, как будто пароль верен.
Signature signature = Signature.getInstance("GOST3411withGOST3410EL");
signature.initSign(pk);
signature.update("abc".getBytes());
// А здесь почему то получаем java.security.SignatureException: Unsupported method.
byte[] signData = signature.sign();
signature = Signature.getInstance("GOST3411withGOST3410EL", "JCSP");
signature.initVerify(ks.getCertificate(alias).getPublicKey());
signature.update("abc".getBytes());
System.out.println(signature.verify(signData));
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Автор: GreyGoblin ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Signature signature = Signature.getInstance("GOST3411withGOST3410EL"); Signature возьмется из того провайдера, который "выше" в списке провайдеров, вероятно, у вас это JCP. Укажите имя провайдера JCSP, как делаете далее в примере. |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.08.2017(UTC) Сообщений: 5 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 5 раз
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Здравствуйте. Автор: GreyGoblin ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Signature signature = Signature.getInstance("GOST3411withGOST3410EL"); Signature возьмется из того провайдера, который "выше" в списке провайдеров, вероятно, у вас это JCP. Укажите имя провайдера JCSP, как делаете далее в примере. Спасибо. Решив вторую проблему решилась и первая. Получается в случае с JCSP переданный пароль из java игнорируется до первой реальной попытки использования ключа, а уже когда до него дело доходит выводится нативное окошко CSP для ввода пароля и вот если пароль не введен правильно, то будет эксепшн по месту применения. Принцип понял, спасибо.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Чтобы сразу передать пароль, можно использовать getEntry/setEntry (они работает без окон). |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.08.2016(UTC) Сообщений: 2 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Чтобы сразу передать пароль, можно использовать getEntry/setEntry (они работает без окон). А можно поподробнее? Как зная пароль закрытого ключа (из настроек), использовать шифрование в фоновом режиме (без окон)? Отредактировано пользователем 5 апреля 2018 г. 17:44:14(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.08.2016(UTC) Сообщений: 2 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
разобрался: Код:
KeyStore tokenStore = KeyStore.getInstance(****);
tokenStore.load(null, null);
String keyStoreAlias = "my_container";
String privateKeyPassword = "qwerty1234";
PrivateKey responderKey = (PrivateKey)tokenStore.getKey(keyStoreAlias, null);
KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(privateKeyPassword.toCharArray());
KeyStore.Entry entry1 = hdImageStore.getEntry(keyStoreAlias, protectedParam);
hdImageStore.setEntry(keyStoreAlias, entry1, protectedParam);
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close