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","!!!");
КонецПроцедуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.