Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подписать документ сертификатом

Подписать документ сертификатом
Я
   america2013
 
01.04.21 - 09:30
Конфигурация Бух. 2.0 обычные формы.
Платформа 8.3.15
Цель - подписать документ сертификатом, который хранится в справочнике "ПользователиИСЭСФ" в реквизите "СертификатАутентификации" с типом ХранилищеЗначений.
Нашел общий модуль с функцией, которую хотел применить:
ЭлектроннаяЦифроваяПодписьКлиент.СформироватьДанныеПодписи(
МенеджерКриптографии,
ОбъектДляПодписиСсылка,
ДвоичныеДанные,
СтруктураПараметровПодписи) Экспорт

Прошу сориентируйте, где не корректно указываю данные:
Пароль = Объект.Сертификат.ПарольАутентификации;

МК = Новый МенеджерКриптографии("Microsoft Enhanced Cryptographic Provider v1.0", "", 1);
АдресСертификата = ПоместитьВоВременноеХранилище(Объект.Сертификат.СертификатАутентификации, УникальныйИдентификатор);
ДвоичныеДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата);

Сертификат = Новый СертификатКриптографии(ДвоичныеДанныеСертификата); //Ошибка Несоответсвие типов (параметр номер 1)

Структура = Новый Структура("Сертификат, Пароль, Комментарий", Сертификат, Пароль, "");
ДанныеПодписи = ЭлектроннаяЦифроваяПодписьКлиент.СформироватьДанныеПодписи(МК, Объект.Ссылка, ДвоичныеДанныеСертификата, Структура);
НоваяЗаписьПодпись = ДанныеПодписи.НоваяПодписьДвоичныеДанные;
   america2013
 
1 - 01.04.21 - 09:53
На этапе с ошибкой 
Сертификат = Новый СертификатКриптографии(ДвоичныеДанныеСертификата)
ДвоичныеДанныеСертификата=с типом Хранилище

Пробую из этого хранилища получить еще данные, получил строку каких-то символов.
Ошибка на этом же этапе изменилась на: Ошибка операции с файлом.
по причине:
Каталог не обнаружен 'MIIGQ....

Не понятно какой тип данных нужно поместить?
   america2013
 
2 - 01.04.21 - 11:28
Доработал код:
    Пароль = Объект.Сертификат.ПарольАутентификации;
    
    МК = Новый МенеджерКриптографии("Microsoft Enhanced Cryptographic Provider v1.0", "", 1);
    
    ДвоичныеДанныеСертификата = Base64Значение(Объект.Сертификат.СертификатАутентификации.Получить());//получить из хранилища

    
    Сертификат = Новый СертификатКриптографии(ДвоичныеДанныеСертификата);

    Структура = Новый Структура("Сертификат, Пароль, Комментарий", Сертификат, Пароль, "");
    
    ДанныеПодписи = ЭлектроннаяЦифроваяПодписьКлиент.СформироватьДанныеПодписи(МК, Объект.Ссылка, ДвоичныеДанныеСертификата, Структура);
        
    НоваяЗаписьПодпись = ДанныеПодписи.НоваяПодписьДвоичныеДанные;


Теперь при попытке из общ. функ. - Подписать() - получаю ошибку:
Сертификат отсутствует в персональном хранилище сертификатов

Предполагаю, что указал не того провайдера?
   america2013
 
3 - 01.04.21 - 11:40
Нет, а зачем мне сертификат встраивать в комп. если он у меня уже сохранен в элементе справочника??
   america2013
 
4 - 01.04.21 - 11:45
Но если добавить, предварительно выгрузив из справочника, то при подписи получаю
Ошибка при получении свойства сертификата (0x00000000).

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.