Подпись: последовательные оповещения двух этапов

Учебные задачи

Обработчик усовершенствования получает двоичные данные и удержанный менеджер. Он начинает архивную метку только после завершения первого этапа.

Где и как запускать

Синтаксический пример для толстого клиента Windows в своей учебной форме. Фрагмент без процедуры вставляется в тело обработчика. Здесь компоненты, COM и криптография не запускались.

Подготовка

  1. В своём учебном Windows-приложении заранее установите поддерживаемый криптопровайдер. В коде выбран Microsoft Enhanced RSA and AES Cryptographic Provider с типом 24; если его нет, этот пример не подготовлен.

  2. Подготовьте собственную действительную подпись CAdES-BES в файле C:\УчебныеДанные\заказ.p7s. Для проверки метки используйте свою подпись CAdES-T с настоящей меткой. Произвольный текст с расширением p7s не является подписью.

  3. Для получения метки создайте строковый реквизит формы АдресСервераМеток и заполните действительным адресом разрешённого учебного TSA. Подготовьте доверие сертификатам и разрешение на обращение к этому сервису. Здесь сервис не вызывается.

  4. Все три процедуры находятся в одном модуле формы; в варианте без выходного файла обработчики получают ДвоичныеДанные.

&НаКлиенте
Процедура ДополнитьПодпись()
    Крипто = Новый МенеджерКриптографии("Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24);
    Крипто.АдресаСерверовМетокВремени.Добавить(АдресСервераМеток);
    Оповещение = Новый ОписаниеОповещения("ПослеУсовершенствования", ЭтотОбъект, Крипто);
    Крипто.НачатьУсовершенствованиеПодписи(Оповещение, "C:\УчебныеДанные\заказ.p7s", ТипПодписиКриптографии.CAdEST);
КонецПроцедуры
&НаКлиенте
Процедура ПослеУсовершенствования(СМеткой, Крипто) Экспорт
    Сообщить("Получено байт: " + Строка(СМеткой.Размер()));
    Оповещение = Новый ОписаниеОповещения("ПослеАрхивнойМетки", ЭтотОбъект, "Учебная подпись");
    Крипто.НачатьДобавлениеАрхивнойМеткиВремени(Оповещение, СМеткой);
КонецПроцедуры
&НаКлиенте
Процедура ПослеАрхивнойМетки(Архивная, Название) Экспорт
    Сообщить(Название + ": " + Строка(Архивная.Размер()) + " байт");
КонецПроцедуры

Разбор по шагам

  1. Начните усовершенствование своей подписи с оповещением.

  2. В первом обработчике используйте реальный результат и ранее созданный менеджер.

  3. Во втором обработчике покажите реальный размер архивной подписи.

Как проверить результат

  1. Оба обработчика имеют два параметра по выбранным вариантам API.

  2. Второй этап не запускается сразу вслед за первым в исходной процедуре.

Ожидаемый результат

Показан синтаксис для указанной подготовки. Здесь код не запускался; реальные результаты и побочные эффекты проверяются только при будущем осознанном выполнении в своём учебном приложении.

На что обратить внимание

  1. Нельзя вручную вызывать обработчик с фиктивными байтами и считать это результатом криптографии.

  2. При ошибке TSA или подписи успешное завершение не обещается.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.