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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline alexey777  
#1 Оставлено : 2 сентября 2024 г. 14:22:53(UTC)
alexey777

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

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

Добрый день. Отправляем запрос на ендпоинт /api/v3/lk/documents/create?pg=lp
Нам приходит ответ с id документа.

Используем его для проверки статуса документа по ендпоинту /api/v4/true-api/doc/{$id}/info.
Нам приходит ответ:
[{"number":"de99792e-ccc2-41e3-b60b-3c4d071fde3f","docDate":"2024-09-02T11:01:19.558Z","receivedAt":"2024-09-02T11:01:19.558Z","type":"LK_RECEIPT","status":"CHECKED_NOT_OK","senderInn":"инн","senderName":"имя","receiverInn":null,"receiverName":null,"invoiceNumber":null,"invoiceDate":null,"relatedDocId":null,"input":false,"errors":["33: Данные электронной подписи не соответствуют текущему участнику."],"commonErrors":[{"errorCode":"33","errorMessage":"33: Данные электронной подписи не соответствуют текущему участнику.","errorObject":"de99792e-ccc2-41e3-b60b-3c4d071fde3f"}],"productGroup":["lp"],"productGroupId":[1]}]

Авторизацию проходим корректно, токен в порядке. Судя по ошибке, у нас некорректная ОУКЭП.
Формируем ОУКЭП следующим образом:

byte[] startData = Arrays.copyOf(data, data.length);
//создаем новое cms сообщение
data = createHashCMS(data, keys, certs, null, false);
// Создаем CAdES-BES подпись, имея хеш сообщения.
byte[] detached = createHashCMSEx(CMStools.digestm(startData, CMStools.DIGEST_ALG_NAME),
true, keys, certs, null, true, true);
byte[] r = hashSignCMS(data, keys, certs, null, null);

Соответсnвенно r - токен для авторизации, а detached - ОУКЭП.
Пытались формировать ОУКЭП от хешированных данных, от результата. Всегда одна и та же ошибка.
С чем это может быть связано?
Все методы взяты из samples-sources.jar!\CMS_samples\CMSSign.java
Offline Санчир Момолдаев  
#2 Оставлено : 2 сентября 2024 г. 21:04:26(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 93 раз
Поблагодарили: 256 раз в 241 постах
Добрый день.

скорее всего старые оиды указываются. в примерах 2001, а ключ у вас скорее всего 2012-256
Техническую поддержку оказываем тут
Наша база знаний
Offline alexey777  
#3 Оставлено : 2 сентября 2024 г. 21:20:20(UTC)
alexey777

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

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

Автор: Санчир Момолдаев Перейти к цитате
Добрый день.

скорее всего старые оиды указываются. в примерах 2001, а ключ у вас скорее всего 2012-256


В методах OID берется от ключа, то есть в нашей ситуации будет действительно 2012-256. И он корректный..
Обязательно ли передавать CMS BES? На форуме видели данные, что именно в таком виде принимается сообщение. Не работает ни с ней, ни с обычным CMS
Offline Санчир Момолдаев  
#4 Оставлено : 3 сентября 2024 г. 8:49:29(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 93 раз
Поблагодарили: 256 раз в 241 постах
приложите подпись и исходный файл
Техническую поддержку оказываем тут
Наша база знаний
Offline alexey777  
#5 Оставлено : 5 сентября 2024 г. 10:53:43(UTC)
alexey777

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

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

Автор: Санчир Момолдаев Перейти к цитате
приложите подпись и исходный файл


Санчир, какую подпись приложить? Открытую?

Исходный файл имеете ввиду код?

Отредактировано пользователем 5 сентября 2024 г. 10:55:33(UTC)  | Причина: Не указана

Offline Андрей *  
#6 Оставлено : 5 сентября 2024 г. 11:20:17(UTC)
Андрей *

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

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

Сказал «Спасибо»: 545 раз
Поблагодарили: 2191 раз в 1711 постах
Автор: alexey777 Перейти к цитате
Автор: Санчир Момолдаев Перейти к цитате
приложите подпись и исходный файл


Санчир, какую подпись приложить? Открытую?

Исходный файл имеете ввиду код?


исходный файл - тот, что подписывался,
подпись - файл содержащий подпись, cms (.sig)
Техническую поддержку оказываем тут
Наша база знаний
Offline alexey777  
#7 Оставлено : 10 сентября 2024 г. 15:23:48(UTC)
alexey777

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

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

Отправили в личном сообщении. На всякий случай уточню, отправляем запросы на эндпоинты в Честный Знак (их True api)
Offline Андрей *  
#8 Оставлено : 10 сентября 2024 г. 15:39:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 545 раз
Поблагодарили: 2191 раз в 1711 постах
подпись корректная, отсоединенная, der


вернёмся к исходному, где сообщается о причине:

[{"number":"de99792e-ccc2-41e3-b60b-3c4d071fde3f",
"docDate":"2024-09-02T11:01:19.558Z","receivedAt":"2024-09-02T11:01:19.558Z","type":"LK_RECEIPT",

"status":"CHECKED_NOT_OK","senderInn":"инн","senderName":"имя",
"receiverInn":null,"receiverName":null,"invoiceNumber":null,"invoiceDate":null,"relatedDocId":null,"input":false,"errors":["33: Данные электронной подписи не соответствуют текущему участнику."],

"commonErrors":[{"errorCode":"33",
"errorMessage":"33: Данные электронной подписи не соответствуют текущему участнику.",
"errorObject":"de99792e-ccc2-41e3-b60b-3c4d071fde3f"}],"productGroup":["lp"],"productGroupId":[1]}]


Сертификат ИП, от ФНС.

Участник кто должен быть? Что ожидает сервис?
Техническую поддержку оказываем тут
Наша база знаний
Offline alexey777  
#9 Оставлено : 10 сентября 2024 г. 16:42:36(UTC)
alexey777

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

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

Автор: Андрей * Перейти к цитате
подпись корректная, отсоединенная, der


вернёмся к исходному, где сообщается о причине:

[{"number":"de99792e-ccc2-41e3-b60b-3c4d071fde3f",
"docDate":"2024-09-02T11:01:19.558Z","receivedAt":"2024-09-02T11:01:19.558Z","type":"LK_RECEIPT",

"status":"CHECKED_NOT_OK","senderInn":"инн","senderName":"имя",
"receiverInn":null,"receiverName":null,"invoiceNumber":null,"invoiceDate":null,"relatedDocId":null,"input":false,"errors":["33: Данные электронной подписи не соответствуют текущему участнику."],

"commonErrors":[{"errorCode":"33",
"errorMessage":"33: Данные электронной подписи не соответствуют текущему участнику.",
"errorObject":"de99792e-ccc2-41e3-b60b-3c4d071fde3f"}],"productGroup":["lp"],"productGroupId":[1]}]


Сертификат ИП, от ФНС.

Участник кто должен быть? Что ожидает сервис?


Согласно документации true апи честного знака:
"Для подачи сведений необходимо тело документа в формате JSON "Единого метода создания
документов" заполнить значениями параметров в соответствии с описанием в таблице (см.
"Единый метод создания документов"). Параметр "product_document" должен быть телом
документа "Вывод из оборота" со всеми указанными параметрами, закодированным в Base64.
Далее тело незакодированного документа в формате JSON требуется подписать открепленной
УКЭП в кодировке Base64 и заполнить полученным значением параметр "signature".
Сформированную УКЭП необходимо открыть в любом доступном текстовом редакторе и
удалить символы переноса строк.
В случае успеха в ответе приходит уникальный идентификатор документа.
После вывода из оборота товара статус КИ меняет тип на RETIRED (Выбыл) или
WRITTEN_OFF ("Списан") (см."Справочник «Статусы КИ»")."

А теперь попроще:
Мы отправляем запрос в апи ЧЗ: нам приходит ответ в виде id документа. Далее мы смотрим, что с этим документом по его id. И вот в этот момент нам приходит информация о том, что документ не обработан. Мы формируем следующие данные:
Код:

$json = [
            "inn" => "указываем инн",
            "action" => "DISTANCE",
            "action_date" => date("Y-m-d"),
            "products" => [
                [
                    "cis" => $ciz
                ],
            ]
        ];

        $data = [
            "document_format" => 'MANUAL',
            "product_document" => base64_encode(json_encode($json)),
            "type" => $type,
            "signature" => base64_encode($detached_sign) //И ВОТ тут неверная подпись
        ];

Вся загвоздка именно в этой строке:
"Далее тело незакодированного документа в формате JSON требуется подписать открепленной
УКЭП в кодировке Base64 и заполнить полученным значением параметр "signature"."

Мы его подписываем, но видимо, неправильно...

Вот так формируем cms и подписываем:
Код:

 String text = "{\"inn\":\"ИНН сам\",\"action\":\"DISTANCE\",\"action_date\":\"2024-09-10\",\"products\":[{\"cis\":\"КИЗ сам\"}]}";
        byte[] textData  = createCMSEx(text.getBytes(), keys, certs, null, false, JCSP.PROVIDER_NAME);
        byte[] detached  = createCMSEx(text.getBytes(), keys, certs, null, true, JCSP.PROVIDER_NAME);
        data = createCMSEx(data, keys, certs, null, false, JCSP.PROVIDER_NAME);
        byte[] r = signCMSEx(data, keys, certs, null, null, JCSP.PROVIDER_NAME);
        byte[] r2 = signCMSEx(textData, keys, certs, null, detached, JCSP.PROVIDER_NAME);
        result = new Result((new Encoder()).encode(r), (new Encoder().encode(r2)));

Все методы createCMSEx и signCMSEx взяты из примеров по кадесу
Offline Андрей *  
#10 Оставлено : 10 сентября 2024 г. 17:36:21(UTC)
Андрей *

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

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

Сказал «Спасибо»: 545 раз
Поблагодарили: 2191 раз в 1711 постах
еще раз предлагаю внимательно перечитать ответ сервиса...
Цитата:
""signature" => base64_encode($detached_sign) //И ВОТ тут неверная подпись"
- с чего такой вывод?

Сервис успешно проверил подпись.
Далее он проверяет другие условия, тут не к криптографии вопрос, ЭП корректная.

Для интереса - передать в signature - подпись от другого файла\данных... и увидеть именно ошибку, связанную с корректностью ЭП (некорректный хеш или еще что там вернёт)
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.