Подписать текстовый файл присоедиенной ЭЦП

1. user1393353 11 24.03.23 06:38 Сейчас в теме
Необходимо подписать текстовый файл ЭЦП, так что бы ЭЦП находилась в этом файле вместе с подписанным текстом.
Могу вот так:

 ТипМенеджераКриптографии = 81;
МенеджерКриптографии = Новый МенеджерКриптографии("", "", ТипМенеджераКриптографии);
	...
	
МенеджерКриптографии.ВключениеСертификатовВПодпись =  РежимВключенияСертификатовКриптографии.НеВключать;

МенеджерКриптографии.Подписать(ФайлЗапроса, ФайлЗапроса + ".p7s", Сертификат);


Но подпись получается отдельно от текстового файла, мне необходимо что бы была в текстовом файле, вместе с текстом.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. RustamZz 24.03.23 09:00 Сейчас в теме
(1)
МенеджерКриптографии (CryptoManager)
Подписать (Sign)
Описание:
Создает подпись в формате CMS (базируется на PKCS#7) и возвращает ее как ДвоичныеДанные или сохраняет ее в файл.
Подпись создается алгоритмами, которые заданы свойствами АлгоритмХеширования и АлгоритмПодписи.
В данные подписи исходный файл не включается.

Может напрямую через Crypto API подписывать?
11. user1393353 11 24.03.23 09:11 Сейчас в теме
(10)
МенеджерКриптографии (CryptoManager)
Подписать (Sign)
Описание:
Создает подпись в формате CMS (базируется на PKCS#7) и возвращает ее как ДвоичныеДанные или сохраняет ее в файл.
Подпись создается алгоритмами, которые заданы свойствами АлгоритмХеширования и АлгоритмПодписи.
В данные подписи исходный файл не включается.


Как в данном случае получить файл в который включены подпись и подписанные данные? я думаю никак.


(10)
Может напрямую через Crypto API подписывать?

Пробовал вот так:
oSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
oSignedData.Content = Base64Строка(ДвоичныеДанные);
oSignedMessage = oSignedData.SignCades(oCertificate, 65535, false, 0);

ошибка: CAdESCOM.CadesSignedData.1 Интерфейс не поддерживается
Обновление компоненты не помогло.

Возможно у вас есть другой пример кода.
12. RustamZz 24.03.23 09:46 Сейчас в теме
(11)
Как в данном случае получить файл в который включены подпись и подписанные данные? я думаю никак.
с помощью МенеджераКриптографии - никак.
Возможно у вас есть другой пример кода.
Не подскажу. Пока устраивает отсоединенная подпись.
17. independ 1520 28.03.23 04:37 Сейчас в теме
2. comptr 31 24.03.23 08:01 Сейчас в теме
А разве формат TXT предполагает хранение присоединенной подписи?
15. user1393353 11 27.03.23 11:18 Сейчас в теме
(2) КриптоАРМ может так подписывать, при открытии это выглядит как иероглифы и сам подписанный текст.
https://ca.kontur.ru/articles/ecp-terminy - раздел "Присоединенная электронная подпись"
3. laperuz 46 24.03.23 08:03 Сейчас в теме
Cмотрите в сторону XML и XMLDSig
5. user1393353 11 24.03.23 08:34 Сейчас в теме
(3) смотрел не помогло, примера для прикрепление подписи ко всему файлу не нашел, только подпись отдельных тэгов
7. laperuz 46 24.03.23 08:50 Сейчас в теме
(5)А в чем проблема поместить все ваше содержимое, которое нужно подписать, в отдельный тэг?
8. user1393353 11 24.03.23 08:58 Сейчас в теме
(7) предложение кажется мне странным, наверное я чего то не понимаю, но в итоге получим в одном тэге текст в другом подпись, не примет сервер такой запрос.
9. laperuz 46 24.03.23 08:59 Сейчас в теме
(8)Вы точно не смотрели что такое XMLDSig, если предложение о том, что в одном теге текст, а в другом - подпись кажется вам странным.
14. user1393353 11 27.03.23 11:16 Сейчас в теме
(9) принимающая сторона не примет такой формат. Вот когда КриптоАРМ подписано со снятой галочкой "сохранить подпись в отдельном файле", тогда принимает.
4. comptr 31 24.03.23 08:10 Сейчас в теме
Например, в описании БСП 3.1.7 сказано, что:
В программе 1С:Предприятие возможна работа только с отсоединенной электронной подписью. Работа с присоединенными подписями и подписями внутри документа в программе недоступна.


Посмотрите вот это, может пригодится: https://infostart.ru/public/1493281/
6. user1393353 11 24.03.23 08:38 Сейчас в теме
(4) не смогу, у меня на это несколько причин: не понятно будет ли это работать (у меня не честный знак), у меня нет стартмани.
В БСП есть вот это ЭлектроннаяПодписьКлиент.Подписать(ОписаниеДанных, Форма, ОбработкаРезультата, ТипПодписи), разобраться не смог, эта штука работает в асинхронном режиме (мне в существующий код это вставлять очень сложно), непонятно куда кладет подписанный файл.
13. serg33rus 28 24.03.23 20:36 Сейчас в теме
(16) Вообще 1С умеет присоединенную подпись только у PDF. И это понятно, поскольку ЭЦП в PDF ложиться в отдельный слой и не меняет содержимое документа. Т.е. можно даже несколько раз подписать и все подписи будут действительны, если документ не менялся. А вот как в TXT сделать? Крипто вроде умеет делать контейнер с файлом и подписью. Это типа для пересылки по мылу. Но там все несколько иначе. Подпись проверяется при распаковке контейнера. Насколько я помню.
На инфостарте валяется моя обработка для формирования ЭЦП, в том числе присоединенной. Но txt только отсоединенной умеет.
16. Mistrall 28.03.23 04:17 Сейчас в теме
Подписать текстовый файл присоединенной ЭЦП напрямую не получится. Вы можете либо создать контейнер с нужным файлом и подписать его (так, например, делает КриптоАРМ), либо конвертировать его в другой формат (если есть возможность договориться с другой стороной).
Кстати, а чем открепленная подпись не устраивает?
18. user1393353 11 28.03.23 18:34 Сейчас в теме
(16)
Вы можете либо создать контейнер с нужным файлом и подписать его (так, например, делает КриптоАРМ)

Как это сделать? у меня так и не получилось. Есть пример кода.


(16)
(если есть возможность договориться с другой стороной).
Кстати, а чем открепленная подпись не устраивает?

нет, с принимающей стороной нет возможности договориться, у них только один вариант работает. Показали, что подписывать КриптоАРМ вот так.
19. Mistrall 31.03.23 05:07 Сейчас в теме
(18)
(18)
Как это сделать? у меня так и не получилось. Есть пример кода.


Примера на1С у меня нет (задачи не ставилось). Единственное, что могу предложить это описание API КриптоАРМ.
20. independ 1520 06.04.23 15:29 Сейчас в теме
Подписать ЭЦП с помощью утилиты csptest.exe из КриптоПро
rem Подписать
csptest -sfsign -sign -in 08_110400716550_002_19012023_B6662EA1-EC95-423A-95B5-793526329DA9.xml -out 08_110400716550_002_19012023_B6662EA1-EC95-423A-95B5-793526329DA9.xml.sig -my B030C18CB16B8A0EFBDB7DB5F8131D5C2E2617D1 -addsigtime -add
rem Зашифровать
csptest -sfenc -encrypt -in 08_110400716550_002_19012023_B6662EA1-EC95-423A-95B5-793526329DA9.xml.sig -out 08_110400716550_002_19012023_B6662EA1-EC95-423A-95B5-793526329DA9.xml.sig.enc -my bfdc1beae00ee5eb525fe029de79b7d3c7dee3fd
Оставьте свое сообщение

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