À la recherche d’une bibliothèque SSL C ++ de haut niveau

J’ai vérifié pas mal de bibliothèques SSL ce soir. OpenSSL semble bon mais manque de documentation, comme le font la plupart d’entre eux. Je pensais avoir touché le jackpot lorsque j’ai trouvé la bibliothèque SSL C ++ de NetSieben (http://www.netsieben.com/products/ssh/index.phtml), mais après des heures, je ne parviens pas à la comstackr. Il dit qu’il a besoin de la librairie de Botan, mais absolument aucune information sur la manière de la relier à Botan ou quoi que ce soit.

Je recherche donc une bibliothèque SSL assez facile à utiliser. Je ne fais que l’utiliser pour une application client afin de se connecter à un serveur déjà existant.

Vous pourriez aimer CyaSSL, qui est une autre implémentation de SSL. Vous pouvez le télécharger sur http://www.yassl.com .

Pour donner une réponse plus complète, il existe un certain nombre de bibliothèques SSL mieux documentées que OpenSSL, qui est notoirement mauvaise.

Si vous regardez la grande image, les vraies alternatives en tant que bibliothèque SSL sont Botan , PolarSSL , Mozilla NSS , Wolf et GnuTLS.

Tous, à l’exception de Botan, ne sont pas spécifiques à C ++ et ne disposent donc pas d’objects ni de ressources de gestion C ++ agréables.

PolarSSL est ma préférence personnelle pour la bibliothèque SSL, en raison de la lisibilité du code, de la documentation de l’API dans l’en-tête et de la qualité de ses expériences. Il est utilisé dans certains grands projets de logiciels libres et ils ont une sorte d’ agrément gouvernemental .

Je ne suis pas un grand fan des emballages comme Boost.Asio, car ils ne disposent toujours pas de la documentation appropriée pour les choses plus en profondeur. Boost.Asio lui-même est calme et les exemples sont assez corrects cependant. Si vous n’avez besoin que d’un simple client, c’est peut-être la solution.

Mozilla NSS est l’un des plus anciens, mais il ne prend pas en charge les nouveaux standards TLS 1.1 et TLS 1.2, ce qu’ils devraient faire.

Botan et CyaSSL sont également de bonnes alternatives. La documentation de Botan est complète sur certaines parties et peut-être un peu insuffisante sur d’autres, mais certains grands projets open source incluent Botan et en ont fait de bonnes expériences.

En général, vous pouvez faire beaucoup mieux qu’OpenSSL avec n’importe lequel de ceux-ci.

J’espère que cela t’aides!

Boost.Asio fournit des fonctionnalités SSL en encapsulant OpenSSL. Les exemples sont assez simples, pour le code client cela ressemble à ceci

ssl::context ctx(my_io_service, ssl::context::sslv23); ctx.set_verify_mode(ssl::context::verify_peer); ctx.load_verify_file("ca.pem"); ssl::stream ssl_sock(my_io_service, ctx); ip::tcp::socket::lowest_layer_type& sock = ssl_sock.lowest_layer(); sock.connect(my_endpoint); sock.handshake(); sock.write(...); 

notez qu’il existe aussi des méthodes asynchrones async_connect et async_handshake et async_write .

Pour une bibliothèque SSL simple et bien documentée, vous pouvez consulter https://polarssl.org .

PolarSSL dispose d’une documentation complète sur l’ API et d’exemples de clients sur sa page source .

Disclaimer: Je suis le responsable de la maintenance pour PolarSSL

Mozilla NSS est un ensemble de bibliothèques relativement mieux documenté.