ITaskService.VerifySignature — метод (Task, BaseCardSignature, X509Certificate2, Boolean, IEnumerable<CardFieldSetting>)

Выполняет верификацию ЭП, установленной на полях карточки Задание, а также на Документах, связанных с заданием.

Синтаксис

BaseCardSignatureVerification VerifySignature(Task task, BaseCardSignature signature, X509Certificate2 certificate, bool signDocument, IEnumerable<CardFieldSetting> fields)
Параметры
task

Тип: Task

Задание, содержащий подписанные данные

signature

Тип: BaseCardSignature

Проверяемая подпись

certificate

Тип: System.Security.Cryptography.X509Certificates.X509Certificate2

Сертификат ЭП сотрудника, чей сертификат использовался при подписании

signDocument

Тип: System.Boolean

Параметр не проверяется

fields

Тип: System.Collections.Generic.IEnumerable<CardFieldSetting>

Коллекция полей типа CardFieldSetting, у которых должна быть проверена подпись. Список подписываемых полей задаётся в Справочнике видов карточек

Возвращаемое значение

Тип: BaseCardSignatureVerification

Результат проверки ЭП

Исключения

Исключение Условие

System.ArgumentNullException

Ошибка возвращается в случае, если не задан параметр task или signature.

Примеры

using System.Linq;
using System.Windows.Forms.Design;

using DocsVision.BackOffice.ObjectModel;
using DocsVision.BackOffice.ObjectModel.Services;
using DocsVision.BackOffice.WinForms.Controls;
using DocsVision.Platform.ObjectModel;

namespace BackOffice
{
 public class CardTaskТестScript : CardTaskНа_ознакомлениеScript
 {
  private void VerifySignature_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  {
   ObjectContext objectContext = base.CardControl.ObjectContext;
   Task task = (base.BaseObject as Task);

   ITaskService taskService = objectContext.GetService<ITaskService>();
   IUIService uiService = objectContext.GetService<IUIService>(); (1)

   bool cancel = false;

   var certificate = SelectCertificateForm.SelectCertificate(ref cancel, base.CardControl.ObjectContext);
   if (cancel) return; (2)

   var taskSetting = taskService.GetKindSettings(task.SystemInfo.CardKind); (3)

   var signatureSetting = taskSetting.OperationSignatures.First(t => t.SignatureName = "SignOperation"); (4)

   BaseCardSignature lastSignature = task.MainInfo.SignatureList.Signatures.Last(); (5)

   var result = taskService.VerifySignature(task, lastSignature, certificate, true, signatureSetting.Fields); (6)

   if (result.IsValid) (7)
   {
    uiService.ShowMessage("Задание является надежным");
   } else {
    uiService.ShowError("Задание не является надежным");
   }
  }
 }
}
1 Получение сервисов для работы с заданиями и интерфейсом пользователя.
2 Получение сертификата.
3 Получение настроек вида карточки.
4 Получение настроек (с названием SignOperation) подписания операции, которые определены в Справочнике видов карточек

При проверке подписей установленных на поля карточки, будет использован список полей из настроек.

5 Получение последней установленной подписи.
6 Проверка подписи.
7 Оповещение пользователя о результате проверки ЭП.