Статус: Участник
Группы: Участники
Зарегистрирован: 28.09.2021(UTC) Сообщений: 20  Сказал(а) «Спасибо»: 3 раз
|
Автор: NAlexV  Автор: Андрей *  Автор: NAlexV  Автор: Андрей *  всё понятно, бинарный файл не принимает. Да, именно так, а нужно подписать бинарник. Он и будет подписан. Кодируете в base64, указываете перед присваиванием, что закодировано - внутри будет декодировано и подписано бинарное представление. Понятно, значит я не понял семантику значения CADESCOM_BASE64_TO_BINARY перечисления CADESCOM_CONTENT_ENCODING_TYPE. Получается, что смысл значения - подписать бинарник, закодированный в Base64. :) Спасибо. Андрей, добрый день. Сетевики настроили сетевой доступ к серверу "http://qs.cryptopro.ru/tsp/tsp.srf", но теперь возвращается ошибка: "(CAdESCOM.CadesSignedData.1): The revocation process could not continue - the certificate(s) could not be checked." - процесс подписи не может быть продолжен, не удалось проверить сертификат. Использую сертификат с отпечатком "61 b5 87 a7 e3 94 02 e8 57 6d 66 f6 5e 72 08 fe dc 3c c0 e2". Что не так с сертификатом?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,629   Сказал «Спасибо»: 567 раз Поблагодарили: 2283 раз в 1784 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.09.2021(UTC) Сообщений: 20  Сказал(а) «Спасибо»: 3 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,629   Сказал «Спасибо»: 567 раз Поблагодарили: 2283 раз в 1784 постах
|
включить и собрать лог через dbgview, приложить в zip  traceall_x64.zip (1kb) загружен 0 раз(а). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.09.2021(UTC) Сообщений: 20  Сказал(а) «Спасибо»: 3 раз
|
Автор: Андрей *  включить и собрать лог через dbgview, приложить в zip  traceall_x64.zip (1kb) загружен 0 раз(а). Андрей, добрый день. Разобрались с проблемой описанной выше. Оказалось, что сетевой доступ настроили но не полностью. Теперь метод Код:ДанныеДляПодписи.SignCades(Крипто, ТипПодписи, ВидПодписиОтдельная, КодировкаПодписи);
возвращает строку подписи (в строке иероглифы), но система назначения, куда мы отправляем файл и подпись этого файла не принимает - выдает ошибку: "невозможно прочитать файл подписи".  Otzyv.txt.sgn (924kb) загружен 1 раз(а).Собственно вопросы. - Надо ли как-то дополнительно преобразовывать сроку подписи, полученную методом SignCades?
- Является ли файл подписи подписью в формате CADES-T?
Отредактировано пользователем 5 октября 2021 г. 11:28:12(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,629   Сказал «Спасибо»: 567 раз Поблагодарили: 2283 раз в 1784 постах
|
1. Можно при подписании указывать, чтобы в ответе было закодировано в base64. 2. Правильно записали ответ, как бинарные данные? Сейчас это не ASN.1. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.09.2021(UTC) Сообщений: 20  Сказал(а) «Спасибо»: 3 раз
|
Автор: Андрей *  1. Можно при подписании указывать, чтобы в ответе было закодировано в base64. 2. Правильно записали ответ, как бинарные данные? Сейчас это не ASN.1. Андрей, добрый день. Получилось подписывать на платформе 1С:Предприятие файлы подписью с криптометкой времени в формате CADES-T. Если кому интересно, то работающая функция выглядит так: Код:
Функция ПолучитьПодписьДокументаУКЭП(СтруктураСообщения, ПодписываемыеДвоичныеДанные, ОписаниеОшибки) Экспорт
Подпись = Неопределено;
СтрокаОтпечатка = Константы.ОтпечатокДействующегоСертификата.Получить();
Отпечаток = ПолучитьДвоичныеДанныеИзHexСтроки(СтрокаОтпечатка);
Крипто = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80);
Крипто.ПарольДоступаКЗакрытомуКлючу = Константы.ПарольДоступаКЗакрытомуКлючу.Получить();
Крипто.АлгоритмПодписи = "GR 34.10-2012 256";
Хранилище = Крипто.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты,РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС);
НайденныйСертификат = Хранилище.НайтиПоОтпечатку(Отпечаток);
Если НайденныйСертификат = Неопределено Тогда
ОписаниеОшибки = "Подпись файла УКЭП. По отпечатку не найден сертификат в хранилище";
Возврат Неопределено;
КонецЕсли;
Попытка
Если СтруктураСообщения.ПодписьКриптоМенеджером1С Тогда
Подпись = Крипто.Подписать(ПодписываемыеДвоичныеДанные, НайденныйСертификат);
ДанныеОСертификате = ПолучитьДанныеОСертификате(НайденныйСертификат);
СтруктураСообщения.Вставить("ДанныеОСертификате", ДанныеОСертификате);
Иначе
Крипто = СоздатьCOMОбъектCAdESCOM("CPSigner");
Крипто.Certificate = ПолучитьСертификатПоОтпечатку(СтрокаОтпечатка);
Крипто.KeyPin = Константы.ПарольДоступаКЗакрытомуКлючу.Получить();
Крипто.TSAAddress = "http://qs.cryptopro.ru/tsp/tsp.srf";
ДанныеДляПодписи = СоздатьCOMОбъектCAdESCOM("CadesSignedData");
ДанныеДляПодписи.ContentEncoding = 1;
ДанныеДляПодписи.Content = ПолучитьBase64СтрокуИзДвоичныхДанных(ПодписываемыеДвоичныеДанные);
ТипПодписи = 5; // CADES-T
ВидПодписиОтдельная = Истина;
КодировкаПодписи = 0; // кодировка Base64
СтрокаПодписи = ДанныеДляПодписи.SignCades(Крипто, ТипПодписи, ВидПодписиОтдельная, КодировкаПодписи);
ДанныеОСертификате = ПолучитьДанныеОСертификате(НайденныйСертификат);
СтруктураСообщения.Вставить("ДанныеОСертификате", ДанныеОСертификате);
Если ЗначениеЗаполнено(СтрокаПодписи) Тогда
Подпись = Base64Значение(СтрокаПодписи);
КонецЕсли;
КонецЕсли;
Исключение
ОписаниеОшибки = "Подпись файла УКЭП. " + ОписаниеОшибки();
КонецПопытки;
Возврат Подпись;
КонецФункции
Появилась еще одна проблема, связанная с подписью файлов с криптометкой времени. Для целевой системы, куда направляются подписанные файлы, требуется в сопроводительном XML документе к подписанному файлу указать дату и время подписи документа, совпадающие с реальной датой и временем подписи документа на криптосервере времени. Вопрос. Существуют ли какие либо методы извлечения реальных даты и времени подписи документа из открепленного файла с подписью или иным методом?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,629   Сказал «Спасибо»: 567 раз Поблагодарили: 2283 раз в 1784 постах
|
Автор: NAlexV  Вопрос. Существуют ли какие либо методы извлечения реальных даты и времени подписи документа из открепленного файла с подписью или иным методом? Аналогично через COM - прочитать атрибуты... ? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,629   Сказал «Спасибо»: 567 раз Поблагодарили: 2283 раз в 1784 постах
|
инициализировать объекты, заполнить, проверить подпись: cadessigneddata https://docs.cryptopro.r...om_class/cadessigneddataПодписанты: Signers Далее по каждому: Объект CPSignerесть список - Свойства... среди них, к примеру: Цитата: SignatureTimeStampTime Время подписи из штампа времени на значение подписи.
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
NAlexV оставлено 08.10.2021(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.09.2021(UTC) Сообщений: 20  Сказал(а) «Спасибо»: 3 раз
|
Автор: Андрей *  Автор: NAlexV  Вопрос. Существуют ли какие либо методы извлечения реальных даты и времени подписи документа из открепленного файла с подписью или иным методом? Аналогично через COM - прочитать атрибуты... ? Какой COM объект позволяет прочитать атрибуты штампа подписи? Какие методы для этого нужно использовать? Может быть есть пример на С++.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close