Подписание и шифрование
В платформе Docsvision реализована функциональность по защите и контролю целостности информации, за счет подписания и шифрования объектов. На обоих уровнях API эти методы защиты представлены в той или иной мере.
Возможность работы с зашифрованными данными карточек (секций, строк) в платформе не поддерживается. |
Базовый API
На уровне базового API реализация механизма подписания и шифрования обеспечивает возможность создания, чтения и удаления специального типа объектов — крипто-объектов. Данные объекты могут быть двух типов, перечисленных в DocsVision.Platform.ObjectManager.CryptObjectType
:
-
CryptObjectType.Signature
— подпись. -
CryptObjectType.Key
— публичный ключ шифрования.
Крипто-объекты не являются зашифрованными или подписанными версиями самих объектов, а лишь хранят соответствующие ключи.
Крипто-объекты сохраняются в специальной системной таблице (dvsys_crypto) и привязаны напрямую конкретному подписанному или зашифрованному объекту системы.
Платформа оперирует уже готовыми крипто-объектами, а выполнение самих операций подписи и шифрования при этом должно выполняться другими средствами, например при помощи библиотеки |
Для работы с крипто-объектами в объектной модели предусмотрен ряд методов, предоставляемых объектом AccessManager
:
-
StoreCryptObject
— сохранение новой подписи или ключа шифрования. -
GetCryptObjects
— получает список крипто-объектов для заданного файла. -
GetCryptObject
— возвращает данные подписи или зашифрованного объекта по его собственному идентификатору. -
GetCryptObjectInfo
— получает дополнительную информацию о крипто-объекте с указанным идентификатором. -
DeleteCryptObject
— удаляет крипто-объект по его собственному идентификатору. -
DeleteCryptObjects
— удаляет все крипто-объекты заданного типа для конкретного файла. -
GetKey
— получает ключ шифрования заданного объекта. -
StoreKey
— сохраняет ключ шифрования. -
StoreSignature
— сохраняет ключ ЭП.
Для файлов, подпись и шифрование которых реализованы в самой платформе, время жизни связанных крипто-объектов контролируется автоматически. То есть, например, при удалении файла все наложенные на него подписи также будут автоматически удалены. Но при создании крипто-объектов собственного типа (не относящихся к файлам) разработчик должен сам контролировать время их жизни и заботиться об удалении. |
Рассмотрим пример получения всех подписей.
FileData file = session.FileManager.GetFile(new Guid("идентификатор_файла"));
InfoRowCollection coll = session.AccessManager.GetCryptObjects(file.Id, CryptObjectType.Signature);
foreach (InfoRow cryptrow in coll)
{
MessageBox.Show("Файл подписан " + cryptrow["CreationDate"].ToString() + " пользователем " + cryptrow["AccountName"].ToString());
}
При выполнении операций подписи или шифрования можно использовать текущие системные настройки криптографии, заданные в справочнике настроек (к их числу относятся крипто-провайдер, алгоритм, длина ключа и т.д.). |
Объектная модель
На данном уровне API подписание и шифрование реализовано для карточек типа Документ и Задание. Ниже представлена сводная таблица методов для работы с данной функциональностью.
Метод | Назначение |
---|---|
|
Данный метод используется для инициализации и добавления подписи в список подписей карточки Документ, и устанавливает ЭП на поля карточки, а также основные и дополнительные файлы. |
Данный метод используется для добавления коллекции подписей в список подписей карточки Документ. Позволяет использовать при подписании криптографическое сообщение вместо сертификата. Непосредственно выполняет установку ЭП на поля карточки, основные и дополнительные файлы. |
|
|
Данный метод позволяет определить актуальность подписи по отношению к данным карточки. Например, путем сравнения версии основного файла с версией, приведенной в подписи. |
|
Метод DecodeSignedDocument позволяет получить из файла ` |
Данный метод используется для проверки ЭП, установленной на полях и файлах карточки Документ. |
|
Сервис |
|
Данный метод используется при подписании карточки Задание. |
|
Данный метод используется при подписании карточки Задание и основного документа. |
|
Данный метод используется для проверки ЭП, установленной на полях и файлах карточки Задание. |