Имя: Пароль:
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).
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан