/Инициализируем калкан
Попытка
KalkanCryptCOM = Новый COMОбъект(“KalkanCryptCOMLib.KalkanCryptCOM”);
Исключение
Сообщить(“Не установлен KalkanCryptCOMLib!”);
КонецПопытки;
KalkanCryptCOM.Init();
Запрос = Новый Запрос("ВЫБРАТЬ
| СертификатыПодписиДляИСМЕД.Сертификат,
| СертификатыПодписиДляИСМЕД.Пароль
|ИЗ
| РегистрСведений.СертификатыПодписиДляИСМЕД КАК СертификатыПодписиДляИСМЕД
|ГДЕ
| СертификатыПодписиДляИСМЕД.Организация = &Организация");
Запрос.УстановитьПараметр("Организация",Организация);
Выборка = Запрос.Выполнить().Выбрать();
ИмяФайла = ПолучитьИмяВременногоФайла("p12");
Пока Выборка.Следующий() Цикл
Сертификат = Выборка.Сертификат;
Пароль = Выборка.Пароль;
КонецЦикла;
Если ТипЗнч(Сертификат) <> Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные = Сертификат.Получить();
Иначе
ДвоичныеДанные = Сертификат;
КонецЕсли;
ДвоичныеДанные.Записать(ИмяФайла);
Попытка
//Загружаем сертфикат в Калкан
KCST_PKCS12 = 1;
Ответ = KalkanCryptCOM.LoadKeyStore(KCST_PKCS12, Пароль, ИмяФайла, "");
Исключение
Сообщить("Не удалось загрузить сертфикат в Kalkan");
КонецПопытки;
KC_SIGN_CMS = 2;
KC_IN_BASE64 = 16;
KC_DETACHED_DATA = 64;
KC_OUT_BASE64 = 2048;
Флаги = KC_SIGN_CMS + KC_IN_BASE64 + KC_DETACHED_DATA + KC_OUT_BASE64;
Сигнатура = "";
Ответ = KalkanCryptCOM.SignData("", Флаги, Контент, Сигнатура);