Имя: Пароль:
1C
 
ЭЦП, Сертификат, Подпись. Что есть что?
0 Help1с
 
23.03.16
14:51
Вообще запутался.
Есть у меня подписанный файл. Нужно проверить в 1с подпись действительна или нет.

Для нормальной работы я должен:
1. сначала установить сертификат контрагента на свой ПК.
2. Выполнить проверку: МенеджерКриптографии.ПроверитьПодпись(Файл, Подпись, Сертификат);

где взять Продпись? Сертификат я могу из хранилища сертификатов найти, а как с подписью быть?
1 Help1с
 
23.03.16
15:29
ап
2 Help1с
 
23.03.16
15:37
нужно использовать СОМ объект типа CAPICOM?
3 portowyi
 
23.03.16
15:40
(0) Корневой сертификат удостоверяющего центра (серт. контрагента) который выдавал подпись тому кто подписал файл. А подпись это же как раз и есть файл подписи с расширением *.bin, *.sgn и так далее.

Лично я использую крипто-про установленную на компьютере (на сервере).
4 portowyi
 
23.03.16
15:41
(2) Функция ПолучитьМенеджерКриптографии()
        
    ПровайдерЭЦП = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
    ПутьМодуляКриптографии = "";
    ТипПровайдераЭЦП = 75;
    
    Попытка
        
        МенеджерКриптографии = Новый МенеджерКриптографии(ПровайдерЭЦП, ПутьМодуляКриптографии, ТипПровайдераЭЦП);
        
        МенеджерКриптографии.АлгоритмПодписи                 = "GOST R 34.10-2001";
        МенеджерКриптографии.АлгоритмХеширования             = "GOST R 34.11-94";
        МенеджерКриптографии.АлгоритмШифрования             = "GOST 28147-89";
        МенеджерКриптографии.ВключениеСертификатовВПодпись     = РежимВключенияСертификатовКриптографии.ВключатьСертификатСубъекта;    
        
    Исключение
        
        ТекстОшибки = НСтр("ru = 'Ошибка при инициализации менеджера криптографии.
                            |" + ОписаниеОшибки() + "'"
                            );            
                                
        ЗаписьЖурналаРегистрации("ПодписьТОРГ2", УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки);
        пМенеджерКриптографии = Неопределено;
        
    КонецПопытки;
    
    Возврат МенеджерКриптографии;
    
КонецФункции


Это получение менеджера криптографии
5 portowyi
 
23.03.16
15:42
(3) А как то так проверяется

МенеджерКриптографии.ПроверитьПодпись(ДвоичныеДанныеФайла, ДвоичныеДанныеПодписи, ЛокальныйСертификат);
6 Garykom
 
гуру
23.03.16
15:54
Сертификат.ОткрытыйКлюч
7 Help1с
 
24.03.16
06:45
(5) в моем случае нет отдельного файла подписи. подписывается документ ексель. нужно как-то из него вытащить подпись.
8 Woldemar177
 
24.03.16
08:06
(7) VBA поможет?
9 portowyi
 
24.03.16
08:56
(7) Ну кот то же файл подписывает. Узнайте с помощью какой технологии это производится и дальше методом "от противного".
10 Help1с
 
24.03.16
09:12
(8) (9) нашел объект CAPICOM. Есть метод ChekSignature(Файл), этот метод вроде позволяет прочитать ЭЦП в документе, но не получается его использовать.
Вот как я пытаюсь сделать:

    //КапиКом = Новый COMОбъект("CAPICOM.Signer");
    //КапиКом = Новый COMОбъект("CAPICOM.DigestProcessor");
    //КапиКом = Новый COMОбъект("CAPICOM.Attribute");
    //КапиКом = Новый COMОбъект("CAPICOM.StoreType");
    //КапиКом = Новый COMОбъект("CAPICOM.Certificate");
    //КапиКом = Новый COMОбъект("CAPICOM.ChekSignature");
    //КапиКом = Новый COMОбъект("CAPICOM.Store");
    КапиКом = Новый COMОбъект("CAPICOM.SignedData");
    СоставДокумента = КапиКом.ChekSignature(Файл);
    КапиКом.SignedDocument = ДДФайла;
11 Help1с
 
24.03.16
09:53
CAPICOM снята с поддержки. Какой другой объект можно использовать?
12 zak555
 
29.03.16
21:32
13 zak555
 
29.03.16
21:32
МенеджерКриптографии (CryptoManager)
ПроверитьПодпись (VerifySignature)
Синтаксис:

ПроверитьПодпись(<ИсходныеДанные>, <Подпись>, <Сертификат>)
Параметры:

<ИсходныеДанные> (обязательный)

Тип: Строка: ДвоичныеДанные.
Исходные данные для проверки.
Данные могут размещаться в файле (в этом случае указывается имя файла) или представлены как ДвоичныеДанные.
<Подпись> (обязательный)

Тип: Строка: ДвоичныеДанные.
Подпись для проверки.
Исходные данные могут размещаться в файле (в этом случае указываются именем исходного файла) или представлены как ДвоичныеДанные.
<Сертификат> (необязательный)

Тип: СертификатКриптографии.
В параметре возвращается сертификат, с помощью которого была произведена подпись (если сертификат включен в данные подписи).
Описание:

Проверяет действительность подписи.
Формат исходных данных - PKCS#7.
Метод не осуществляет импорт сертификатов в хранилище сертификатов из данных подписи.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Если проверка подписи завершилась неудачно, генерируется исключительная ситуация.
См. также:

МенеджерКриптографии, метод НачатьПроверкуПодписи
14 zak555
 
29.03.16
21:40
МенеджерКриптографии.ПолучитьСертификатыИзПодписи (CryptoManager.GetCertificatesFromSignature)
МенеджерКриптографии (CryptoManager)
ПолучитьСертификатыИзПодписи (GetCertificatesFromSignature)
Синтаксис:

ПолучитьСертификатыИзПодписи(<ИсходныеДанные>)
Параметры:

<ИсходныеДанные> (обязательный)

Тип: Строка: ДвоичныеДанные.
Исходные данные, из которых будет извлечен сертификат.
Данные могут размещаться в файле (в этом случае указывается имя файла) или представлены как ДвоичныеДанные.
Возвращаемое значение:

Тип: Массив.
Содержит объекты СертификатКриптографии.
Описание:

Извлекает массив сертификатов из данных подписи.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
См. также:

МенеджерКриптографии, метод НачатьПолучениеСертификатовИзПодписи

--------------------------------------------------------------------------------
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.