{"id":2029,"date":"2016-08-14T11:28:33","date_gmt":"2016-08-14T16:28:33","guid":{"rendered":"https:\/\/bitpost.com\/news\/?p=2029"},"modified":"2016-09-22T16:11:33","modified_gmt":"2016-09-22T21:11:33","slug":"c-https-libraries","status":"publish","type":"post","link":"https:\/\/bitpost.com\/news\/2016\/c-https-libraries\/","title":{"rendered":"C++ HTTPS libraries"},"content":{"rendered":"<p>Update: add these awesome ones!<\/p>\n<p>https:\/\/pocoproject.org\/<br \/>\nhttps:\/\/macchina.io\/docs\/<br \/>\nhttp:\/\/vinniefalco.github.io\/beast\/beast\/intro\/example.html<\/p>\n<p>Goal: find the fastest possible C++ https library that can score an A on the\u00a0<a href=\"https:\/\/www.ssllabs.com\/ssltest\/\">SSLLabs test<\/a>. Ties broken by ease of use, then by support for websockets.<\/p>\n<p>Initial results (see <a href=\"https:\/\/bitpost.com\/wiki\/C%2B%2B_https_libraries\">wiki<\/a> for latest&#8230;):<\/p>\n<table class=\"aligncenter\" style=\"background-color: #f0f0f0;\" border=\"1\" cellspacing=\"0\" cellpadding=\"14px\">\n<tbody>\n<tr style=\"height: 72px;\">\n<td style=\"height: 72px;\"><strong>LIBRARY<\/strong><\/td>\n<td style=\"height: 72px;\"><strong>ab<\/strong><\/p>\n<p><strong>MB\/sec<\/strong><\/td>\n<td style=\"height: 72px;\"><strong>ab<\/strong><\/p>\n<p><strong>pages\/sec<\/strong><\/td>\n<td style=\"height: 72px;\"><strong>SSL LABS<br \/>\n<\/strong><strong>SCORE<\/strong><\/td>\n<td style=\"height: 72px;\"><strong>EASE<\/strong><\/td>\n<td style=\"height: 72px;\"><strong>WS?<\/strong><\/td>\n<td style=\"height: 72px;\"><strong>COMMENTS<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">apache<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">A<\/td>\n<td style=\"height: 24px;\">3<\/td>\n<td style=\"height: 24px;\">N<\/td>\n<td style=\"height: 24px;\">need to write a module, apache remains in charge of message loop (unacceptable)<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">libwebsockets<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">7<\/td>\n<td style=\"height: 24px;\">Y<\/td>\n<td style=\"height: 24px;\"><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">proxygen<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">7<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">only easy to build on ubuntu so hasn&#8217;t been stood up on my gentoo server yet; huge kitchen sink of helpers<\/td>\n<\/tr>\n<tr style=\"height: 48px;\">\n<td style=\"height: 48px;\">Simple-Web-Server<\/td>\n<td style=\"height: 48px;\"><\/td>\n<td style=\"height: 48px;\"><\/td>\n<td style=\"height: 48px;\">\u00a0B<\/td>\n<td style=\"height: 48px;\">10<\/td>\n<td style=\"height: 48px;\">Y<\/td>\n<td style=\"height: 48px;\">websockets in a seperate compatible project; may be able to leverage asio to improve score (capped by RC4); no forward secrecy<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">websocketpp<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">\u00a0uses asio, specifies a &#8220;modern&#8221; mode that only allows TSL1.2<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">mongoose<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">3<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">messy ton of hand-crafted portability C code scared me off<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">onion<\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">looks like a strong C lib<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\">lib<a href=\"http:\/\/www.gnu.org\/software\/libmicrohttpd\/\">microhttpd<\/a><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\"><\/td>\n<td style=\"height: 24px;\">GNU c lib, not sure it supports modern algos, check score&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Update: add these awesome ones! https:\/\/pocoproject.org\/ https:\/\/macchina.io\/docs\/ http:\/\/vinniefalco.github.io\/beast\/beast\/intro\/example.html Goal: find the fastest possible C++ https library that can score an A on the\u00a0SSLLabs test. Ties broken by ease of use, then by support for websockets. Initial results (see wiki for latest&#8230;): LIBRARY ab MB\/sec ab pages\/sec SSL LABS SCORE EASE WS? COMMENTS apache A 3 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[204,22,19,233,9],"tags":[67,246,254,248,252,253,249,250,251,247],"class_list":["post-2029","post","type-post","status-publish","format-standard","hentry","category-a-better-trader","category-cpp","category-opensource","category-quick-http","category-websites","tag-apache","tag-https","tag-libmicrohttp","tag-libwebsockets","tag-mongoose","tag-onion","tag-proxygen","tag-simple-web-server","tag-websocketpp","tag-websockets"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9M11L-wJ","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/2029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/comments?post=2029"}],"version-history":[{"count":11,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/2029\/revisions"}],"predecessor-version":[{"id":2047,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/2029\/revisions\/2047"}],"wp:attachment":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/media?parent=2029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/categories?post=2029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/tags?post=2029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}