Не проходит проверку xml документ с двумя подписами с разными алгоритмами (из-за подписи сервиса egov mobile)

Доброго дня!

Документ проверки: xml документ, содержащий закодированное тело а так же две подписи:

  1. подпись со стороны NCALayer (gost34310-gost34311)
  2. подпись со стороны egov mobile https://egov.kz/cms/ru/information/mobile/mobile_application (rsa-sha256)

Проверяю используя libkalkancryptwr-64.so.2.0.6 и метод проверки xml.
Получаю результат:

Signature N 2
certificateSerialNumber=4D15F0E2298A1A406EBD123E75B73F38E0A9BA76
signatureAlgorithm=sha256WithRSAEncryption(1.2.840.113549.1.1.11)
serialNumber=IIN930421050466
Signature is invalid

Signature N 1
certificateSerialNumber=7FAF21FF7F5E7DD2DEA6499C4A8F079D23DB72CE
signatureAlgorithm=GOST 34.311-95 with GOST 34.310-2004(1.2.398.3.10.1.1.1.2)
serialNumber=IIN840514400500
Signature is OK

Как бы не менялся порядок подписания rsa подпись не проходит проверку.

А теперь самое интересное — ключи которыми происходит подпись со стороны egov mobile лежат у них, у нас нету возможности загружать или как либо влиять на них, само ведомство не дает мне ответов =/

Что самое интересное? Не работает это только на определенных двух пользователях.
И именно у этих пользователей значения контента внутри xml элемента ds::Signature закодировано strict base64 кодированием, у тех же сертификатов и подписей которые проходят проверку — контент закодирован обычным base64 кодированием (с переносом строк).

Я попытался перекодировать контент из strict кодировки в обычный base64 с переносом строк — но результат проверки такой же.

Удивляет, что strict или не-strict кодирование ни на что не влияет, так как все-таки данные сертификата судя по результату смогли быть распаршены (в конце концов есть transform xml данных)

Не ясно, честно говоря куда копать. Врятли мне поверят в ведомстве, что именно на паре пользователей у меня почему-то генерируется странный результат, при этом новые пользователи системы egov mobile такой проблемы не имеют - все проверки проходят.

XML документ который НЕ ПРОХОДИТ проверку: https://gist.github.com/pechorin/def51624da4da2abb3c10209769bdf58

XML документ который ПРОХОДИТ проверку: https://gist.github.com/pechorin/d9516bb279fbd4b6b868a14cf7e0300d

Signature N 2
certificateSerialNumber=709B0D6F8679017DD6E0AAAA58DCDB50CA0D6FEC
signatureAlgorithm=sha256WithRSAEncryption(1.2.840.113549.1.1.11)
serialNumber=IIN910701450975
Signature is OK

Signature N 1
certificateSerialNumber=7FAF21FF7F5E7DD2DEA6499C4A8F079D23DB72CE
signatureAlgorithm=GOST 34.311-95 with GOST 34.310-2004(1.2.398.3.10.1.1.1.2)
serialNumber=IIN840514400500
Signature is OK

P.S. - само содержимое для подписи я тоже пробовал кодировать как в strict кодировании, так и в non-strict base64, результат одинаковый.

Заранее спасибо, извините если не туда написал :slight_smile:

Нашел вроде бы похожую проблему - The signature or decryption was invalid. Да, видимо надо писать в egov mobile.

Добрый день
Да, проверка действительно обрывается именно на RSA.

Вот здесь есть контакты аналитика сервиса egovMobile. Думаю они попробуют разобраться в ситуации.