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

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

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

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

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

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

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

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


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

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