22.02.2007 16:30:33JCP Exception Ответов: 7
Павел
Подскажите, пожалуйста, возможные причины
java.io.NotSerializableException: ru.CryptoPro.JCP.Key.f

спасибо.
 
Ответы:
28.02.2007 14:01:41Иван
Секретный ключ нельзя скидывать в поток, это специально сделано, иначе какой же он секретный, если его в открытои виде можно куда-нибудь отправить.
02.03.2007 13:52:48Павел
спасибо!
02.03.2007 15:27:47Павел
Еще раз спасибо за ответ, но не могли бы вы привести конкрентный пример, приводящий к подобной ошибке?
02.03.2007 20:38:55Иван
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("GOST3410");
KeyPair pair = keyGen.generateKeyPair();
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("key"));
stream.writeObject(pair.getPrivate());
03.03.2007 13:43:22Павел
Спасибо за ответ. То, что объект секретного ключа не может быть сериализован, логично, не смотря на то, что это накладывает определенные ограничения на разработку распределенных приложений.
Но проблема в том, что NotSerializableException генерируется при попытке сериализации объекта открытого ключа:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("GOST3410");
KeyPair pair = keyGen.generateKeyPair();
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("key"));
stream.writeObject(pair.getPublic());

Почему нет возможности сериализовать объект открытого ключа, не совсем понятно. Используемая версия JCP 1.0.23.
07.03.2007 18:18:33Павел
Почему нельзя сериализовать объект открытого ключа? Это совершенно не понятно, ведь полностью его структуру (SPKI) можно получить вызовом метода getEncoded(), это же по определению открытая информация, что мешает объекту быть сериализуемым?
12.03.2007 20:00:38Иван
Сериализацию не делали потому что есть getEncoded(). Хранить открытые ключи в файле в явном виде - идея такая же плохая, как и с секретными. Но от этого не избавиться, такая уж Java.