Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.