ICryptService.RemoveEncryption — метод (X509Certificate2, Guid)

Расшифровывает файл и удаляет связанные с ним крипто-объекты.

Синтаксис

void RemoveEncryption(X509Certificate2 certificate, Guid fileId)
Параметры
certificate

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

Сертификат шифрования, которым зашифрован файл

fileId

Тип: System.Guid

Идентификатор зашифрованного файла

Исключения

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

System.ArgumentNullException

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

System.InvalidOperationException

Ошибка возвращается в случае, если файл с указанным идентификатором не существует.

Заметки

Данный метод, в отличие от метода ICryptService.DecryptFile, удаляет крипто-объекты, используемые для расшифровки файла сотрудниками, которым предоставлен соответствующий доступ.

Примеры

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Security.Cryptography.X509Certificates;

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

namespace BackOffice
{
 public class CardDocumentПримерScript : CardDocumentДокументУДScript
 {
  private void RemoveEncryption_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  {
   bool cancel = false;

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

   ICryptService cryptService = base.CardControl.ObjectContext.GetService<ICryptService>(); (2)

   IEnumerable<DocumentFile> mainFiles = (base.BaseObject as Document).Files.Where<DocumentFile>(t => t.FileType = DocumentFileType.Main); (3)
   foreach (DocumentFile item in mainFiles)
   {
    FileData fileData = base.Session.FileManager.GetFile(item.FileVersionRowId);

    if(fileData.Encrypted) (4)
    {
     cryptService.RemoveEncryption(certificate, item.FileVersionRowId);
    }
   }
  }
 }
}
1 Вызов формы выбора сертификата.
2 Получения сервиса шифрования базовых объектов.
3 Получение основных файлов.
4 Проверка наличия зашифрованного файла.