ТЗ на программу-агент

Материал из Сервис Облачной Демократии
Перейти к: навигация, поиск
Содержимое страницы устарело

Программа должна представлять из себя ПО с открытыми исходными кодами. В качестве основного - диалоговое окно, скрывающееся в иконку области уведомлений (в трэй) по щелчку на иконке и появляющееся по нему-же. В окне должны задаваться параметры программы, сохраняемые в файле конфигурации:

  1. Путь к программе gpg2 (диалог выбора файла).
  2. Путь к хранилищу gpg ключей (диалог выбора каталога).
  3. URL сервера ключей GPG. Значение по умолчанию - hkp://keys.cdemocracy.ru;
  4. Выбор из списка имеющихся своих секретных ключей ключа по умолчанию. Этот пункт активизируется после выбора двух верхних.
  5. Чекбокс "Скрывать программу при запуске".

Внизу три кнопки: "Сохранить" - активизируется при изменении какого-либо из параметров, "Отменить" - отменяет сделанные в параметрах изменения и "Завершить" - завершает работу программы.

HTTP сервер

Программа должна принимать HTTP соединения по адресу 127.0.0.1 пор 7920 (таймоут соединения не менее 300 секунд). Запрос типа POST. В качестве URL будет выступать название функции:

Текст для подписания и шифрования передается в параметре запроса "text". В ответе типа "text/plain" должен передаваться результат работы функции. В заголовках ответа должен присутствовать заголовок "Access-Control-Allow-Origin: *".

Диалоги

По HTTP запросу программой должно выдаваться окно соответствующего назначения (в центре экрана, выше всех окон):

Для подписания текста: Выдается окно, в верхней части которого содержится текстовая информация, которую нужно подписать. Внизу окна на стандартном месте (горизонтально по середине) две кнопки - "Подписать" и "Отказаться". При нажатии "Подписать", должны производиться действия по подписанию текста с помощью вызова программы gpg2. Ответ должен передаваться в ответную часть запроса. При нажатии на "Отказаться" в ответ должен передаваться пустой текст (либо текст типа "Отказ в подписании" - строка должна быдь доступна в коде для изменения).

Для проверки подписи: Сразу производится проверка подписи. Если ключа, которым совершена подпись, не обнаруживается в локальном хранилище, производится попытка его скачать с сервера ключей GPG. После этого в диалоговом окне выводиться сообщение "Подпись верна" или "Плохая подпись" и, в случае верной подписи, идентификаторы ключа подписавшего. Снизу одна кнопка "Готово", по нажатию на которую окно закрывается.

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

Для расшифровки текста Выдается окно с зашифрованным текстом и кнопкой "Расшифровать". По нажатию на нее переданный текст расшифровывается и выдается пользователю в этом-же окне. Расшифрованный текст НЕ передается назад на страницу (передается лишь результат-заглушка).

Для генерации одноразового идентификатора для голосований Без диалогового окна в ответе выдается одноразовый идентификатор (хэшь от GUID) и в зашифрованной локальной БД программы-агента запоминается пара "Одноразовый идентификатор" - "Идентификатор голосования". При повторной генерации идентификатора для того-же голосования должен выдаваться запрос на подтверждение операции пользователем. Через контекстное меню программы (правой кнопкой мыши на иконке в трэе) должна быть возможность вызвать диалог, в котором будет возможность показать пользователю по идентификатору голосования соответствующий (или соответствующие) ему одноразовый идентификатор пользователя.

Общие требования

В программе должна присутствовать "защита от дурака". Она должна быть устойчива к передаче в нее через сетевое соединение произвольных данных и подмене локальной БД программы.

В данный момент для написания программы-агента используется Free Pascal и среда Lazarus, которые работают и под Windows и под Linux. Если хотите принять участие в разработке, пишите на емэил [1].

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты