Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Описание
Реализация TCP с поддержкой TLS 1.3 сервера и клиента, используя boost::asio.
Сервер принимает команду и строку.
Сервер обрабатывает одну команду: xml_sign. Для XML используются Open Source библиотеки.
Команда xml_sign принимает на вход XML строку и формирует XML подпись, согласно алгоритму
формирования XML Signature (алгоритм подписи: RSAWithSHA1, Enveloped-signature transform method,
C14N canonicalization method).
Для криптографических операций используется напрямую OPENSSL, все примитивы для которых требуется
выделение/очистка памяти, используя функции OPENSSL, обернуты в smart указатели.
Клиенту возвращается подписанное сообщение.
Клиентское приложение написано на Python, вызывает функции из С++ модуля.
В рамках С++ модуля реализовано сетевое взаимодействие. Реализована функция которая принимает
из Python структуру содержания: command строка, value строка. C++ модуль сериализует команду и значение
в одну строку и посылает по сети серверу. Если команда xml_sign - верифицирует подпись, вернувшуюся от сервера.
В ответ возвращает в Python структуру: result bool, value строка.
Сборка через CMake.
В папке cert ключи/сертификаты для тестирования.
Зависимости
xmlsec1
xslt
xml2
ssl
crypto
Сборка и установка
скопировать ключи и сертификаты из cert в /opt/cert
xml-файл для отправки и подписи: client/src.xml
cmake .
make
запуск сервиса
app/app
запуск клиента
cd client
python client.py
Важно: clang-ом не собирать.
Иначе вызов xmlSecCryptoDLLoadLibrary() возвращает !=0 (ошибка).