Статус: Новичок
Группы: Участники
Зарегистрирован: 28.03.2016(UTC) Сообщений: 2 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте.
В своё время коллеги накидали программу, открепляющую подписи от приходящих файлов, причём на основе открытого ключа, как я понял, т.к. сертификатов у нас нет. И всё работало отлично, однако недавно начали попадаться файлы, валящиеся в ошибку. Программа сама написана с использованием JCP и библиотек BouncyCastle (не знаю почему)
if (Security.getProvider("BC") == null) { Security.addProvider(new BouncyCastleProvider()); //Security.getProvider(ru.CryptoPro.JCP.JCP.PROVIDER_NAME); }
// override algo org.bouncycastle.cms.CMSConfig.setSigningDigestAlgorithmMapping(JCP.GOST_DIGEST_OID, JCP.GOST_DIGEST_NAME); org.bouncycastle.cms.CMSConfig.setSigningEncryptionAlgorithmMapping(JCP.GOST_EL_DH_OID, "GOST3410DHEL" /*"GOST3411withGOST3410EL"*/); org.bouncycastle.cms.CMSConfig.setSigningEncryptionAlgorithmMapping(JCP.GOST_EL_KEY_OID, JCP.GOST_EL_SIGN_NAME);
File inFile = new File("C:\\Input\\123.pdf.sig"); File outputFile = new File("C:\\Input\\123.pdf");
SignGetter sign = new SignGetter(inFile, outputFile); try { FileInputStream fInSig = new FileInputStream(inFile); CMSSignedDataParser parser = null; parser = new CMSSignedDataParser(/*new BcDigestCalculatorProvider(),*/fInSig);
InputStream isream = parser.getSignedContent().getContentStream(); FileOutputStream fos = new FileOutputStream(outputFile);
} catch (FileNotFoundException e) { e.printStackTrace(); } catch (CMSException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (CertStoreException e) { e.printStackTrace(); }
Это всё валится в ошибку
org.bouncycastle.cms.CMSException: Unexpected object reading content. at org.bouncycastle.cms.CMSContentInfoParser.<init>(Unknown Source) at org.bouncycastle.cms.CMSSignedDataParser.<init>(Unknown Source) at org.bouncycastle.cms.CMSSignedDataParser.<init>(Unknown Source) at signgetter.SignGetter.detachSign(SignGetter.java:88) at signgetter.SignGetter.det(SignGetter.java:180) at signgetter.SignGetter.main(SignGetter.java:195) Caused by: java.lang.ClassCastException: org.bouncycastle.asn1.DERUnknownTag cannot be cast to org.bouncycastle.asn1.ASN1SequenceParser ... 6 more
Я попробовал сделать как указано в примере JCP
KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME); keyStore.load(null, null); File inFile = new File("C:\\Input\\123.pdf.sig"); InputStream fInSig = new FileInputStream(inFile); byte[] pkcs7Sign = IOUtils.toByteArray(fInSig); X509Certificate certificate = (X509Certificate) keyStore.getCertificate(ALIAS);
byte[] pkcs7Sign = createPKCS7(REQUEST.getBytes(), privateKey, certificate);
int i = -1; final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(pkcs7Signature); final ContentInfo all = new ContentInfo(); all.decode(asnBuf);
Exception in thread "main" com.objsys.asn1j.runtime.Asn1TagMatchFailedException: ASN.1 decode error @ offset 0: Tag match failed: expected [UNIVERSAL 16], parsed [UNIVERSAL 13] at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:449) at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:466) at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.decode(ContentInfo.java:55) at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:218) at test.test_main.verifyPKCS7(test_main.java:65) at test.test_main.main(test_main.java:181)
Помогите пожалуйста разобраться, что не так. Файл не удаётся прикрепить, возможно ли его как-то ещё передать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Здравствуйте. Если редактировать/отвечать на сообщение, то в окне будет кнопка в виде скрепки, можно прикрепить вложение. Если не выйдет, вышлите подпись на afevma at cryptopro.ru, посмотрим ее. |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Удалите строки ----- BEGIN PKCS7 SIGNED ----- и ----- END PKCS7 SIGNED -----, перед использованием содержимого перекодируйте его из base64 в der. |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.03.2016(UTC) Сообщений: 2 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 2 раз
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close