ЭП в формате CMS SignedData в DER-кодировке
Добрый день, форумчане!
Возник вопрос, мне нужно сформировать ЭП в формате CMS SignedData в DER-кодировке
Для этого на сервере был установлен КриптоПро 5 вер, компонента КриптоПро ЭЦП
Далее в коде идет попытка создания com-объектов
Вылетает ошибка "ошибка при вызове конструктора сомобъект -2147221005 0x800401f3"
comcntr.dll зарегистрирована, проверена на прямом подключении 2-х других баз
В чем еще может быть проблема, может кто-то сталкивался?
Возник вопрос, мне нужно сформировать ЭП в формате CMS SignedData в DER-кодировке
Для этого на сервере был установлен КриптоПро 5 вер, компонента КриптоПро ЭЦП
Далее в коде идет попытка создания com-объектов
Попытка
comStore = Новый COMОбъект("CAdESCOM.Store");
comCPSigner = Новый COMОбъект("CAdESCOM.CPSigner"); // Аналог "CAPICOM.Signer".
comSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
Исключение
Сообщить(ОписаниеОшибки());
Возврат ;
КонецПопытки;
ПоказатьВылетает ошибка "ошибка при вызове конструктора сомобъект -2147221005 0x800401f3"
comcntr.dll зарегистрирована, проверена на прямом подключении 2-х других баз
В чем еще может быть проблема, может кто-то сталкивался?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(8)У меня так
CURRENT_USER_STORE = 2;
MY_STORE = "My";
STORE_OPEN_READ_ONLY = 0;
comStore.Open(CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY);
Certs = comStore.Certificates;
Для Сч = 1 По Certs.Count Цикл
Сертификат = Certs.Item(Сч);
КонецЦикла;
comCPSigner.Certificate = Сертификат;
comCPSigner.Options = 2;
//-----------------------------------
ПодписанныеДанные = comSignedData.SignCades(
comCPSigner, // Signer
1, // CadesType, CADESCOM_CADES_BES.
Истина, // bDetached - "флаг открепленной подписи (исходное сообщение не включается в итоговый CMS-контейнер)".
); //
//--------------------------------------
DocumentSignature.Вставить("Signature",ПодписанныеДанные);
Показать
(9) Спасибо! Правда интересно получается, я устанавливаю аналогичным образом значения свойств объектов и передаю те же значения аргументов в те же методы. Получаю невалидную подпись.
Код |
---|
//Ищем сертификат по отпечатку
Store = Новый COMОбъект("CAdESCOM.Store");
Store.Open(2);
Certificates = Store.Certificates;
Certificate = Неопределено;
Если Certificates.Count<>0 Тогда
Для Каждого CurrentCertificate Из Store.Certificates Цикл
Если CurrentCertificate.Thumbprint=ОтпечатокСтрока Тогда
Certificate = CurrentCertificate;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Store.Close();
Если Certificate<>Неопределено Тогда
//Получаем подпись Signature
Signer = Новый COMОбъект("CAdESCOM.CPSigner");
Signer.Certificate = Certificate;
Signer.Options = 2;
CadesSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
CadesSignedData.Content = Контент;
Signature = CadesSignedData.SignCades(Signer, 1, Истина);
КонецЕсли;
Показать |
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот