1C: Подпись произвольного текста в 1С
Задача: получить и выполнить подпись произвольного текста.
Решение: воспользуемся стандартным функционалом 1С. Предварительно на сервер необходимо установить в контейнер собственно сам сертификат. Так-же должен соответственно быть установлен крипто про.
&НаСервере
Функция ВыполнитьПодписьНаСервере(СтрокаДляПодписи,ИдентификаторПОдписи)
answer = Новый Структура("error,result,", Истина, "Не удалось подписать строку");
МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80);
Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
СертификатыВХранилище = Хранилище.ПолучитьВсе();
для каждого сертификат из СертификатыВХранилище цикл
если сертификат.субъект.CN=ИдентификаторПОдписи тогда
ИмяВремФайла = ПолучитьИмяВременногоФайла();
Текст = Новый ЗаписьТекста(ИмяВремФайла, "CESU-8");
Текст.Записать(СтрокаДляПодписи);
Текст.Закрыть();
Попытка
Результат = МенеджерКриптографии.Подписать(ИмяВремФайла,неопределено,Сертификат);
answer.error=false;
answer.result=Результат;
возврат answer;
Исключение
answer.result=ОписаниеОшибки();
сообщить(answer.result);
УдалитьФайлы(ИмяВремФайла);
возврат answer;
КонецПопытки;
УдалитьФайлы(ИмяВремФайла);
конецесли;
конеццикла;
answer.result="Не найден сертификат для подписи";
возврат answer;
КонецФункции
&НаКлиенте
Процедура ВыполнитьПодпись(Команда)
ВыполнитьПодписьНаСервере("SignRTP","!!!");
КонецПроцедуры



