ICryptService.AddCryptAccount — метод (X509Certificate2, Guid, String)
Предоставляет доступ указанному сотруднику к зашифрованному файлу.
-
Пространство имён:
DocsVision.BackOffice.ObjectModel.Services
-
Сборка:
DocsVision.BackOffice.ObjectModel.dll
Синтаксис
void AddCryptAccount(X509Certificate2 certificate, Guid fileId, string accountName)
- Параметры
-
- certificate
-
Тип:
System.Security.Cryptography.X509Certificates.X509Certificate2
Сертификат шифрования, которым зашифрован файл
- fileId
-
Тип:
System.Guid
Идентификатор зашифрованного файла
- accountName
-
Тип:
System.String
Учетная запись сотрудника, которому предоставляется доступ к зашифрованному файлу
Исключения
Исключение | Условие |
---|---|
Ошибка возвращается в случае, если не задан параметр |
|
Ошибка возвращается в случае, если файл с указанным идентификатором не существует, либо у указанного сотрудника уже имеется доступ к файлу, либо у указанного сотрудника отсутствует открытый ключ шифрования. |
Заметки
В том случае, если файл не является зашифрованным, будет произведено шифрование сертификатом 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 | Предоставление доступа к текущему файлу сотрудникам, входящих в группу сотрудников. Отдельного вызова шифрования файла не требуется, т.к. при в том случае, если файл не зашифрован, шифрование будет произведено автоматически. |