| ||||
| ||||
Пытаюсь создать класс Signature в JCP: CryptoProvider cp = new CryptoProvider(); KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410DH", cp); //нет ошибки Signature signature = Signature.getInstance("GOST3411withGOST3410EL", cp); //ошибка!!! Почему так происходит и в каком дистрибутиве есть соответствующие имплементации. | ||||
Ответы: | ||||
| ||||
Так происходит потому, что у 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); | ||||