Приложение добавляет уровень шифрования сообщений, которые передаются через такие сервисы, как Gmail.
Каждое сообщение снабжается электронной подписью. Это позволяет выполнить аутентификацию собеседника и проверить целостность сообщения.
Вся корреспонденция, которая пересылается между пользователями, шифруется 256-битным сеансовым ключом по алгоритму AES. Они не сохраняются на долговременном носителе и генерируются каждый раз, как только пользователи создают диалог. Это значительно повышает стойкость системы к методам криптоанализа.
Приложение выполняет авторизацию на сторонних сервисах для передачи сообщений по протоколу OAuth2. Такой подход позволяет пользователям управлять доступом приложения к их аккаунту, а так же исключить риск компрометации паролей.
Все данные, которые приложение сохраняет на жестком диске, шифруются с помощью 256-битного ключа по протоколу AES. Данный ключ генерируется из пароля, который задает пользователь.
На данный момент доступна передача сообщений через сервис Gmail, но ведутся работы по расширению этого списка.
Дополнительная информация находится в wik проекта. Документация проекта - в парке doc
Для выполнения сборки необходимы:
- cmake версии 3.14 и выше.
- Qt5
- git
- Boost (system) версии 1.58.0 и выше
- [libcurl] (https://github.com/curl/curl) версии 7.50.0 и выше
- [vmime] (https://www.vmime.org/) начиная с коммита e2fc191 и выше.
- persistent-storage версии 1.0.0 и выше.
- fmt
- nlohmann json
- CryptoPP
- json-schema-validator версии 2.0.0 и выше
Ниже перечислены модули, которые так же используются при сборке, но они либо добавлены в репозиторий, либо будут склонированы во время сборки:
Так же для успешного разбора CMakeLists.txt может потребоваться задать переменную CMake - CMAKE_PREFIX_PATH
.
Для генерации документации понадобятся:
Более подробно про процесс сборки на wiki.
Для форматирования кода используется clang-format. В корне проекта находится файл .clang-format с описанием правил форматирования. Для того, чтобы применить их для всего проекта достаточно выполнить команду:
find . \( -name '*.cpp' -o -name '*.h' \) -exec clang-format -i {} \;
Добавлено автоматическое форматирование кода с использованием git-hook. Для того, чтобы это заработало, необходимо выполнить команду:
git config core.hooksPath .githooks
Для сборки проекта может использоваться Docker. Образы находятся в docker.
docker image создается командой
docker build -t <image-name> --file docker/<docker file> .
Где:
- image-name имя образа
- docker file docker-файл, который используется для сборки под конкретную платформу.
Проект собирается командой:
docker run --mount type=bind,source=<result folder>,target=/app/res --mount type=bind,source=<sources>,target=/app/src <image-name>
Где:
- result folder папка, в которую будут скопированы бинарные файлы и документация. Директория должна существовать.
- sources путь к исходникам
- image-name ранее созданный docker-образ
Пример:
docker run --mount type=bind,source=/tmp/github/res,target=/app/res --mount type=bind,source=/tmp/github/SecureDialogues,target=/app/src secure-dialogues-ubuntu-bionic
Более подробно на wiki
Добавлена возможность запустить приложение в контейнере. Для этого в Makefile в дирректории docker включена цель docker. Эта цель собирает проект под Ubuntu 18.04, используя ubuntu-bionic.docker. Затем создается image и запускается контейнер с приложением внутри.
Возможна такая ситуация, когда расширение Xsecurity блокирует неавторизованные подключения к X-серверу. Решить проблему поможет команда:
xhost +local:
В приложении доступна локализация для русского языка. Для Ubuntu может потребоваться выполнить команду:
sudo locale-gen ru_RU