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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Андрей1234678  
#1 Оставлено : 2 февраля 2021 г. 17:05:27(UTC)
Андрей1234678

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

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

Не работает улучшение подписей до CAdES-A

Есть подписи (CAdES-BES, CAdES-XLT1) сформированные через CAdESCOM (или .Net-ный SignedCms).
Подписи успешно проверяются через JCP и корректно определяется их тип.
Подписи CAdES-BES успешно улучшаются до CAdES-XLT1 через вызов enhance.

При попытке улучшить подпись до CAdES-A валится ошибка:

Timestamp is invalid; error codes: [34] 'Timestamp is invalid',
at ru.CryptoPro.CAdES.CAdESSignerXLT1Impl.enhance(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerXLT1Impl.enhance(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerBESImpl.enhance(Unknown Source)
at Crypto.SignatureMethods.enhanceSignatureInternal(SignatureMethods.java:275)

Caused by: Timestamp is invalid; error codes: [34] 'Timestamp is invalid', {Archive-timestamp-V3 has invalid imprint (digest); error codes: [120] 'Archive-timestamp-V3 has invalid imprint (digest)', }
at ru.CryptoPro.CAdES.CAdESSignerAImpl.f(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerAImpl.verify(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerAImpl.verify(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerAImpl.verify(Unknown Source)

При этом, если тем же сертификатом подписывать изначально через JCP, то ошибки нет, т.е. подпись, изначально сформированная через JCP - успешно улучшается.

Используется версия jcp-2.0.41940-A
Адрес службы таймстампов: http://cryptopro.ru/tsp/tsp.srf

Код написан на базе примера:

private byte[] enhanceSignatureInternal(Configuration config, byte[] signatureBytes, byte[] contentBytes, byte[] certBytes, Integer targetCadesType) throws CAdESException {
CAdESSignature signature = new CAdESSignature(signatureBytes, contentBytes, null);

// Список всех подписантов в исходной подписи.
var srcSignerInfos = new ArrayList<SignerInformation>();
CAdESSigner[] signers = signature.getCAdESSignerInfos();

for (CAdESSigner signer : signers) {
srcSignerInfos.add(signer.getSignerInfo());
}

// Получаем только первую подпись, усовершенствуем ее. Остальных не трогаем.
CAdESSigner signer = signature.getCAdESSignerInfo(0);

// Исключаем ее из исходного списка, т.к. ее место займет усовершенствованная подпись.
srcSignerInfos.remove(signer.getSignerInfo());

// Усовершенствуем до CAdES-A.
String digestAlgOID = signer.getSignerInfo().getDigestAlgOID();
AttributeTable unsignedAttributes = signer.getSignerUnsignedAttributes();

var cert = certificateFromByte(certBytes);
var chain = new LinkedList<X509Certificate>();//config.getChain());
chain.add(cert);

try {
signer = signer.enhance(config.getProviderName(),
digestAlgOID, //config.getDigestOid(),
chain,
config.getTSAAddress(), // http://cryptopro.ru/tsp/tsp.srf
targetCadesType);//CAdESType.CAdES_A);//,
//unsignedAttributes);
} catch (CAdESException e) {
logError(e);
}

// Подписант усовершенствованной подписи.
SignerInformation enhSigner = signer.getSignerInfo();

// Добавляем его в исходный список подписантов.
srcSignerInfos.add(enhSigner);

// Список подписантов.
SignerInformationStore dstSignerInfoStore = new SignerInformationStore(srcSignerInfos);
ByteArrayOutputStream newCMSSignedDataBuffer = new ByteArrayOutputStream();
InputStream srcSignedDataStream = new ByteArrayInputStream(signatureBytes);

// Обновляем исходную подпись c ее начальным списком подписантов на тот же, но с первым подписантом с усовершенствованной подписью.
CAdESSignature.replaceSigners(srcSignedDataStream, dstSignerInfoStore, newCMSSignedDataBuffer);

return newCMSSignedDataBuffer.toByteArray();
}

Подскажите пожалуйста, в чем может быть проблема?
Offline Санчир Момолдаев  
#2 Оставлено : 2 февраля 2021 г. 17:10:01(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 275 раз в 255 постах
Добрый день!
а можете собрать лог на уровне ALL согласно статьи

создайте обращение на портале технической поддержки
приложите туда все подписи с указанием где создана и логи из предыдущего шага
Техническую поддержку оказываем тут
Наша база знаний
Offline Санчир Момолдаев  
#3 Оставлено : 2 февраля 2021 г. 19:13:08(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 275 раз в 255 постах
обращение 35721 зарегистрировано
Техническую поддержку оказываем тут
Наша база знаний
Offline Санчир Момолдаев  
#4 Оставлено : 6 февраля 2021 г. 9:37:42(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 275 раз в 255 постах
решено в рамках обращения на портале
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.