Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2016(UTC) Сообщений: 108
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Здравствуйте! Я уже голову сломал - в чем может быть дело. Алиас, хранилище, сертификат - все видит. Система Linux x64, JCP , JDK7 Цитата:... java.security.ProviderException at ru.CryptoPro.JCP.KeyStore.u.g(Unknown Source) at ru.CryptoPro.JCP.KeyStore.u.b(Unknown Source) at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineGetKey(Unknown Source) at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineGetKey(Unknown Source) at java.security.KeyStore.getKey(KeyStore.java:804) ... Доступ к папке .systemPref есть. Использую тестовый сертификат Отредактировано пользователем 28 апреля 2016 г. 11:15:49(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Здравствуйте. Приведите фрагмент кода. Какой тип хранилища? HDImageStore? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2016(UTC) Сообщений: 108
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Здравствуйте. Приведите фрагмент кода. Какой тип хранилища? HDImageStore? Да HDImageStore. Цитата:... PrivateKey privateKey = getPrivateKey(keyStore, certificate, keyPassword, certFilename); if (privateKey == null) { throw new RuntimeException("Не найден закрытый ключ"); } Document document = XmlUtils.deserialize(xmlFragment); ... ... Цитата:private static PrivateKey getPrivateKey(KeyStore keyStore, X509Certificate certificate, String password, String certFilename) throws KeyStoreException, CertificateEncodingException, NoSuchAlgorithmException, UnrecoverableKeyException { PrivateKey result = null; Enumeration aliases = keyStore.aliases(); String alias = JcpUtils.getAlias(certFilename); if (alias == null) { while (aliases.hasMoreElements()) { alias = (String)aliases.nextElement();
if (keyStore.isKeyEntry(alias)) { Key key = getKey(keyStore, alias, password); if (key instanceof PrivateKey) { result = (PrivateKey)key; X509Certificate floppyCertificate = (X509Certificate)keyStore.getCertificate(alias);
if (floppyCertificate != null) { if (Arrays.equals(certificate.getEncoded(), floppyCertificate.getEncoded())) return result; else result = null; } } } } } else { if (keyStore.isKeyEntry(alias)) { Key key = getKey(keyStore, alias, password); if (key instanceof PrivateKey) { result = (PrivateKey)key; X509Certificate floppyCertificate = (X509Certificate)keyStore.getCertificate(alias);
if (floppyCertificate != null) { if (Arrays.equals(certificate.getEncoded(), floppyCertificate.getEncoded())) return result; else result = null; } } } } if ((keyStore.size() == 1) && (result != null)) return result; else return null; } на getKey ломается. P.S.: только заметил что попадает в Цитата:if (alias == null) { но если перебирать Цитата:String alias1 = ""; try { Enumeration aliases = KeyStore.aliases(); while (aliases.hasMoreElements()) { String alias = (String)aliases.nextElement(); System.out.print("alias: " + alias); System.out.println(""); } } выводит Имя которое я и заводил Отредактировано пользователем 28 апреля 2016 г. 11:43:50(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: lartok ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) String alias = JcpUtils.getAlias(certFilename); ... Key key = getKey(keyStore, alias, password);
Что за функции JcpUtils.getAlias и getKey? И как создается/инициализируется keyStore в коде? Отредактировано пользователем 28 апреля 2016 г. 11:54:22(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2016(UTC) Сообщений: 108
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Автор: lartok ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) String alias = JcpUtils.getAlias(certFilename); ... Key key = getKey(keyStore, alias, password);
Что за функции JcpUtils.getAlias и getKey? И как создается/инициализируется keyStore в коде? Цитата:private static KeyStore KeyStore; ... public static String getAlias(String fileoralias) throws KeyStoreException { if (fileoralias == null) return null; Enumeration aliasesEnum = KeyStore.aliases(); String result = null; while (aliasesEnum.hasMoreElements()) { String alias = aliasesEnum.nextElement().toString(); if (alias.indexOf(fileoralias)!= -1) { result = alias; break; } } return result; } Цитата:private static Key getKey(KeyStore keyStore, String Alias, String Password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException { Key key; if (Password != null) { key = keyStore.getKey(Alias, Password.toCharArray()); } else { key = keyStore.getKey(Alias, null); } return key; } KeyStore.getInstance("HDImageStore");
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
keyStore.load(null, null) при этом вызывается после KeyStore keyStore = KeyStore.getInstance("HDImageStore");? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2016(UTC) Сообщений: 108
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) keyStore.load(null, null) при этом вызывается после KeyStore keyStore = KeyStore.getInstance("HDImageStore");? Alias получаю не null - пробовал и keyStore.load(null, null) и без. Разницы нет. Цитата:at java.security.KeyStore.getKey(KeyStore.java:804) Команда csptest -keyset -enum_cont -verifycontext -fqcn контейнер выводит Команда Перечисление контейнеров компьютера: csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys Контейнеров не выводит. Может в настройке КриптоПро JCP я где-то ошибся. Отредактировано пользователем 28 апреля 2016 г. 13:04:37(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Можете проверить так (3 строчки): Код:
KeyStore keyStore = KeyStore.getInstance("HDImageStore");
keyStore.load(null, null);
Key key = keyStore.getKey(<alias>, <password>);
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2016(UTC) Сообщений: 108
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Можете проверить так (3 строчки): Код:
KeyStore keyStore = KeyStore.getInstance("HDImageStore");
keyStore.load(null, null);
Key key = keyStore.getKey(<alias>, <password>);
Просто 3 строки Цитата: java.security.KeyStoreException: HDImageStore not found at java.security.KeyStore.getInstance(KeyStore.java:628) с Инициализацией Цитата: ru.CryptoPro.JCP.JCP jcp = new ru.CryptoPro.JCP.JCP(); if (Security.getProvider(jcp.getName()) == null) { Security.addProvider(jcp); } if (!ru.CryptoPro.JCPxml.xmldsig.JCPXMLDSigInit.isInitialized()) { ru.CryptoPro.JCPxml.xmldsig.JCPXMLDSigInit.init(); } if (!Init.isInitialized()) { Init.init(); } Цитата: java.security.ProviderException at ru.CryptoPro.JCP.KeyStore.u.g(Unknown Source) at ru.CryptoPro.JCP.KeyStore.u.b(Unknown Source) at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineGetKey(Unknown Source) at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineGetKey(Unknown Source) at java.security.KeyStore.getKey(KeyStore.java:804)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: lartok ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) ru.CryptoPro.JCP.JCP jcp = new ru.CryptoPro.JCP.JCP(); if (Security.getProvider(jcp.getName()) == null) { Security.addProvider(jcp); } У вас JCP установлен? Он должен быть установлен в jre/lib/ext. Если нет (просто скопирован в виде jar и загружается с помощью addProvider), то корректность функционирования не гарантируется. Попробуйте установить jcp в jre и выполнить консольное приложение с теми 3-мя строчками кода - ключ должен загрузится. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close