logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

5 Страницы«<345
Опции
К последнему сообщению К первому непрочитанному
Offline Boris@Serezhkin.com  
#81 Оставлено : 20 октября 2018 г. 7:13:28(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Автор: Neotiran Перейти к цитате
Можете пожалуйста поделиться кодом на C#, у кого получилось? Уже все перебрал одна и таже ошибка: ЭЦП не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП

Присоединяюсь.
Offline two_oceans  
#82 Оставлено : 22 октября 2018 г. 3:11:20(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 33 раз в 33 постах
Предлагаю начать с проверки заготовленного подписываемого xml документа - в нем не должно быть повторяющихся аттрибутов Id, аттрибуты URI должны указывать на соответствующие Id существующих нужных элементов. Если документ неверный, но даже правильный код будет выдавать ЭП с ошибкой, просто потому что в код не заложено автоматическое исправление ошибок самого подписываемого документа.

Например, в соседней теме из-за двойного Id выбирался Id на заготовку тега для сертификата, соответственно заготовка подписывалась, потом в нее добавлялся сертификат, что приводило к ошибке проверки подписи потому что к моменту проверки подписанный тег фактически изменился вставкой сертификата. Мало того, значение хэша в референсе оказывалось независимым ни от "полезных данных" документа, ни от сертификата. И все из-за того, что Id "полезных данных" совпал c Id заготовки под сертификат и заготовка шла в документе первой.
Точно так же если Вы укажете несуществующий в документе Id для указания подписываемого узла, то скорее всего подпишется пустая строка и хэш будет независим ни от чего.

Еще одной частой ошибкой является использование неправильного метода приведения к каноническому виду. Указали "обычный" c14n вместо эксклюзивного c14n и вот уже сообщение об ошибке проверки ЭП.

Добавлю, что автоматическое исправление по стандарту также нежелательно, так как некоторые информационные системы участников принимают аттрибуты в строго фиксированном порядке, при автоисправлении порядок может измениться. Просто проверьте взглядом подписываемые документы на соответствие здравому смыслу.

Отредактировано пользователем 22 октября 2018 г. 3:12:02(UTC)  | Причина: Не указана

Offline Boris@Serezhkin.com  
#83 Оставлено : 24 октября 2018 г. 7:13:51(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах

Добрый день.
А имеется ли в NET SDK 1.0.6397.0
Пример подписи СМЭВ3?
То что я там нашел относится к СМЭВ2

Не могу разобраться как подписать конверт
Внутренние сущности подписываются и даже
с XaDes7 А вот конверт?
И <ds:Reference URI="#SIGNED_BY_CONSUMER">
Вроде низко стоит.....
Offline Boris@Serezhkin.com  
#84 Оставлено : 24 октября 2018 г. 21:29:41(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Автор: Boris@Serezhkin.com Перейти к цитате

Добрый день.

Имеется библиотека XADES и
2 программы под СМЭВ2 и под СМЭВ3
Функции подписи сущностей и конвертов
Текстуально одинаковы.
Для СМЭВ2 все прекрасно работает.
А вот для СМЭВ3 - сущности подписываются,
а вот конверт выдает исключение и что делать опять не знаю.

2018.10.24 23:18:13: Подписываем запрос.
2018.10.24 23:23:40: Адресат вызова создал исключение.StackTrace
в System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
в Microsoft.Xades.XadesSignedXml.BuildDigestedReferences() в D:\ovi\Library\XadesSignedXml.cs:строка 1484
в Microsoft.Xades.XadesSignedXml.ComputeSignature() в D:\ovi\Library\XadesSignedXml.cs:строка 1374
в bx_smev3.SignSmevRequest.SignXmlTransport(XmlDocument doc, X509Certificate2 Certificate) в D:\ovi\Smev_bx3\SignSmevRequest.cs:строка 116
в bx_smev3.xUtil.prepareXmlRequest() в D:\ovi\Smev_bx3\XmlUtil.cs:строка 241
в bx_smev3.Program.Main(String[] args) в D:\ovi\Smev_bx3\Program.cs:строка 97
2018.10.24 23:23:40: Err=21 в SignSmevRequest.SignXmlTransport

Think
Offline Boris@Serezhkin.com  
#85 Оставлено : 24 октября 2018 г. 23:19:27(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
И еще раз здравствуйте.
Хоть плач, хоть смейся.
Попробовал подписать конверт СМЭВ3
без XADES, через чистую SignedXml
Собираю Reference и на попытку вычислить
сигнатуру получаю исключение:
Требуется не менее одного элемента Reference.StackTrace
в System.Security.Cryptography.Xml.SignedInfo.GetXml(XmlDocument document)
в System.Security.Cryptography.Xml.SignedXml.GetC14NDigest(HashAlgorithm hash)
в System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
в CryptoPro.Sharpei.Xml.CPSignedXmlDetour.ComputeSignature()
в bx_smev3.SignSmevRequest.SignXmlTransport(XmlDocument doc, X509Certificate2

Кто-то сталкивался с таким? Что зто? И как бороться?
Offline two_oceans  
#86 Оставлено : 25 октября 2018 г. 2:20:25(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 33 раз в 33 постах
Цитата:
Требуется не менее одного элемента Reference.
Цитата:
И <ds:Reference URI="#SIGNED_BY_CONSUMER">
Вроде низко стоит.....
Если не найдено ни одного элемента reference, то похоже поиск того, что собрали - в итоге не удался.

Судя по примерам кода - многие разработчики ищут нужные места документа таким образом, который чудом срабатывает только в частном случае и получают проблемы, когда структура документа меняется. Писать для частного случая в принципе нормально, но важно провести исследование и оставлять комментарии в каких случаях работает, в каких нет.

Чтобы было более предметно, покажите пожалуйста xml, который передаете на подпись (можно не разбавлять переносами и отступами, в одну строчку) и уточните как именно ищите место прикрепления подписи, какой id подписываемого элемента указываете.
Offline Boris@Serezhkin.com  
#87 Оставлено : 25 октября 2018 г. 4:08:09(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Автор: two_oceans Перейти к цитате
Чтобы было более предметно, покажите пожалуйста xml, который передаете на подпись (можно не разбавлять переносами и отступами, в одну строчку) и уточните как именно ищите место прикрепления подписи, какой id подписываемого элемента указываете.

Подписываем узел <ns:SenderProvidedRequestData Id="body"
соответственно
Reference reference = new Reference(); reference.Uri = "body";
Если попробовать весь документ reference.Uri = "";
Результат не изменится.
Куда поместить подпись? Ищем ds:Signature после подписываемого узла
и туда вставляем.
Outs.xml (9kb) загружен 4 раз(а). - то что хотим подписать.

Подумал о том что мой глобальный xmldocument "поистрепался"
создал новый залил в него старый
Результат изменился:
Недопустимый URI-адрес. Слишком длинная схема URI.StackTrace
в System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)

Отредактировано пользователем 25 октября 2018 г. 4:22:19(UTC)  | Причина: Не указана

Offline two_oceans  
#88 Оставлено : 25 октября 2018 г. 5:10:23(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 33 раз в 33 постах
Если правильно понимаю, это сообщение для ГИС ГМП об уплате? Тогда я даже не знаю с чего начать - по требованиям СМЭВ 3 вид сведений и информационная система поставщика (ГИС ГМП) распознается по пространству имен и имени тега стоящего непосредствеенно под тегом MessagePrimaryContent, причем должен быть только один непосредственный потомок (корневой тег вида сведений) у MessagePrimaryContent.

В приведенном тексте корневой тег вида сведений ImportPaymentsRequest (в котором в частности указывается senderIdentifier и senderRole) пропущен. В расширенном формате подписи серийный номер сертификата указывается в десятичном представлении, CertDigest SHA1 выглядит подозрительно. Для второго референса с расширенными свойствами подписи вроде как нет нужды в трансформе enveloped signature, так как свойства уже внутри подписи и в самих свойствах подписи нет. Про гост-2012 была новость о поддержке в тестовом контуре, не видел новости о продуктивном контуре.

Цитата:
Ищем ds:Signature после подписываемого узла
Непосредственно после (на одном уровне? среди потомков? просто по тексту документа?) Может быть там CallerInformationSystemSignature между тегом и подписью мешает? Внутренее содержимое вообще подписано enveloped signature, то есть безразлично что нашлось подпись включена внутрь пописываемого тега. "ADE247F0FF62502C915FA6C5DA9343429BD5DE5F" что за значение?
Offline Boris@Serezhkin.com  
#89 Оставлено : 25 октября 2018 г. 5:53:56(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Автор: two_oceans Перейти к цитате
"ADE247F0FF62502C915FA6C5DA9343429BD5DE5F" что за значение?/quote]
Это thumb сертификата которым надо подписать

Offline Boris@Serezhkin.com  
#90 Оставлено : 30 октября 2018 г. 9:08:41(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Ну вот вроде все построилось
Подписывал через простую SignedXml
Результат, GetXml, переносил в
ns2:CallerInformationSystemSignature
ручками. Там в шаблоне была готовая структура подписи.
переносил:
ds:DigestValue
ds:SignatureValue
ds:X509Certificate

Результат с портала:
ЭП-ОВ не соответствует подписанным данным:
Ошибка проверки ЭП: Нарушена целостность ЭП.

RequestUTF8.xml (12kb) загружен 5 раз(а).

Может кто подскажет что у меня не так?

Проверка на портале GosUslugi:
Есть URL=https://smev3.gosuslugi.ru/portal/checkxmlform.jsp
Все красиво. НО на мой файл отвечает
"Ошибка разбора XML: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 841; Element type "pkg:ImportedPayment" must be followed by either attribute specifications, ">" or "/>".
"
Это полный бред.
Попросил друга, он от себя загрузил и получил результат как на портале.
Может у меня провайдер, Теле2, дурит. Не знаю.


Offline two_oceans  
#91 Оставлено : 31 октября 2018 г. 10:25:30(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 33 раз в 33 постах
Цитата:
переносил:
ds:DigestValue
ds:SignatureValue
ds:X509Certificate
Перенос только ds:DigestValue может привести к нарушению целостности подписи, так как математически подписана в ds:SignatureValue именно вся ветка ds:SignedInfo целиком, лучше переносить всю ветку ds:SignedInfo.

По поводу второй ошибки - почти уверен, что все же Вы пропустили между глаз мой пост выше - в запросе не хватает корневого элемента запроса
Код:
<req:ImportPaymentsRequest xmlns:req="http://roskazna.ru/gisgmp/xsd/services/import-payments/2.0.1" ...>
между ns2:MessagePrimaryContent и pkg:PaymentsPackage. Многоточие - это куча пространств имен ГИС ГМП и параметры запроса. Тестовая проверка СМЭВ3 https://smev3.gosuslugi.ru/portal/checkxmlform.jsp проверяет не только подпись, не только схемы данных смэв (как было в смэв 2), но и схему документа полностью, включая добавленные схемы вида сведений гис гмп.

Пропустили корневой тег и кучу объявлений пространства имен - все уже по-другому, тип для supplierBillID не определен, проверка СМЭВ3 не считает его допустимым аттрибутом и ругается бредовым описанием ошибки. Еще раз акцентирую: многие ошибки проверки подписи из-за неправильного изначального подписываемого документа.
Offline Max Zimin  
#92 Оставлено : 31 октября 2018 г. 12:32:42(UTC)
Max Zimin

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

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

Сказал(а) «Спасибо»: 1 раз
Всем добрый день. Я столкнулся со следующей проблемой - я получаю ошибку при сериализации XML SendRequestRequest.

Выбрасываемое исключение:
Код:

Невозможно создать временный класс (результат=1).
error CS0030: Преобразование типа "Smev.SmevService.AttachmentContentType" в "Smev.SmevService.AttachmentContentList" невозможно
error CS0030: Преобразование типа "Smev.SmevService.AttachmentHeaderType" в "Smev.SmevService.AttachmentHeaderList" невозможно
error CS0030: Преобразование типа "Smev.SmevService.RefAttachmentHeaderType" в "Smev.SmevService.RefAttachmentHeaderList" невозможно
error CS0029: Неявное преобразование типа "Smev.SmevService.AttachmentContentList" в "Smev.SmevService.AttachmentContentType" невозможно
error CS0029: Неявное преобразование типа "Smev.SmevService.AttachmentHeaderList" в "Smev.SmevService.AttachmentHeaderType" невозможно
error CS0029: Неявное преобразование типа "Smev.SmevService.RefAttachmentHeaderList" в "Smev.SmevService.RefAttachmentHeaderType" невозможно


Трассировка стека:

Код:
   
в System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
   в System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
   в System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
   в System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
   в System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
   в System.Xml.Serialization.XmlSerializer..ctor(Type type)
   в Smev.Xml.XmlCustomConverter.Serialize(Object value) в C:\Work\Smev-dev\src\Smev\Xml\XmlCustomConverter.cs:строка 90
   в Smev.Http.SmevClient.<SendRequestAsync>d__6.MoveNext() в C:\Work\Smev-dev\src\Smev\Http\SmevClient.cs:строка 73
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   в Smev.Http.SmevClient.<SendRequestAsync>d__8.MoveNext() в C:\Work\Smev-dev\src\Smev\Http\SmevClient.cs:строка 175
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   в Smev.SmevPFRClient.<Validate>d__7.MoveNext() в C:\Work\Smev-dev\src\Smev\SmevPFRClient.cs:строка 74



Я перерыл всё, что только можно. Чаще всего такая проблема возникает из-за двумерных массивов, но они в данном случае не используются. Но в любом случае похоже на то, что первопричина в неправильной кодогенерации из WDSL.

Прошу помочь с данным вопросом или дать наводку.

Отредактировано пользователем 6 ноября 2018 г. 8:24:41(UTC)  | Причина: Не указана

Offline Bpar  
#93 Оставлено : 14 ноября 2018 г. 6:57:21(UTC)
Bpar

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

Группы: Участники
Зарегистрирован: 05.08.2014(UTC)
Сообщений: 8

Поблагодарили: 2 раз в 2 постах
Автор: Max Zimin Перейти к цитате

Прошу помочь с данным вопросом или дать наводку.


Поскольку эти структуры мне не нужны, то сделал так
Код:

public partial class SenderProvidedRequestData : object, System.ComponentModel.INotifyPropertyChanged
{
    ...
    private /*AttachmentHeaderType[]*/object[] attachmentHeaderListField;
    private /*RefAttachmentHeaderType[]*/object[] refAttachmentHeaderListField;
    ...

    [System.Xml.Serialization.XmlElementAttribute("AttachmentHeaderList", typeof(AttachmentHeaderList), Namespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2", Order = 7)]
    public /*AttachmentHeaderType[]*/ object[] AttachmentHeaderList
    ...
    [System.Xml.Serialization.XmlElementAttribute("RefAttachmentHeaderList", typeof(RefAttachmentHeaderList), Namespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2", Order = 8)]
    public /*RefAttachmentHeaderType[]*/ object[] RefAttachmentHeaderList
    ...
}
thanks 1 пользователь поблагодарил Bpar за этот пост.
Max Zimin оставлено 14.11.2018(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
5 Страницы«<345
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.