<story><title>BearSSL: A smaller SSL/TLS library</title><url>https://bearssl.org/</url></story><parent_chain><item><author>jart</author><text>I&amp;#x27;ve been using MbedTLS which is a similar project and loving it. But the last time I looked at the BearSSL code, it was very clean and beautiful in a way that MbedTLS isn&amp;#x27;t. Does anyone here have experience with both libraries who could illuminate the tradeoffs? For example, does BearSSL have TLS 1.3? I&amp;#x27;d be willing to give up all previous versions of TLS just to have 1.3. I want it so badly I&amp;#x27;m about to implement it into MbedTLS myself.</text></item></parent_chain><comment><author>10000truths</author><text>Two strong points for BearSSL:&lt;p&gt;- Its sans-I&amp;#x2F;O design. Too many networking-related libraries out there mix the protocol state machine logic and the I&amp;#x2F;O. In doing so, they impose a certain style of I&amp;#x2F;O and make it impossible to integrate with an existing event loop, unless you’re willing to sacrifice scalability by spawning a thread+semaphore for each connection. I’d love it if I could use libssh2 or libmysqlclient’s state machine with io_uring or DPDK! Other TLS libraries do have stuff like memory BIOs, but they’re managed by the library and force an extra memory copy to get your data to its final destination.&lt;p&gt;- No mutable global state. The fact that all functions are fully reentrant means that it’s easily usable in an interruptible context, common in freestanding environments or runtimes with fibers&amp;#x2F;coroutines.&lt;p&gt;The tradeoff is that it lacks TLS 1.3 and DTLS support. The latter in particular is something I look forward to so that a QUIC state machine in C is possible.</text></comment>
<story><title>BearSSL: A smaller SSL/TLS library</title><url>https://bearssl.org/</url></story><parent_chain><item><author>jart</author><text>I&amp;#x27;ve been using MbedTLS which is a similar project and loving it. But the last time I looked at the BearSSL code, it was very clean and beautiful in a way that MbedTLS isn&amp;#x27;t. Does anyone here have experience with both libraries who could illuminate the tradeoffs? For example, does BearSSL have TLS 1.3? I&amp;#x27;d be willing to give up all previous versions of TLS just to have 1.3. I want it so badly I&amp;#x27;m about to implement it into MbedTLS myself.</text></item></parent_chain><comment><author>harryvederci</author><text>By now, &lt;i&gt;you&lt;/i&gt; saying you&amp;#x27;re about to implement something yourself is probably an indicator for everyone else that they don&amp;#x27;t have to do it.&lt;p&gt;&amp;quot;We&amp;#x27;re good, everyone. Justine is on it.&amp;quot;</text></comment>