Статус: Новичок
Группы: Участники
Зарегистрирован: 23.03.2020(UTC) Сообщений: 4
|
добрый день у меня такая проблема создаю подпись на java, создается без ошибок. java кодом verify тоже без ошибок. потом пробую verify через CSP Tools, и вот тут не проходит, ошибка. там разные форматы что ли ? или что-то добавить надо ? как мне сделать подпись которая бы проходила verify через CSP Tools ? почему собственно так... я потом отправляю подпись оператору ЭДО так вот, подпись CSP Tools нормально принимается. а моя подпись через JCP - тоже ошибка. ошибка в обоих случаях, что присоединенная, что отсоединенная (мне желательно второе) код как делаю - ниже Код:
System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
byte[] dataForSign = Files.readAllBytes(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx"));
KeyStore ks = KeyStore.getInstance(JCP.HD_STORE_NAME, "JCP");
ks.load(null, null);
PrivateKey privateKey = (PrivateKey) ks.getKey("TEST 2019-08-29T14:15:01 deec5e87bb004e77b0d2754b229cdf0d - Copy2", null);
if(privateKey == null) {
System.out.println("failed to get key");
}
System.out.println(privateKey.getAlgorithm());
List<Certificate> certificateChain = Arrays.asList(ks.getCertificateChain("TEST 2019-08-29T14:15:01 deec5e87bb004e77b0d2754b229cdf0d - Copy2"));
CAdESSignature cadesSignature = new CAdESSignature(true);
cadesSignature.addSigner( JCP.PROVIDER_NAME // provider
, privateKey // privateKey
, certificateChain // certificateChain
, CAdESType.CAdES_BES // signatureType
, null // tsaUrl
, false
); // countersignature
// Будущая подпись в виде массива.
ByteArrayOutputStream signatureStream = new ByteArrayOutputStream();
cadesSignature.open(signatureStream); // подготовка контекста
cadesSignature.update(dataForSign); // хеширование
cadesSignature.close(); // создание подписи с выводом в signatureStream
signatureStream.close();
byte[] cadesCms = signatureStream.toByteArray();
Base64 codec = new Base64();
String encoded = codec.encodeAsString(cadesCms);
System.out.println(encoded);
Files.write(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx.sig2"), cadesCms);
/**/
byte[] data = Files.readAllBytes(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx"));
byte[] sig = Files.readAllBytes(Paths.get("F:\\__WORK\\__TST\\__tmp_diadoc\\те.docx.sig2"));
CAdESSignature signature = new CAdESSignature(sig, data, CAdESType.CAdES_BES);
signature.verify(new HashSet(certificateChain));
Отредактировано пользователем 23 марта 2020 г. 10:24:51(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Так как мы не знаем требований ЭДО. Приложите подпись которая получается у вас и которая проходит в ЭДО на одни и те же данные. Постараемся помочь. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Добавлю, что, возможно, проблема в отсутствии сертификата подписи в сообщении. Добавить сертификат можно с помощью setCertificateStore или расширенного метода addSigner (см. CAdES-javadoc, описание методов и класса CAdESSignature). |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.03.2020(UTC) Сообщений: 4
|
Автор: Евгений Афанасьев  Добавлю, что, возможно, проблема в отсутствии сертификата подписи в сообщении. Добавить сертификат можно с помощью setCertificateStore или расширенного метода addSigner (см. CAdES-javadoc, описание методов и класса CAdESSignature). спасибо всё получилось
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close