проверка отсоединенной подписи менеджером криптографии

1. dmitrixru 26.09.22 09:48 Сейчас в теме
Всем привет,
Возникла у нас необходимость проверять файлы, подписанные квалифицированной подписью в другой приложении посредством КриптоПро.
Платформа 8.3.20/8.3.21. Подпись отсоединенная, подписанный файл - простой doc

При попытке проверить подпись для тестового файла методами:
сертификат = неопределено;
МенеджерКриптографии = Новый МенеджерКриптографии("", "", 80);
МенеджерКриптографии.ПроверитьПодпись(данные, подпись, Сертификат);
где данные = doc из вложения
подпись = sig из вложения (в формате .p7s)
Получаем ошибку:
Ошибка при вызове метода контекста (ПроверитьПодпись): Язык описания абстрактного синтаксиса данных. Обнаружено неверное значение тега. (Возможно, указан сертификат, не поддерживаемый данным модулем криптографии).

Собственно, если подпись содержит в себе 1 сертификат, то проверка происходит нормально,
а вот если в подписи больше сертификатов, например, КриптоПро добавляет сертификат промежуточного центра, то менеджер криптографии валится с ошибкой выше.

В ожидании ответа от службы поддержки 1С может у сообщества есть мысли и решения? ;)
Найденные решения
15. dmitrixru 14.11.22 17:25 Сейчас в теме
(14) Проблема в том, что файл подписи представлен в Base64 кодировке. Для методов ПроверитьПодпись, ПроверитьСертификат, файлы PKCS#7 (шифрованные пакеты и подписи), а также файлы сертификатов должны быть представлены в бинарном виде.
Если сконвертировать файл из Base64 в бинарный вид, то подпись успешно проверяется.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 26.09.22 10:21 Сейчас в теме
(1)При подписи платформа тоже по умолчанию добавляет промежуточный сертификат.
Никаких проблем с проверкой подписи не встречал.
Приложите сертификат, файл и подпись.
3. dmitrixru 26.09.22 11:10 Сейчас в теме
(2) с публикацией подписи есть сложности)
4. Sashares 35 26.09.22 11:32 Сейчас в теме
(3)Попробуйте на базе в которой есть БСП - добавьте в присоединенные файлы ваш файл и добавьте к нему подпись из внешнего файла. Нажмите проверить подпись. Если ошибки не будет, смотрите в чем у вас отличия.
5. dmitrixru 26.09.22 12:17 Сейчас в теме
(4) Спасибо, интересный метод.
Получили ошибку:
При получении сертификатов из файла подписи произошла ошибка:
Ошибка при чтении криптографических данных (2).

Версия компоненты ExtraCryptoAPI на клиенте - Компонента ExtraCryptoAPI не установлена (Не удалось подключить внешнюю компоненту "ExtraCryptoAPI".
Возможно компонента не предназначена для клиентского приложения Тонкий клиент (Windows x86-64).

Техническая информация:
e1cib/data/Справочник.ВнешниеКомпоненты.ХранилищеКомпоненты?ref=a309f9cfe28f5f7f11ec3fd70116f07d
Метод НачатьПодключениеВнешнейКомпоненты вернул Ложь.).

В справочнике внешняя компонента есть, обновлена.
10. dmitrixru 27.09.22 12:00 Сейчас в теме
(2) 1С зарегистрировала ошибку платформы 60002924
У вас точно все работает с 2-я сертификатами в подписи: )
Sashares; +1 Ответить
11. Sashares 35 27.09.22 13:10 Сейчас в теме
(10)Да, 2 недели назад проверял, все работало.
12. dmitrixru 28.09.22 09:12 Сейчас в теме
(11) А какая у вас версия платформы?
13. Sashares 35 28.09.22 09:14 Сейчас в теме
6. Sashares 35 26.09.22 12:37 Сейчас в теме
(1)
При попытке проверить подпись для тестового файла методами:
сертификат = неопределено;
МенеджерКриптографии = Новый МенеджерКриптографии("", "", 80);
МенеджерКриптографии.ПроверитьПодпись(данные, подпись, Сертификат);


Собственно несколько вопросов.
Почему не указаны параметры менеджера криптографии? Если windows, то заполняется 1 параметр, для крипто про - "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"

Почему сертификат неопределено?
7. dmitrixru 26.09.22 13:42 Сейчас в теме
(6) 1-й параметр не обязателен (точнее обязателен, но можно пустой строкой), он, насколько я понимаю, определяется автоматом из 3-го параметра. Тем не менее, я пробовал его указывать, и результат такой же.
Сертификат неопределено, потому что это переменная, в которую возвращается сертификат из подписи методом ПроверитьПодпись. Этот код есть как в примерах к платформе на ИТС, так и в типовой конфигурации.
8. Sashares 35 26.09.22 14:39 Сейчас в теме
(7)Логично =)
Тогда увы, других идей, кроме как проверить на другом компьютере, нет.
9. dmitrixru 26.09.22 15:11 Сейчас в теме
(8) в 1с еще неделю назад написали)
посмотрим, что ответят
Спасибо за идеи)
14. LSM 13.11.22 16:58 Сейчас в теме
(9) Столкнулся с той же проблемой установки ExtraCryptoAPI. У Вас получилось решить?
15. dmitrixru 14.11.22 17:25 Сейчас в теме
(14) Проблема в том, что файл подписи представлен в Base64 кодировке. Для методов ПроверитьПодпись, ПроверитьСертификат, файлы PKCS#7 (шифрованные пакеты и подписи), а также файлы сертификатов должны быть представлены в бинарном виде.
Если сконвертировать файл из Base64 в бинарный вид, то подпись успешно проверяется.
16. is69 29.11.22 13:42 Сейчас в теме
(1) Скажите, dmitrixru, а был ответ по вашей ошибке от 1С?
17. dmitrixru 30.11.22 11:18 Сейчас в теме
(16) Да, я его в (15) написал
18. is69 30.11.22 13:06 Сейчас в теме
(15) Странно. Да, есть такое дело. Но, у меня подобная ошибка появилась на одной подписи, которая была в бинарном виде (важный момент - в ЭП лежит вся цепочка сертификатов, и автора подписи БСП брала из корневого сертификата, т.е. "Минцифры", почему то). Но ... такая ошибка обнаружилась на БСП 3.1.7 (и ещё пробовал на 2.2.Х, то же самое). А в тестовой БСП 3.1.8. всё уже Ок.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот