Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Ruslan87  
#1 Оставлено : 2 сентября 2022 г. 12:52:37(UTC)
Ruslan87

Статус: Новичок

Группы: Участники
Зарегистрирован: 25.08.2022(UTC)
Сообщений: 6
Российская Федерация

Добрый день.

Помогите пожалуйста разобраться в следующей проблеме.

#1. Есть простая java программа которая использует jcp 2.0 для формирования подписи, код которой частично взят из дистрибутива jcp samples-sources/CMS_samples/CMSSign.java
Создаются два вида подписи:
Код:
final Signature signature = Signature.getInstance(signOid, JCP.PROVIDER_NAME);
byte[] sign;
signature.initSign(pk);
signature.update(content.getBytes());
sign = signature.sign();


Код:
String digestOid = AlgorithmUtility.keyAlgToDigestOid(keyAlg);
final ByteArrayInputStream stream = new ByteArrayInputStream(content.getBytes());
final MessageDigest digest = MessageDigest.getInstance(digestOid, JCP.PROVIDER_NAME);

final DigestInputStream digestStream = new DigestInputStream(stream, digest);
while (digestStream.available() != 0) digestStream.read();
digest.digest();


#2. При этом есть вызов консольной утилиты cryptcp
Код:
./cryptcp -sign -detached -nochain -dn OGRN=123456 -der ${FILE} ${FILE}.sig

которая формирует на выходе файл ${FILE}.sig с подписью в формате base64.

Проблема в том что подпись получаемая из java кода(#1) не совпадает с подписью получаемой при вызове cryptcp(#2)
Что необходимо изменить в java коде чтобы подписи совпадали?
Offline Санчир Момолдаев  
#2 Оставлено : 2 сентября 2022 г. 19:57:34(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,192
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 272 раз в 253 постах
Добрый день!

1) тут формируется RawSignature (сырая подпись), длинной 64 или 128 байт
2) тут формируется cms подпись.

т.е. в java либо полностью реализуете низкоуровневый пример, где происходит низкоуровневая сборка cms и куда вставляют значение подписи.
либо используете высокоуровневый класс CAdESSignature
Техническую поддержку оказываем тут
Наша база знаний
Offline Ruslan87  
#3 Оставлено : 7 сентября 2022 г. 15:25:10(UTC)
Ruslan87

Статус: Новичок

Группы: Участники
Зарегистрирован: 25.08.2022(UTC)
Сообщений: 6
Российская Федерация

Спасибо
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.