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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Евгений2022  
#1 Оставлено : 28 июня 2022 г. 17:49:11(UTC)
Евгений2022

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
Добрый день.
В процессе проверки подписи XAdES_X_Long_Type_1 возникает ошибка "Digest oid not found for"

Цитата:
2022-06-28 20:45:06.851 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Normalizing single certificate reference...
2022-06-28 20:45:06.990 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Looking for certificate by certificate reference, max priority
2022-06-28 20:45:07.153 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Find a provider that implements the digest algorithm 1.2.643.7.1.1.2.2 (null)
2022-06-28 20:45:07.321 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Valid provider (digest algorithm: 1.2.643.7.1.1.2.2): JCP is found instead of null
2022-06-28 20:45:07.725 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Analysing basic ocsp response...
2022-06-28 20:45:07.814 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Analysing single ocsp response # 0
2022-06-28 20:45:07.843 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Finding issuer certificate...
2022-06-28 20:45:07.914 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Looking for certificate by certificate identifier, max priority
2022-06-28 20:45:08.652 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Find a provider that implements the digest algorithm 1.2.643.7.1.1.2.2 (JCP)
2022-06-28 20:45:09.349 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Find a provider that implements the digest algorithm 1.2.643.7.1.1.2.2 (JCP)
2022-06-28 20:45:09.433 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Checking certificate signature...
2022-06-28 20:45:09.556 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Checking certificate identifier...
2022-06-28 20:45:09.692 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Creating certificate identifier...
2022-06-28 20:45:10.267 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Find a provider that implements the digest algorithm 1.2.643.7.1.1.2.2 (JCP)
2022-06-28 20:45:10.473 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Find a provider that implements the digest algorithm 1.2.643.7.1.1.2.2 (JCP)
2022-06-28 20:45:10.591 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : OCSP evidence accepted.
2022-06-28 20:45:17.552 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : Producing OCSP responder identifier...
2022-06-28 20:45:17.766 DEBUG 18284 --- [nio-8888-exec-7] r.C.J.t.JCPLogger : IGNORE THROWN
java.text.ParseException: Unparseable date: "2022-06-28T11:31:00.40:0Z"
at java.text.DateFormat.parse(DateFormat.java:399) ~[?:?]
at ru.CryptoPro.XAdES.util.SystemUtils.parseDate(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.cl_26.d(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_1.pc_0.cl_6.decode(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]

2022-06-28 21:14:47.697 WARN 18284 --- [nio-8888-exec-7] b.r.c.c.h.CustomRestExceptionHandler : Digest oid not found for

ru.CryptoPro.XAdES.exception.XAdESException: Digest oid not found for
at ru.CryptoPro.XAdES.XAdESSignature.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.XAdESSignature.<init>(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
Caused by: ru.CryptoPro.XAdES.exception.XAdESException: Digest oid not found for
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_1.pc_0.cl_6.decode(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.XAdESSignerBinaryImpl.e(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
... 90 more
Caused by: ru.CryptoPro.XAdES.exception.XAdESException: Digest oid not found for
at ru.CryptoPro.XAdES.util.XAdESUtility.findDigestOidByDigestName(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_0.cl_1.a(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.pc_1.pc_0.cl_6.decode(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
at ru.CryptoPro.XAdES.XAdESSignerBinaryImpl.e(Unknown Source) ~[XAdES-jcp-2.0.41940-A.jar:41940-A]
... 90 more

Используется тестовый сертификат КРИПТО-ПРО, при создании CAdES-X-L1 с тем же сертификатом проверка проходит успешно
XAdES-T проверка тоже проходит успешно.
В процессе дебага видно, что ошибка происходит в момент Producing OCSP responder identifier...
Блок документа с OCSPRefs:
Цитата:
<xades:OCSPRefs>
<xades:OCSPRef>
<xades:OCSPIdentifier URI="#xmldsig-c8983a8a-7ce3-491a-a11b-d328cceb90da-EncapsulatedOCSPValue-0">
<xades:ResponderID>
<xades:ByName>1.2.643.100.4=7717107991,1.2.643.100.1=1037700085444,O=ООО \"КРИПТО-ПРО\",STREET=ул. Сущевский Вал\, д. 18,L=Москва,ST=77 Москва,C=RU,CN=Тестовый оператор OCSP</xades:ByName>
</xades:ResponderID>
<xades:ProducedAt>2022-06-28T11:31:00.40:0Z</xades:ProducedAt>
</xades:OCSPIdentifier>
<xades:DigestAlgAndValue>
<ds:DigestMethod xmlns:ns0="ds" ns0:Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>XWkgay9EYmdlPtwm95RIVpoVnuwRn+CS8NwbUw0CFPw=</ds:DigestValue>
</xades:DigestAlgAndValue>
</xades:OCSPRef>
</xades:OCSPRefs>

При получении OID в ru.CryptoPro.XAdES используется следующий код
Цитата:
Element var1 = this.b("DigestMethod", "http://www.w3.org/2000/09/xmldsig#");

return var1 == null ? null : var1.getAttribute("Algorithm");

В котором элемент var1 заполняется успешно, а вот атрибут "Algorithm" не возвращается.
Подпись создавалась при помощи ru.CryptoPro.XAdES
Есть предположение, что это связано с тем, что в xml-документе указано пространство имён xmlns:ns0="ds", так как в других блоках документа OID определяется нормально
Например:
Цитата:
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xmldsig-c8983a8a-7ce3-491a-a11b-d328cceb90da-signedprops">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>ro2YrlUthJVmaJHVE6MzNBGXd6QAoM2CmhF1zVgoPkU=</ds:DigestValue>
</ds:Reference>

По идее, эта ошибка должна быть у всех, кто реализует проверку Xades-X-L1, возможно есть решение ?
Online Евгений Афанасьев  
#2 Оставлено : 29 июня 2022 г. 10:42:22(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,963
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
1. Приложите, пожалуйста, подпись для воспроизведения ошибки.
2. Используйте пространство имен ds по возможности для узлов подписи и их атрибутов.
Offline Евгений2022  
#3 Оставлено : 29 июня 2022 г. 11:11:36(UTC)
Евгений2022

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
1.
sign.txt (47kb) загружен 2 раз(а).
2. Подпись была усовершенствована из BES используя метод ru.CryptoPro.XAdES.XAdESSigner.enhance(), как можно указать использовать пространство имен ds ?
Offline two_oceans  
#4 Оставлено : 29 июня 2022 г. 13:08:21(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Цитата:
<ds:DigestMethod xmlns:ns0="ds" ns0:Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
Добрый день. Что-то это сильно смахивает на неправильный вызов добавления атрибута через DOM. Вроде того, что метод DOM ожидал указание атрибута в форме "http://www.w3.org/2000/09/xmldsig#", "Algorithm" (то есть адрес (точнее имя, но понятнее сказать адрес) пространства имен и имя атрибута), а ему передали "ds", "Algorithm" (то есть префикс пространства имен и имя атрибута). Другими словами префикс пространства имен "ds" передали в параметр где должен быть адрес пространства имен "http://www.w3.org/2000/09/xmldsig#". В этом случае как раз метод добавления DOM не найдет пространства имен с адресом "ds", возьмет с потолка префикс "ns0", объявит для префикса "ns0" адрес "ds" и добавит префикс "ns0" к имени атрибута. Все сделано по стандарту DOM.

По этой же причине при поиске пространства имен "http://www.w3.org/2000/09/xmldsig#" не будет выбран атрибут "Algorithm", так как нет "http://www.w3.org/2000/09/xmldsig#":"Algorithm", но есть "ds":"Algorithm". Если было бы несколько атрибутов, то был бы еще и неправильный их порядок, так как сортируются атрибуты по адресу пространства имен.

Проверьте, если ли где-то код добавления атрибута.

Отредактировано пользователем 29 июня 2022 г. 13:09:25(UTC)  | Причина: Не указана

Offline Евгений2022  
#5 Оставлено : 29 июня 2022 г. 14:17:30(UTC)
Евгений2022

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
Вот почти вся реализация:
Цитата:

// Получаем на вход строку документа Xades-BES и формируем DOM
var dbFactory = DocumentBuilderFactory.newInstance();



dbFactory.setNamespaceAware(true);


var document = dbFactory.newDocumentBuilder().parse(new ByteArrayInputStream(xmlString.getBytes(StandardCharsets.UTF_8)));

var signature = new XAdESSignature(document.getDocumentElement(), xadesTypeFrom.getCadesCode());

var signer = signature.getXAdESSignerInfo(signaturePosition);

var chain = signer.getSignatureCertificates().stream().toList();

var signatureAlgorithm = signer.getSignerCertificate().getPublicKey().getAlgorithm();

var digestAlgorithm = JCPUtils.key2DigestUrn(signatureAlgorithm);


// усовершенствование подписи
signer.enhance(JCP.PROVIDER_NAME, digestAlgorithm, chain, context.getTspServiceAddress(), xadesTypeTo.getCadesCode());
// получаем строку
TransformerFactory tf = TransformerFactory.newInstance();

Transformer transformer = tf.newTransformer();

StringWriter writer = new StringWriter();

transformer.transform(new DOMSource(node), new StreamResult(writer));

String xml = writer.getBuffer().toString();


Самостоятельно атрибуты не добавляем, почти всё делает ваша библиотека
Online Евгений Афанасьев  
#6 Оставлено : 29 июня 2022 г. 15:15:28(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,963
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
.

Отредактировано пользователем 29 июня 2022 г. 15:16:23(UTC)  | Причина: Не указана

Offline Евгений2022  
#7 Оставлено : 29 июня 2022 г. 15:19:31(UTC)
Евгений2022

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
xades-bes.txt (8kb) загружен 5 раз(а).
на выходе:
xades-x-l1.txt (47kb) загружен 5 раз(а).

Отредактировано пользователем 29 июня 2022 г. 15:29:50(UTC)  | Причина: Не указана

Online Евгений Афанасьев  
#8 Оставлено : 29 июня 2022 г. 18:22:29(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,963
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Спасибо, будем проверять, с такой проблемой не сталкивались.
Offline Евгений2022  
#9 Оставлено : 30 июня 2022 г. 7:02:55(UTC)
Евгений2022

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
Добрый день. Пока смотрите текущую проблему, я решил попробовать xades4j для проверки Xades-X-L1 и возникла ошибка: xades4j.xml.unmarshalling.PropertyUnmarshalException: Only CRL references are supported
По коду видно, что если в документе есть тег OCSPRefs то бросается исключение.
if (xmlCompleteRevocRefs.getOCSPRefs() != null || xmlCompleteRevocRefs.getOtherRefs() != null)
 throw new PropertyUnmarshalException("Only CRL references are supported", CompleteRevocationRefsProperty.PROP_NAME);

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