Метод выполняет проверку метки времени для переданной подписи криптографии: Соответствие хеша, указанного в метке времени, хешу полей подписи. Корректность сертификата метки. Корректность подписи на метке времени. При возникновении ошибки проверки, будет сгенерировано исключение с описанием ошибки.
Синтаксис
ПроверитьМеткуВремени(<Подпись>, <МеткаВремени>)Примеры платформы
МенеджерКриптографии.ПроверитьПодпись(ИсходныйФайл,
ДвоичныеДанныеПодписи, Истина);
КонтейнерПодписей = Новый КонтейнерПодписейКриптографии(
ДвоичныеДанныеПодписи);
Для каждого Подпись Из КонтейнерПодписей.Подписи Цикл
Если Подпись.МеткаВремениПодписи.Подпись.АлгоритмПодписи =
"1.2.643.7.1.2.5.1.1" Тогда
МенеджерКриптографии.ПроверитьМеткуВремени(Подпись,
Подпись.МеткаВремениПодписи);
Иначе
Сообщить("Алгоритм подписи не поддерживается криптопровайдером");
КонецЕсли;
МенеджерКриптографии.ПроверитьМеткуВремени(
Подпись,
Подпись.МеткаВремениДанныхПроверкиПодписи);
Для каждого АрхивнаяМетка из Подпись.АрхивныеМеткиВремени Цикл
МенеджерКриптографии.ПроверитьМеткуВремени(Подпись, АрхивнаяМетка);
КонецЦикла;
КонецЦикла;Полное описание, параметры и ограничения
МенеджерКриптографии.ПроверитьМеткуВремени (CryptoManager.VerifyTimeStamp)
МенеджерКриптографии (CryptoManager)
ПроверитьМеткуВремени (VerifyTimeStamp)
Доступен, начиная с версии 8.3.20.
Синтаксис:
ПроверитьМеткуВремени(<Подпись>, <МеткаВремени>)
Параметры:
<Подпись> (обязательный)
Тип: ПодписьКриптографии.
Подпись из контейнера подписей.
<МеткаВремени> (обязательный)
Тип: МеткаВремениКриптографии.
Проверяемая метка времени.
Возвращаемое значение:
Тип: Неопределено.
Описание:
Метод выполняет проверку метки времени для переданной подписи криптографии:
Соответствие хеша, указанного в метке времени, хешу полей подписи.
Корректность сертификата метки.
Корректность подписи на метке времени.
При возникновении ошибки проверки, будет сгенерировано исключение с описанием ошибки.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
// Проверяем до уровня CAdES-BES
МенеджерКриптографии.ПроверитьПодпись(ИсходныйФайл,
ДвоичныеДанныеПодписи, Истина);
КонтейнерПодписей = Новый КонтейнерПодписейКриптографии(
ДвоичныеДанныеПодписи);
Для каждого Подпись Из КонтейнерПодписей.Подписи Цикл
// проверяем метку времени подписи
Если Подпись.МеткаВремениПодписи.Подпись.АлгоритмПодписи =
"1.2.643.7.1.2.5.1.1" Тогда
МенеджерКриптографии.ПроверитьМеткуВремени(Подпись,
Подпись.МеткаВремениПодписи);
Иначе
Сообщить("Алгоритм подписи не поддерживается криптопровайдером");
КонецЕсли;
// Проверяем метку времени данных проверки
МенеджерКриптографии.ПроверитьМеткуВремени(
Подпись,
Подпись.МеткаВремениДанныхПроверкиПодписи);
// Проверяем все архивные метки времени
Для каждого АрхивнаяМетка из Подпись.АрхивныеМеткиВремени Цикл
МенеджерКриптографии.ПроверитьМеткуВремени(Подпись, АрхивнаяМетка);
КонецЦикла;
КонецЦикла;
Использование в версии:
Доступен, начиная с версии 8.3.20.
Описание изменено в версии 8.3.22.
Методическая информация
Практические примеры
Проверить настоящую метку собственной подписи
Подпись и метка берутся из разобранного контейнера, а не создаются фиктивными конструкторами. Проверка сообщает об ошибке исключением.
Где и как запускать
Синтаксический пример для толстого клиента Windows в своей учебной форме. Фрагмент без процедуры вставляется в тело обработчика. Здесь компоненты, COM и криптография не запускались.
Подготовка
В своём учебном Windows-приложении заранее установите поддерживаемый криптопровайдер. В коде выбран Microsoft Enhanced RSA and AES Cryptographic Provider с типом 24; если его нет, этот пример не подготовлен.
Подготовьте собственную действительную подпись CAdES-BES в файле C:\УчебныеДанные\заказ.p7s. Для проверки метки используйте свою подпись CAdES-T с настоящей меткой. Произвольный текст с расширением p7s не является подписью.
Для получения метки создайте строковый реквизит формы АдресСервераМеток и заполните действительным адресом разрешённого учебного TSA. Подготовьте доверие сертификатам и разрешение на обращение к этому сервису. Здесь сервис не вызывается.
Крипто = Новый МенеджерКриптографии("Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24);
Контейнер = Крипто.ПолучитьКонтейнерПодписейКриптографии("C:\УчебныеДанные\заказ.p7s");
Если Контейнер.Подписи.Количество() > 0 Тогда
Подпись = Контейнер.Подписи[0];
Метка = Подпись.МеткаВремениПодписи;
Если Метка <> Неопределено Тогда
Крипто.ПроверитьМеткуВремени(Подпись, Метка);
Сообщить("Проверка метки выполнена без исключения");
КонецЕсли;
КонецЕсли;Разбор по шагам
Разберите собственную подпись в контейнер.
Возьмите существующую первую подпись и её настоящую метку, если они есть.
Вызовите проверку без присваивания выдуманного булева результата.
Как проверить результат
При отсутствии подписей или метки проверка не выполняется.
Сообщение после проверки означает отсутствие исключения в этом вызове, не проверку всей бизнес-операции.
Ожидаемый результат
Показан синтаксис для указанной подготовки. Здесь код не запускался; реальные результаты и побочные эффекты проверяются только при будущем осознанном выполнении в своём учебном приложении.
На что обратить внимание
Метод возвращает Неопределено; ошибка проверки порождает исключение.
Доверие, срок действия и доступные данные цепочки должны быть подготовлены для своего учебного сертификата.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.