Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
При расшифровании CMS для нескольких получателей ошибка MSCAPI ERROR: 0x80090005
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.10.2014(UTC) Сообщений: 38  Откуда: Казань Сказал(а) «Спасибо»: 12 раз Поблагодарили: 1 раз в 1 постах
|
jdk1.8.0_261 + JCSP5.0.39267 Если сертификат получателя не был первым в процессе выработки ключа согласования: Код:senderKeyAgree.doPhase(...)
то при попытке расшифрования данным получателем возникает ошибка: Код:Exception in thread "main" java.lang.IllegalArgumentException: ru.CryptoPro.JCSP.MSCAPI.MSException: MSCAPI ERROR: 0x80090005
at ru.CryptoPro.JCSP.MSCAPI.cl_5.importSessionSecretKey(Unknown Source)
at ru.CryptoPro.JCSP.Key.cl_8.unwrap(Unknown Source)
at ru.CryptoPro.JCSP.Cipher.GostCipher.engineUnwrap(Unknown Source)
at javax.crypto.Cipher.unwrap(Cipher.java:2553)
В примерах не нашел за/расшифрования в пользу нескольких получателей. Отредактировано пользователем 17 сентября 2020 г. 19:28:08(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Напишите, какой пример и как используете. Для вашей задачи подходит EnvelopedSignature из CAdES.jar. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.10.2014(UTC) Сообщений: 38  Откуда: Казань Сказал(а) «Спасибо»: 12 раз Поблагодарили: 1 раз в 1 постах
|
Добрый день! В качестве основы взят пример CMSSignAndEncrypt и адаптирован под несколько получателей (Certificate - наш класс): Код:Iterator<Certificate> iter = recipientsCertificates.iterator();
while (iter.hasNext()) {
Certificate cert = iter.next();
boolean isLast = !iter.hasNext();
senderKeyAgree.doPhase(cert.getX509Certificate().getPublicKey(), isLast);
}
и (addRecipientInfo - наш метод с кодом из вашего примера) Код:List<RecipientInfo> recipientInfos = new ArrayList<>();
recipientsCertificates.forEach(certificate -> addRecipientInfo(recipientInfos, certificate, wrap, svBytes));
cms.recipientInfos.elements = recipientInfos.toArray(cms.recipientInfos.elements);
Цитата:Для вашей задачи подходит EnvelopedSignature из CAdES.jar на данном этапе хотелось бы обойтись без CAdES.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Для Госта doPhase так не работает, его нужно звать только 1 раз. Об этом должно быть в руководстве разработчика. Отредактировано пользователем 18 сентября 2020 г. 9:05:57(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
est412 оставлено 18.09.2020(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.10.2014(UTC) Сообщений: 38  Откуда: Казань Сказал(а) «Спасибо»: 12 раз Поблагодарили: 1 раз в 1 постах
|
Вон в чём дело... Правильно ли я понимаю, что сформировать таким образом CMS по ГОСТ для нескольких получателей невозможно? Отредактировано пользователем 18 сентября 2020 г. 19:54:23(UTC)
| Причина: Была написана глупость. См. ниже решение
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Посмотрите пример PKCS7EnvEphTransport в CMS_samples в samples-sources.jar, лучше в последнем дистрибутиве JCP. Он формирует KeyTransRecipientInfo и кладет в подпись. |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
est412 оставлено 18.09.2020(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.10.2014(UTC) Сообщений: 38  Откуда: Казань Сказал(а) «Спасибо»: 12 раз Поблагодарили: 1 раз в 1 постах
|
Спасибо за наводку! Всё заработало. Для интересующихся: При зашифровании - добавлять в recipientInfos ключ согласования и issuerAndSerialNumber для каждого получателя. При расшифровании - найти свой ключ согласования в recipientInfos по своему issuerAndSerialNumber, после чего на нем расшифровать. Отредактировано пользователем 18 сентября 2020 г. 20:20:50(UTC)
| Причина: Не указана
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
При расшифровании CMS для нескольких получателей ошибка MSCAPI ERROR: 0x80090005
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close