Статус: Участник
Группы: Участники
Зарегистрирован: 27.11.2020(UTC) Сообщений: 14
|
Получил тестовый сертификат и пытаюсь им подписать при помощи JCP и CAdESSignature при помощи вот такого кода : Код:
List<Certificate> certs = new ArrayList<Certificate>();
List<X509CertificateHolder> chain = new ArrayList<X509CertificateHolder>();
PrivateKey privateKey = loadConfiguration(JCP.HD_STORE_NAME, storeFile, storePassword, alias, password, certs, chain);
ByteArrayOutputStream out = new ByteArrayOutputStream();
CAdESSignature signature = new CAdESSignature(detached);
signature.setCertificateStore(new CollectionStore(chain));
signature.addSigner(JCP.PROVIDER_NAME,
null,
null,
privateKey,
certs,
CAdESType.CAdES_BES,
null,
false,
null,
null);
signature.open(out);
signature.update(data);
signature.close();
return out.toByteArray();
Цепочка сертификатов и закрытый ключ, вроде как, получены правильно, так как долго ругалось, пока все не настроил. Код отрабатывает и получает подпись, но когда пытаюсь ее проверить вот здесь : https://dss.cryptopro.ru/Verify/Verify/ , то получаю ошибку "Подпись не верна. Ошибка: [Неправильная подпись]. Код: [0x80090006]." В data 3 байта из файла с текстом 123. На всякий случай, в sgn.zip - сертификат. В sgn.txt - полученная подпись.  sgn.zip (2kb) загружен 1 раз(а). sgn.txt (8kb) загружен 2 раз(а).Соответственно, подпись не подходит для ЦРПТ. Причем, если генерировать подпись моим сертификатом при помощи https://www.cryptopro.ru...ge/cades_bes_sample.html , то она принимается ЦРПТ. И что странно, вне зависимости от подписываемых данных их подпись в Base64 начинается с MII, а моя с MIA. Подскажите, пожалуйста, в какую сторону копать. Отредактировано пользователем 27 ноября 2020 г. 12:59:34(UTC)
| Причина: Не указана
|