Статус: Новичок
Группы: Участники
Зарегистрирован: 25.09.2020(UTC) Сообщений: 8  Сказал(а) «Спасибо»: 5 раз
|
Добрый день. В одной из интеграций взаимодействуем с системой, которая возвращает сообщение, зашифрованное открытым ключом сертификата. Для расшифровки соответственно надо использовать парный закрытый ключ. Почитав форум и посмотрел примеры, нашел похожее в cmsutil. Делаю так: Код:
final KeyStore hdImageStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
hdImageStore.load(null, null);
//получаю приватный ключ
final PrivateKey keyA = (PrivateKey) hdImageStore.getKey(alias, password);
read = (int)EnvelopedCMS.getCipherTextOffset(inputStream);
if (read < 0)
throw new ASNDecodeException("CMS file is corrupted");
structure = new byte[read];
inputStream.close();
...
read = inputStream.read(structure);
if (read != structure.length)
throw new ASNDecodeException("CMS file is corrupted");
//на этой строчке падает
EnvelopedCMS msg = new EnvelopedCMS(structure, privateKey, JCP.PROVIDER_NAME);
Получаю ошибку: cmsutil.asn1.ASNDecodeException: ASN1 parsing error: 0x5b tag received while tag 0x30 expected Не знаю, в какую сторону смотреть. Подскажите, если можете.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Попробуйте EnvelopedSignature из состава CAdES.jar, примеры - в samples-sources.jar, пакет enveloped, например: Код:
ByteArrayOutputStream decryptedByteDataStream = new ByteArrayOutputStream();
EnvelopedSignature signature = new EnvelopedSignature(new ByteArrayInputStream(encrypted_message));
signature.decrypt(your_certificate, your_private_key, decryptedByteDataStream);
byte[] decrypted_message = decryptedByteDataStream.toByteArray();
|
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.09.2020(UTC) Сообщений: 8  Сказал(а) «Спасибо»: 5 раз
|
Я попробовал, но получаю в конструкторе Код:EnvelopedSignature signature = new EnvelopedSignature(new ByteArrayInputStream(structure));
Код:Exception in thread "main" ru.CryptoPro.CAdES.exception.EnvelopedException: Decoding of encrypted data failed
at ru.CryptoPro.CAdES.EnvelopedSignature.<init>(Unknown Source)
at ru.datamatica.ds.crypto.DecryptToken3.main(DecryptToken3.java:95)
Caused by: org.bouncycastle.cms.CMSException: Unexpected object reading content.
at org.bouncycastle.cms.CMSContentInfoParser.<init>(Unknown Source)
at org.bouncycastle.cms.CMSEnvelopedDataParser.<init>(Unknown Source)
Caused by: org.bouncycastle.cms.CMSException: Unexpected object reading content.
... 2 more
Caused by: java.lang.ClassCastException: class org.bouncycastle.asn1.DLApplicationSpecific cannot be cast to class org.bouncycastle.asn1.ASN1SequenceParser (org.bouncycastle.asn1.DLApplicationSpecific and org.bouncycastle.asn1.ASN1SequenceParser are in unnamed module of loader 'app')
... 4 more
Caused by: java.lang.ClassCastException: class org.bouncycastle.asn1.DLApplicationSpecific cannot be cast to class org.bouncycastle.asn1.ASN1SequenceParser (org.bouncycastle.asn1.DLApplicationSpecific and org.bouncycastle.asn1.ASN1SequenceParser are in unnamed module of loader 'app')
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Проверьте, если сообщение в base64, то перекодируйте в der (можно с помощью класса ru.CryptoPro.JCP.tools.Decoder). При условии, конечно, что у вас enveloped data. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.09.2020(UTC) Сообщений: 8  Сказал(а) «Спасибо»: 5 раз
|
Сообщение бинарное, а не base64.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Приложите образец или пришлите на afevma at cryptopro.ru, посмотрим формат, так как ошибка декодирования. |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.09.2020(UTC) Сообщений: 8  Сказал(а) «Спасибо»: 5 раз
|
Проблема была в ошибочном формате сообщения от внешней системе. Спасибо большое. Понимаю, что это может пригодиться кому-то еще, поэтому скажу, что способ с Код:EnvelopedSignature signature = new EnvelopedSignature(new ByteArrayInputStream(bytes));
сработал.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close