Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2014(UTC) Сообщений: 16
|
Поставил в этот образец свои сертификаты отправителя и получателя, ошибка при компиляции следующая:
19.03.2014 15:45:37 ru.CryptoPro.JCP.tools.Starter check INFO: Loading JCP 1.0.54 36641 19.03.2014 15:45:38 ru.CryptoPro.JCP.tools.Starter check INFO: JCP loaded. Exception in thread "main" java.security.InvalidKeyException: Несоответствие параметров at ru.CryptoPro.JCP.Key.PrivateKeySpec.doDHPhase(Unknown Source) at ru.CryptoPro.Crypto.Key.KeyAgreement.engineDoPhase(Unknown Source) at javax.crypto.KeyAgreement.doPhase(DashoA13*..) at CMS_samples.CMSSignAndEncrypt.main(CMSSignAndEncrypt.java:189)
Вылетает на этой строчке: senderKeyAgree.doPhase(responderPublic, true);
в чем проблема?
в документации написано: Следует помнить, что параметры хеширования и ЭП этого ключа должны совпадать с соответствующими параметрами поданного на инициализацию закрытого ключа.
Как мне узнать какие именно параметры не совпадают?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Например: 1) можно открыть свой сертификат ключа подписи и получателя, посмотреть "Состав" (алгоритм открытого ключа, использование ключа) 2) выбрать контейнер в панели CSP и выполнить "Протестировать..." 3) в Java-коде привести к GostPublicKey и GostExchPrivateKey переменные типов PublicKey и PrivateKey, посмотреть параметры подписи, хеширования и шифрования Отредактировано пользователем 19 марта 2014 г. 17:58:30(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2014(UTC) Сообщений: 16
|
Спасибо за ответ.
по первому пункту: Сверил. Алгоритм открытого ключа одинаковый. Использование у моего сертификата: Digital Signature Non Repudiation Key Encipherment
у сертификата получателя: Digital Signature Non Repudiation Key Encipherment Data Encipherment Key Agreement
по второму пункту - я не нашел в JCP control pane такой функции...
По третьему пункту: System.out.println(recipientPublic.getAlgorithm()); System.out.println(senderKey.getAlgorithm()); System.out.println(recipientPublic.toString()); System.out.println(senderKey.toString()); дало GOST3410 GOST3410DH ru.CryptoPro.JCP.Key.GostPublicKey CryptoPro Gost Exchange PrivateKey with parameters:1.2.643.2.2.98
как посмотреть посмотреть параметры подписи, хеширования и шифрования? таких методов у GostPublicKey и GostExchPrivateKey я не нашел.
Похоже и в самом деле параметры разнятся. Что я делаю не так? в cryptcp всё работало..
П.с. я сейчас разбираюсь с образцом PKCS7Env П.п.с. Сертификат получателя я загружаю не из контейнера, а из хранилища сертификатов.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2014(UTC) Сообщений: 16
|
Попробую запросить сертификат для себя с возможностью Data Encipherment, но странно, почему вылетает на строке, где я подставляю открытый ключ получателя: senderKeyAgree.doPhase(recipientPublic, true);
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: s_Vace ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) по второму пункту - я не нашел в JCP control pane такой функции...
Панель CSP, а не JCP. Полагаю, в JCP более жесткая проверка параметров. По поводу параметров в java-коде - примерно так можно посмотреть: Код:
GostPrivateKey g_prk = (GostPrivateKey)privateKey;
GostPublicKey g_pbk = (GostPublicKey)publicKeyFromCert;
PrivateKeySpec prk_spec = (PrivateKeySpec) g_prk.getSpec();
PublicKeySpec pbk_spec = (PublicKeySpec) g_pbk.getSpec();
AlgIdInterface prk_alg = (AlgIdInterface) prk_spec.getParams();
AlgIdInterface pbk_alg = (AlgIdInterface) pbk_spec.getParams();
В prk_alg и pbk_alg можно увидеть параметры с помощью getSignParams(), getDigestParams() и getCryptParams(). Отредактировано пользователем 20 марта 2014 г. 15:00:26(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2014(UTC) Сообщений: 16
|
private------------ ru.CryptoPro.JCP.params.AlgIdSpec: 1.2.643.2.2.98 ru.CryptoPro.JCP.params.h: 1.2.643.2.2.36.0 ru.CryptoPro.JCP.params.DigestParamsSpec: 1.2.643.2.2.30.1 ru.CryptoPro.JCP.params.CryptParamsSpec: 1.2.643.2.2.31.1 public-------------- ru.CryptoPro.JCP.params.AlgIdSpec: 1.2.643.2.2.19 ru.CryptoPro.JCP.params.EllipticParamsSpec: 1.2.643.2.2.35.1 ru.CryptoPro.JCP.params.DigestParamsSpec: 1.2.643.2.2.30.1 ru.CryptoPro.JCP.params.CryptParamsSpec: 1.2.643.2.2.31.1
Вы были правы. AlgIdSpec разнится. запрос на свой сертификат я создавал из JCP control pane с настройками по умолчанию. Правильно ли я понимаю, что мне надо изменить параметр AlgIdSpec так, чтобы он был равен параметру публичного ключа?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: s_Vace ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) private------------ ru.CryptoPro.JCP.params.AlgIdSpec: 1.2.643.2.2.98 ru.CryptoPro.JCP.params.h: 1.2.643.2.2.36.0 ru.CryptoPro.JCP.params.DigestParamsSpec: 1.2.643.2.2.30.1 ru.CryptoPro.JCP.params.CryptParamsSpec: 1.2.643.2.2.31.1 public-------------- ru.CryptoPro.JCP.params.AlgIdSpec: 1.2.643.2.2.19 ru.CryptoPro.JCP.params.EllipticParamsSpec: 1.2.643.2.2.35.1 ru.CryptoPro.JCP.params.DigestParamsSpec: 1.2.643.2.2.30.1 ru.CryptoPro.JCP.params.CryptParamsSpec: 1.2.643.2.2.31.1
Вы были правы. AlgIdSpec разнится. запрос на свой сертификат я создавал из JCP control pane с настройками по умолчанию. Правильно ли я понимаю, что мне надо изменить параметр AlgIdSpec так, чтобы он был равен параметру публичного ключа?
Нужно, чтобы открытый ключ содержал идентичный закрытому ключу параметр - 1.2.643.2.2.36.0. Если public - из вашего сертификата, то нужно создать контейнер с ключом обмена (exchange). Отредактировано пользователем 20 марта 2014 г. 16:01:41(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2014(UTC) Сообщений: 16
|
Немного уточню - открытый ключ, параметры которого я смотрел - это ключ получателя. А мои закрытый и открытый ключ как раз содержат имеют этот параметр 1.2.643.2.2.36.0 Получается, мне необходимо, чтобы у моего закрытого ключа был параметр ru.CryptoPro.JCP.params.h: 1.2.643.2.2.35.1
Как это сделать?
Попробую создать контейнер как Signature. И запросить из него сертификат.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
ключ должен быть AT_EXCHANGE. Вы уверены, что у вас правильный сертификат получателя? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2014(UTC) Сообщений: 16
|
Да... Других нет (кроме CA-сертификатов). Да и cryptcp с этими сертификатами работал.
Программа компилируется, если я подставляю свой публичный и свой приватный ключи в инициализацию согласования. Но расшифровать на удаленной стороне, понятно, не могут. Тем не менее, в техподдержке там мне ответили: "При подписывании файла, как уже говорилось ранее, используется только Ваш сертификат, а именно его закрытая часть, которая осталась у Вас при генерации запроса."
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close