Статус: Новичок
Группы: Участники
Зарегистрирован: 11.09.2019(UTC) Сообщений: 6
|
Здраствуйте! Взял за основу пример из samples-sources.jar (JCSP/Signature/SignByGenKeyExample.java) При замене алгоритма JCP.GOST_EL_2012_256_NAME на JCP.GOST_EPH_DH_2012_256_NAME получаю исключение: Код:
Dec 06, 2019 3:21:12 PM ru.CryptoPro.JCP.pref.JCPPref a
INFO: user: 502
Dec 06, 2019 3:21:14 PM ru.CryptoPro.JCSP.Starter check
INFO: Loading JCSP 5.0.40424
Dec 06, 2019 3:21:14 PM ru.CryptoPro.JCSP.Starter check
INFO: JCSP loaded.
Exception in thread "main" java.lang.IllegalArgumentException: ru.CryptoPro.JCSP.MSCAPI.MSHashNSignException: Hash or Sign ERROR: 0x8009000d
at ru.CryptoPro.JCSP.MSCAPI.cl_4.b(Unknown Source)
at ru.CryptoPro.JCSP.MSCAPI.cl_3.a(Unknown Source)
at ru.CryptoPro.JCSP.Key.AbstractKeySpec.signature(Unknown Source)
at ru.CryptoPro.JCSP.Sign.CryptoProSign.engineSign(Unknown Source)
at java.security.Signature.sign(Signature.java:582)
at Testik$.signAndVerify(Testik.scala:20)
at Testik$.main(Testik.scala:39)
at Testik.main(Testik.scala)
Caused by: ru.CryptoPro.JCSP.MSCAPI.MSHashNSignException: Hash or Sign ERROR: 0x8009000d
at ru.CryptoPro.JCSP.MSCAPI.MSHashNSignException.procCode(Unknown Source)
at ru.CryptoPro.JCSP.MSCAPI.cl_4.a(Unknown Source)
... 8 more
Почему так происходит? Как сформировать подпись с использованием эфемерного ключа?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.09.2019(UTC) Сообщений: 6
|
Причем если сменить дефолтный криптопровайдер на JCP, то подпись проходит успешно. Для JCSP нужны какие-то дополнительные параметры?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.06.2020(UTC) Сообщений: 23
Сказал(а) «Спасибо»: 2 раз
|
Столкнулся с такой же проблемой, я создаю пару ключей и подписываю тестовые данные приватным ключом из этой пары Код:
val algorithm = JCP.GOST_EPH_DH_2012_512_NAME
val signAlgorithm = JCP.GOST_SIGN_2012_512_NAME
val provider = JCSP.PROVIDER_NAME
val keyGen = KeyPairGenerator.getInstance(algorithm, provider)
val keyPair = keyGen.generateKeyPair()
val sn = Signature.getInstance(
signAlgorithm, provider)
sn.initSign(keyPair.private)
sn.update(originalMessage)
val sign = sn.sign()
И получаю исключение Код:
java.lang.IllegalArgumentException: ru.CryptoPro.JCSP.MSCAPI.MSHashNSignException: Hash or Sign ERROR: 0x8009000d
at ru.CryptoPro.JCSP.MSCAPI.cl_4.b(Unknown Source:30)
at ru.CryptoPro.JCSP.MSCAPI.cl_3.a(Unknown Source:12)
at ru.CryptoPro.JCSP.Key.AbstractKeySpec.signature(Unknown Source:14)
at ru.CryptoPro.JCSP.Sign.CryptoProSign.engineSign(Unknown Source:20)
at ru.CryptoPro.JCSP.Sign.JCSPGostElSign.engineSign(Unknown Source:0)
at java.security.Signature.sign(Signature.java:739)
То есть никаких сертификатов и никаких KeyStore я не использую для получения ключа На стандартных средствах Java Security подписывается без проблем
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,925 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Здравствуйте. Если не ошибаюсь, в CSP нельзя подписать эфемерным ключом, а в JCP - можно. |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close