24.01.2006 13:53:38Отсутствие классов подписи в CryptoPro JCP Ответов: 1
Григорий
Пытаюсь создать класс Signature в JCP:
CryptoProvider cp = new CryptoProvider();
KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410DH", cp); //нет ошибки
Signature signature = Signature.getInstance("GOST3411withGOST3410EL", cp); //ошибка!!!

Почему так происходит и в каком дистрибутиве есть соответствующие имплементации.
 
Ответы:
24.01.2006 17:48:02Иван
Так происходит потому, что у CryptoPro два провайдера:
ru.CryptoPro.JCP.JCP - провайдер подписи;
ru.CryptoPro.Crypto.CryptoProvider - провайдер шифрования;
Реализация Signature для "GOST3411withGOST3410EL" лежит в первом.
Варианты исправления:
1. Не указывать провайдер, сама Java найдет
Signature signature = Signature.getInstance("GOST3411withGOST3410EL");
2. Указать провайдер подписи по имени
Signature signature = Signature.getInstance("GOST3411withGOST3410EL", "JCP");
3. Создать провайдер подписи
Provider p = Security.getProvider(ru.CryptoPro.JCP.JCP.PROVIDER_NAME);
Signature signature = Signature.getInstance("GOST3411withGOST3410EL", p);