{"id":14232,"date":"2020-06-18T08:57:50","date_gmt":"2020-06-18T06:57:50","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=14232"},"modified":"2020-06-18T08:57:50","modified_gmt":"2020-06-18T06:57:50","slug":"quic-with-wolfssl","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2020\/06\/18\/quic-with-wolfssl\/","title":{"rendered":"QUIC with wolfSSL"},"content":{"rendered":"\n<p>We have started the work on extending <a href=\"https:\/\/wolfssl.com\/\">wolfSSL<\/a> to provide the necessary API calls to power QUIC and HTTP\/3 implementations!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Small, fast and FIPS<\/h2>\n\n\n\n<p>The TLS library known as wolfSSL is already very often a top choice when users are looking for a small and yet very fast TLS stack that supports all the latest protocol features; including TLS 1.3 support &#8211; open source with commercial support available.<\/p>\n\n\n\n<p>As manufacturers of IoT devices and other systems with memory, CPU and footprint constraints are looking forward to following the Internet development and switching over to upcoming QUIC and HTTP\/3 protocols, wolfSSL is here to help users take that step.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A QUIC reminder<\/h2>\n\n\n\n<p>In case you have forgot, here&#8217;s a schematic view of HTTPS stacks, old vs new. On the right side you can see HTTP\/3, QUIC and the little TLS 1.3 box there <em>within<\/em> QUIC.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new-1200x675.jpg\" alt=\"\" class=\"wp-image-14259\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new-1200x675.jpg 1200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new-450x253.jpg 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new-200x113.jpg 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new-768x432.jpg 768w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new-1536x864.jpg 1536w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2020\/06\/https-stacks-old-vs-new.jpg 2000w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ngtcp2<\/h2>\n\n\n\n<p>There are no plans to write a full QUIC stack. There are already plenty of those. We&#8217;re talking about adjustments and extensions of the existing TLS library API set to make sure wolfSSL can be used as the TLS component in a QUIC stack.<\/p>\n\n\n\n<p>One of the leading QUIC stacks and so far the only one I know of that does this, <a href=\"https:\/\/github.com\/ngtcp2\/ngtcp2\">ngtcp2<\/a> is written to be TLS library agnostic and allows different TLS libraries to be plugged in as different backends. I believe it makes perfect sense to make such a plugin for wolfSSL to be a sensible step as soon as there&#8217;s code to try out.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png\" alt=\"\" class=\"wp-image-8943\" width=\"98\" height=\"85\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png 789w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-200x175.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-450x394.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-768x672.png 768w\" sizes=\"auto, (max-width: 98px) 100vw, 98px\" \/><\/figure><\/div>\n\n\n\n<p>A neat effect of that, would be that once wolfSSL works as a backend to ngtcp2, it should be possible to do full-fledged HTTP\/3 transfers using <a href=\"https:\/\/curl.haxx.se\/\">curl<\/a> powered by ngtcp2+wolfSSL. Contact us with other ideas for QUIC stacks you would like us to test wolfSSL with!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FIPS 140-2<\/h2>\n\n\n\n<p>We expect wolfSSL to be the first <a href=\"https:\/\/en.wikipedia.org\/wiki\/Federal_Information_Processing_Standards\">FIPS-based<\/a> implementation to add support for QUIC. I hear this is valuable to a number of users.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When<\/h2>\n\n\n\n<p>This work begins now and this is just a blog post of our intentions. We and I will of course <em>love<\/em> to get your feedback on this and whatever else that is related. We&#8217;re also interested to get in touch with people and companies who want to be early testers of our implementation. You know where to find us!<\/p>\n\n\n\n<p>I can promise you that the more interest we can sense to exist for this effort, the sooner we will see the first code to test out.<\/p>\n\n\n\n<p>It seems likely that we&#8217;re not going to support any older TLS drafts for QUIC than <a href=\"https:\/\/quicwg.org\/\">draft-29<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"1048\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC-1200x1048.png\" alt=\"\" class=\"wp-image-10108\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC-1200x1048.png 1200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC-200x175.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC-450x393.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC-768x671.png 768w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2017\/06\/QUIC.png 2000w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>We have started the work on extending wolfSSL to provide the necessary API calls to power QUIC and HTTP\/3 implementations! Small, fast and FIPS The TLS library known as wolfSSL is already very often a top choice when users are looking for a small and yet very fast TLS stack that supports all the latest &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2020\/06\/18\/quic-with-wolfssl\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">QUIC with wolfSSL<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":13135,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,13,133,477],"tags":[33,436,495,414,471],"class_list":["post-14232","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curl","category-net","category-security","category-wolfssl","tag-curl-and-libcurl","tag-http3","tag-ngtcp2","tag-quic","tag-wolfssl"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/14232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=14232"}],"version-history":[{"count":18,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/14232\/revisions"}],"predecessor-version":[{"id":14260,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/14232\/revisions\/14260"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media\/13135"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=14232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=14232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=14232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}