Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2015(UTC) Сообщений: 17 Откуда: Ижевск Сказал(а) «Спасибо»: 3 раз
|
Код:
KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
keyStore.load(null, null);
String alias = null;
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
alias = aliases.nextElement();
}
if (alias == null) {
throw new CryptoProNoInitializedException();
}
try {
KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(password);
JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam);
X509Certificate certificate = (X509Certificate) entry.getCertificate();
......
Исключение выбрасывается на строке JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam);Код:NullPointerException:invalid null input
at ru.CryptoPro.JCP.KeyStore.JCPPrivateKeyEntry.<init>:-1
at ru.CryptoPro.JCSP.KeyStore.CSPStore.engineGetEntry:-1
at ru.CryptoPro.JCSP.KeyStore.MetaCSPStore.engineGetEntry:-1
at ru.CryptoPro.JCSP.KeyStore.JCSPMetaCSPStore.engineGetEntry:-1
at java.security.KeyStore.getEntry:644
at mypackage.addContainer:185
Проявляется не всегда, при попытке добавить тестовый сертификат, полученный клиентом. Возможно как-то некорректно был создан контейнер, какие могут быть причины такой ошибки? Тему с аналогичной проблемой смотрел, но как я понял там дефект проявлялся стабильно. Отредактировано пользователем 2 октября 2015 г. 18:54:48(UTC)
| Причина: Добавление информации.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. Автор: Ranzed Проявляется не всегда, при попытке добавить тестовый сертификат, полученный клиентом. Возможно как-то некорректно был создан контейнер, какие могут быть причины такой ошибки?
При попытке добавить или получить? Судя по коду - получить? Как происходит создание ключевого контейнера? С помощью JCSP? Попробуйте использовать просто PrivateKeyEntry. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2015(UTC) Сообщений: 17 Откуда: Ижевск Сказал(а) «Спасибо»: 3 раз
|
Добрый день! Прошу прощения за долгий ответ, забыл про эту тему. Ошибка возникала при попытке получить сертификат, что бы в дальнейшем проверить его отпечаток c проверяемым значением. В случае успешной проверки выполнение операции прекращалось, иначе - контейнер удалялся. Поэтому я написал "при добавлении" сертификата. Ключевая пара и сертификат генерировались при помощи тестового УЦ, ключевой контейнер формировался при помощи КриптоПро CSP (вкладка Сервис->Скопировать... и далее). Похожая ситуация вновь возникла при той же операции: Код:
KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
keyStore.load(null, null);
String alias = null;
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
alias = aliases.nextElement();
}
try {
KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(password);
JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam);
X509Certificate certificate = (X509Certificate) entry.getCertificate();
....
На keyStore.getEntry() возникает исключение Код:
UnsupportedOperationException:null
at ru.CryptoPro.JCSP.KeyStore.CSPStore.engineGetEntry:-1
at ru.CryptoPro.JCSP.KeyStore.MetaCSPStore.engineGetEntry:-1
at ru.CryptoPro.JCSP.KeyStore.JCSPMetaCSPStore.engineGetEntry:-1
at java.security.KeyStore.getEntry:644
at com.mypackage.addContainer:193
Сейчас развернут собственный УЦ, через него выданы сертификаты, ключевой контейнер формируется таким же образом. Версия КриптоПро CSP для Android на смартфоне последняя, 4.0.38674 Что подразумевается под использованием PrivateKeyEntry, просто приведение keyStore.getEntry(alias, protectedParam) к PrivateKeyEntry вместо JCPPrivateKeyEntry ? Проблема же возникает ещё до приведения результата к какому-то классу.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close