Имя: Пароль:
1C
1С v8
Как извлечь содержимое подписанного ЭЦП файла?
0 ex-human
 
18.06.15
02:41
Повсеместно широко освещается вопрос получения из хранилища сертификатов и подписывания ЭЦП файлов, меня интересует как извлечь из подписанного ЭЦП файла его содержимое.
1 Aleksey
 
18.06.15
02:48
А вчем проблема? Или файл зашифрован?
2 ex-human
 
18.06.15
03:14
Нет файл не зашифрован, просто подписан, мне не нужно ничего проверять, нужно просто вытащить само содержимое
3 ex-human
 
18.06.15
03:15
Я использую Capicom, не могу понять каким образом это сделать
4 Escander
 
18.06.15
03:15
(0) эээ, посмотреть работу с ЭЦП в БСП?
5 ex-human
 
18.06.15
03:19
Забыл добавить, используется 1С 8.1
6 ex-human
 
18.06.15
03:20
Т.е нужно реализовать такую связку: проверить ЭЦП, если присоединенная ЭЦП - после проверки сохранить буфер в файл
7 rphosts
 
18.06.15
04:16
(5) для 8.1 тоже есть БСП
8 Aleksey
 
18.06.15
04:26
(7) работа с ЭЦП появилась только в последних релизах
9 Aleksey
 
18.06.15
04:29
яяяяяяяяяяяА вообще переходите на 8.2 +
1С:Библиотеки электронных документов 8.2
(с) http://1c.ru/news/info.jsp?id=15245

Там есть и шифрование и расшифровка
10 ex-human
 
18.06.15
05:07
Неужели никто не сталкивался? Решение нужно для платформы 8.1., отсылки к более поздним релизам не интересуют. Шифрование и подпись ЭЦП с использованием Capicom существует с времен 7.7
11 Aleksey
 
18.06.15
05:08
(10) Ну тогда в чем вопрос? Во времена 8.1 только Capicom через com
12 rphosts
 
18.06.15
05:24
(10) всё-же попробуй посмотреть как оно в БСП 2.0 (более ранних нет на юзерсе). Если те-же вызовы есть в 8.1 то переделка будет минимальная... перейти от контекстного кода к коду без указания контекста - как 2 пальца об асфальт, обратно несколько сложнее
13 ЧеловекДуши
 
18.06.15
06:47
(0) Содержимое то не шифруется, подпись попросту прекрипляется.
14 ЧеловекДуши
 
18.06.15
06:48
(3) Что за файл?
Расширение скажи.
15 ЧеловекДуши
 
18.06.15
06:49
(10) Ты неправильно спрашиваешь. Цедишь нам информацию крохами. Больше спрашиваем мы, чем ты... И причем тут шифрование?
16 Мутабор
 
18.06.15
06:59
17 ex-human
 
18.06.15
07:19
Я получаю файл подписанный ЭЦП, внутри него есть оригинальный файл. Мне нужно извлечь оригинальный файл не взирая валидная или нет подпись.
18 ex-human
 
18.06.15
07:31
Он не зашифрован, он просто подписан. Мне нужно его извлечь, убрать эту ср@ную подпись
19 ЧеловекДуши
 
18.06.15
07:54
(18) А с подписью, чего не читаемый?
Причем тут 1С?
20 ЧеловекДуши
 
18.06.15
07:56
Если файл не шифруется, то и подпись играет только роль некого ХЕШа для сверки валидности :)
21 ex-human
 
18.06.15
07:58
Так и есть, но как их разделить
22 ex-human
 
18.06.15
07:58
По уму я должен проверить валидность подписи и вычленить содержимое из этого подписанного файла
23 Мимохожий Однако
 
18.06.15
08:00
Хоть что-то пытался сделать? Код показывай, не стесняйся.
24 ex-human
 
18.06.15
08:20
(Не) Получается типа такого
25 ex-human
 
18.06.15
08:21
Процедура ВернутьФайлБезПодписи(ИмяВхФайла, ИмяВыхФайла)
    SignedData = Новый COMОбъект("CAPICOM.SignedData");
    Данные = ЗагрузитьДанные(ИмяВхФайла);    
    Если Данные = Неопределено Тогда Возврат КонецЕсли;
    SignedData.Verify(Данные, Истина, 0);
    СодержимоеФайлаБезПодписи = SignedData.Content;
КонецПроцедуры

Функция ЗагрузитьДанные(ИмяФайла)
    ФСО = Новый COMОбъект("Scripting.FileSystemObject");
    Если Не ФСО.FileExists(ИмяФайла) Тогда
        Возврат Неопределено    
    КонецЕсли;
    Чтение = ФСО.OpenTextFile(ИмяФайла, 1);
    Данные = Чтение.ReadAll();
    Возврат Данные
КонецФункции
26 ex-human
 
18.06.15
08:22
затыкается на строке
SignedData.Verify(Данные, Истина, 0);
говорит неправильно инициализировал
27 ex-human
 
18.06.15
09:11
Изменил на SignedData.Verify(Данные, Ложь, 0), появилась ошибка В ASN1 встречен неожиданный конец данных.
28 Jaap Vduul
 
18.06.15
09:51
(26), (27) Дык у тебя содержимое детачнуто или где?
Если детачнуто, то исходные данные отдельно должны прилагаться.
29 ex-human
 
18.06.15
10:00
Если я этот подписанный файл открываю например в КриптоАРМ, то он мне пишет, что есть внутри файл, подписанный таким то сертификатом, (например недействительным), но поскольку сам внутренний файл относится к открытым данным я его могу сохранить в чистом виде, без подписи.
Вот эту же схем мне и нужно реализовать
30 ex-human
 
18.06.15
10:02
Т.е, грубо говоря, мне нужно открепить сертификат от оригинального файла
31 Jaap Vduul
 
18.06.15
10:12
Если проверка сертификата не требуется, вызывай Verify с флагом CAPICOM_VERIFY_SIGNATURE_ONLY.
32 vde69
 
18.06.15
10:16
Capicom - не поддерживается виндой уже давно...
33 ex-human
 
18.06.15
10:17
Member                          Description    Value
CAPICOM_VERIFY_SIGNATURE_ONLY Only the signature  0
                              is checked.
Я и поставил 0
34 ex-human
 
18.06.15
10:18
"..Capicom - не поддерживается виндой уже давно..."
да ладно, у меня и шифрование под подписывает через него реализовано
35 ex-human
 
18.06.15
10:19
Ладно, я так понимаю, уж проще файлик распарсить вручную и выдрать все чтонужно
36 Jaap Vduul
 
18.06.15
10:19
(33)И куда ты "поставил 0" ?
Изучай:
https://msdn.microsoft.com/library/windows/desktop/aa387728(v=vs.85).aspx
37 ex-human
 
18.06.15
10:46
(36)  SignedData.Verify(Данные, Истина, 0);
не оно что ли?