GnuTLS is not well designed, and has many flaws. mbedTLS is much nicer, and is available under a GPLv3 compatible license (Apache 2).
See [GnuTLS considered harmful] and [GnuTLS: Big internal bugs, few real-world problems].
Do you know if mbedTLS supports storing and restoring it's session state?
GnuTLS doesn't, which is why you lose your SSL connections when using the /upgrade command in WeeChat and have to reconnect. So if mbedTLS actually supported that, this would be a very nice advantage too.
GnuTLS is not well designed, and has many flaws
How is it badly designed, what kind of flaws?
mbedTLS is much nicer
How is it nicer? is it packaged/available everywhere where WeeChat is currently?
I am not a developer or anything, but I find it bad to just see these claims without any explanation why or at least link somewhere which explains this. I think I have only seen similar issues closed elsewhere, but I am not sure on that either.
GnuTLS doesn't, which is why you lose your SSL connections when using the /upgrade command in WeeChat and have to reconnect.
I can +1 @Mikaela, the info she asked is relevant and must be given in the issue, not just "please switch to X" (the issue as-is has zero chances to be implemented).
@Mikaela @flashcode See my edit. In short, GnuTLS has design problems that make it less secure.
Thanks, that looks better.
I would personally just have open question of what makes mbedTLS nicer and if it's available everywhere where WeeChat is used, but that appears to be yes (looking at Wikipedia and that it's in Arch Linux and apparently installed on my system, so this is not very accurate check) and OpenSSL seems to use/support it (so it's not so random new name than I thought).
Closer to IRC it seems to be supported by Charybdis IRCd.
I think I have only seen similar issues closed elsewhere, but I am not sure on that either.
This was apparently InspIRCd https://github.com/inspircd/inspircd/issues/100 but was approved in https://github.com/inspircd/inspircd/issues/1111 which raises the following arguments:
There is another TLS library that is growing in popularity, mbedTLS. It has the advantages of being cleanly implemented and has been security audited.
It may be advantageous to offer it as a TLS backend for InspIRCd users, especially given the generally bad situation with OpenSSL and the poor maintenance of GNUTLS lately.
mbedTLS supports being built as shared library now and is included in most mainstream distributions
However it's also missing source links unless the people themselves are believed to and this comment probably doesn't matter as I am neither developer or security/crypto/whatever engineer/similar.
Wouldn't it be even better to give the user the choice at compile time? I'm not sure what amount of work is involved, but a --use-gnutls would be nice if offered if/when mbedTLS becomes the default.
Supporting multiple TLS libs in same code (using for example conditional macros) would lead to bloat code: the libs APIs are very different.
Even just replacing GnuTLS by another lib is not easy.
Most helpful comment
How is it badly designed, what kind of flaws?
How is it nicer? is it packaged/available everywhere where WeeChat is currently?
I am not a developer or anything, but I find it bad to just see these claims without any explanation why or at least link somewhere which explains this. I think I have only seen similar issues closed elsewhere, but I am not sure on that either.