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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline YMakogon  
#1 Оставлено : 5 ноября 2014 г. 8:54:02(UTC)
YMakogon

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
В приложении реализовано шифрование и работа с ЭЦП с помощью CAdES API (jcp-2.0.37748)
Возникла проблема только с функцией шифрования.

Один и тотже код работает без ошибок в консольном приложении и юнит тестах.
Но не работает в приложении запущенном на Jetty или WebSphere.

При вызове функции signature.open(envelopedByteArrayOutStream) возникает ошибка:
Цитата:

Caused by: ru.CryptoPro.CAdES.exception.b: Unknown private key format
at ru.CryptoPro.CAdES.a.b.<init>(Unknown Source)
at ru.CryptoPro.CAdES.EnvelopedSignature.open(Unknown Source)

Пробовал генерировать ключи на ходу с помощью KeyPairGenerator, результат тот же.
Offline Евгений Афанасьев  
#2 Оставлено : 5 ноября 2014 г. 11:53:46(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
Попробуйте вывести содержимое ключей в строку.
Offline YMakogon  
#3 Оставлено : 5 ноября 2014 г. 12:30:46(UTC)
YMakogon

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
CryptoPro Gost PrivateKey (GOST3410DHEL) with parameters: 1.2.643.2.2.98
Скриншот параметров в дебаге на Jetty
Offline Евгений Афанасьев  
#4 Оставлено : 5 ноября 2014 г. 13:51:09(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
JCP и CAdES действительно указанной версии при выполнении примера? Ключ просто проходит проверку на instanceof.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
YMakogon оставлено 07.11.2014(UTC)
Offline YMakogon  
#5 Оставлено : 7 ноября 2014 г. 10:34:13(UTC)
YMakogon

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Да, JCP и CAdES указанной версии. Установлены в JRE.
Ошибка появилась из за того что данные библиотеки были включены в приложение (чтобы другие разработчики, которые не занимаются шифрованием, могли собирать проект без установки JCP и CAdES в JRE).
По какой-то причине они не исключались градлом из конечного war файла. В результате instanceof сравнивал классы разных класслоадеров и возвращал false. Ключ был экземпляром класса загруженого класслоадером приложения, а сравнивался с классом загруженного класслоадером JRE.

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