• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Несколько подписей в документе

  • Автор темы motogarri
  • Дата начала
M

motogarri

Сорри, что поднимаю старую тему. По форуму читал, но не все понял.

Есть БД, где документ проходит несколько этапов. С прохождением каждого этапа изменяется значение в поле Status. В зависимости от этого значения, документ отображается в разных видах.
На предпоследнем этапе, документ должны завизировать три человека. Тут получается, либо ставят подпись, либо отсылают док на один из предыдущих этапов.

Как я понял, если использовать ЭЦП, документ подписывается весь целиком, и следующие подписи заменяют предыдущую. А мне надо хранить три подписи. Или я что-то неправильно понял?
 
N

nvyush

garri
Недавно обсуждалось: link removed
Классика жанра:
 
M

motogarri

garri
Недавно обсуждалось: ЭЦП одного поля в документе
Классика жанра:
Читал. Не хватает меня пока чтобы разобраться. В первом примере опять все сходится ко второй ссылке, а там снова непонятно.
А где находится Библиотека LotusScript SignatureDocumentPart в которую нужно помещать:
Public Class SignatureDocumentPart
....
.....
Или это Declarations ?
А, нашел. Нужно сосздать библиотеку с именем SignatureDocumentPart.
 
N

nvyush

Читал. Не хватает меня пока чтобы разобраться. В первом примере опять все сходится ко второй ссылке, а там снова непонятно.
А где находится Библиотека LotusScript SignatureDocumentPart в которую нужно помещать:
Public Class SignatureDocumentPart
....
.....
Или это Declarations ?
Честно говоря, библиотеку SignatureDocumentPart не использовал, тестировал базу топикстартера вышеприведённой темы. Но в принципе ничего сложного, создаёте LS библиотеку "SignatureDocumentPart", в раздел (Declarations), кидаете код класса "SignatureDocumentPart", сохраняете и используете в своём коде по мере надобности.
 
M

motogarri

Сделал, как описано в той теме. Действительно подписываются разные поля в документе.
Проверка говорит "Signed"
If item.IsSigned Then
Messagebox "Signed"
Else
Messagebox "Not signed"
End If

Но тут проблема возникла. Я подписываю поле, перехожу на другую учетку и спокойно его (подписанное) изменяю. Разве оно не должно блокироваться для всех, кроме автора?
Код:
Sub Click(Source As Button)

Dim session As New NotesSession
Dim uiworkspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim item As NotesItem
Set doc = uiworkspace.CurrentDocument.Document
Set item = doc.GetFirstItem("Sign1")

item.IsSigned="true"
doc.Sign1 = session.CommonUserName
Call doc.Sign
Call doc.Save( False, True )
Messagebox "Подписали содержание"

End Sub
 
N

nvyush

Я подписываю поле, перехожу на другую учетку и спокойно его (подписанное) изменяю. Разве оно не должно блокироваться для всех, кроме автора?
Подпись лишь подтверждает, что данные были введены/изменены тем-то. Для защиты от изменения части документа есть несколько вариантов:
computed-for-display поле, отображаемое вместо редактируемого по формулам скрытия, свойство поля Input Enabled, секции с управляемым доступом, вычисляемые подформы, диалоги.
 
M

motogarri

Подпись лишь подтверждает, что данные были введены/изменены тем-то.
Спасибо, именно это и хотел узнать, а то боялся, что не так что-то сделал.
Сделал "Вычисляемую при открытии" секцию с формулой @IsNotMember( "[NachOtd]"; @UserRoles ). Теперь документ не открывается, говорит несовместимый тип данных. Внутри секции, подписываемое текстовое поле и кнопка.

И еще вопрос. В заголовке раздела пишется кем и когда подписано поле. Можно ли этот заголовок форматировать, чтобы после ФИО и даты не писалось имя домена?
 
N

nvyush

В формуле секции должно получаться, кто имеет право на редактирование (список имён, ролей). @IsNotMember возвращает числовое значение, поэтому ошибка несоответствия типа. Д.б. "[NachOtd]".
Для форматирования имён есть функция @Name, например, @Name([CN]; @UserName) вернёт просто ФИО.

Хотя не совсем понял "В заголовке раздела пишется кем и когда подписано поле" — это о чём?
 
M

motogarri

Все работает, как надо. nvy, спасибо.

После того, как подписываю поле, в заголовке раздела появляется надпись: > Подписано ФИО\Имя домена 19.05.2010 16:00:05\имя домена
 
N

nvyush

После того, как подписываю поле, в заголовке раздела появляется надпись: > Подписано ФИО\Имя домена 19.05.2010 16:00:05\имя домена
Не могу воспроизвести. Получаю аналогичную надпись только в строке состояния. В заголовке раздела только то, что я туда руками в дизайнере ввёл. Если напрягает, заголовок можно вообще скрыть.
 
M

motogarri

Не напрягает)) Наоборот это очень кстати. Просто не пойму как его форматировать. Да и ладно, это сейчас не горит, просто интересно.
 
N

nvyush

А какая версия клиента? У меня 8.0.1 — показывает (условно) только "Начальник отдела", хотя в строку состояния информацию о подписи выводит. Никаких свойств у раздела по настройке вывода информации о подписи не нашёл. Хотелось бы узнать, как добиться подобного результата — может пригодится в будущем.
 
M

motogarri

Версия 8.5. Я тоже никаких настроек раздела не нашел по этому поводу.
 
N

nvyush

Похоже, это особенность версии 8.5.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!