Делаю проект для себя. Обмен аудиопотоком между двумя клиентами через relay сервер.
Сервер - Debian, io_uring (liburing), Sodium, C. Клиент - iOS, Sodium, Swift, C.
Технические данные по TCP. Аудиопоток по UDP.
Получилось обменяться зашифрованными сообщениями с проверкой подписи между клиентом (iOS) и сервером (Debian) в обе стороны.
Долго пытался использовать OpenSSL на серваке + CryptoKit на iOS, но никак не получалось. Потом перешёл на Sodium (и на iOS и на сервере). Сначала обмен публичными ключами и на их основе генерация сессионных ключей (один для шифрования, другой для расшифровки).
Следующий этап обмен данными между двумя клиентами.