mxlgv / dino

This is Dino+ A modern XMPP/Jabber client software, based on Dino
GNU General Public License v3.0
11 stars 7 forks source link

Replace GnuTLS by OpenSSL #47

Open igsha opened 3 months ago

igsha commented 3 months ago

Motivation

Native building through msvc on windows is possible with openssl library. It is recommended to use meson because it is native tool to build vala and glib-oriented projects.

What works

  1. Dino can be built on windows using mingw + cmake or meson + gnutls.
  2. Dino can be built though meson with openssl but w/o ICE plugin. That's why calling does not work now.

Analysis

The GnuTLS library is used in the ICE plugin to establish encrypted session. There are 2 parts in the plugin (dtls_srtp.vala):

It seems all of the above features are supported by openssl. There is no much information about DTLS handshaking between openssl and gnutls. The first part (X509) can be easily ported on openssl.

The most unlear part is SRTP support, set priority string and handshaking.