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

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

Синтаксис

void AddCryptAccount(X509Certificate2 certificate, Guid fileId, string accountName)
Параметры
certificate

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

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

fileId

Тип: System.Guid

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

accountName

Тип: System.String

Учетная запись сотрудника, которому предоставляется доступ к зашифрованному файлу

Исключения

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

System.ArgumentNullException

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

System.InvalidOperationException

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

Заметки

В том случае, если файл не является зашифрованным, будет произведено шифрование сертификатом certificate, поэтому вызывать метод ICryptService.EncryptFile не требуется.

Примеры

В приведенном ниже примере (скрипт вызываемый из карточки приложения "Управление документами"), выполняется шифрование основных файлов текущей карточки ключами сотрудников предопределённой группы

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

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

namespace BackOffice
{
 public class CardDocumentТестScript : CardDocumentДокументУДScript
 {
  private void ЗашифроватьДляГруппы_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  {
   bool cancel = false;

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

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

   IEnumerable<DocumentFile> mainFiles = (base.BaseObject as Document).Files.Where<DocumentFile>(t => t.FileType = DocumentFileType.Main); (3)

   StaffGroup staffGroup = staffService.GetGroup(new Guid("00000000-0000-0000-0000-000000000000")); (4)

   foreach (DocumentFile item in mainFiles)
   {

    foreach (StaffEmployee employee in staffGroup.Employees) (5)
    {
     cryptService.AddCryptAccount(certificate, item.FileVersionRowId, employee.AccountName);
    }
   }
  }
 }
}
1 Вызов формы для получения сертификата текущего сотрудника.
2 Получения сервиса шифрования базовых объектов и сервиса для работы со справочником сотрудников.
3 Получение основных файлов карточки.
4 Получение группы с идентификатором.
5 Предоставление доступа к текущему файлу сотрудникам, входящих в группу сотрудников. Отдельного вызова шифрования файла не требуется, т.к. при в том случае, если файл не зашифрован, шифрование будет произведено автоматически.