In contrast BearSSL is kept simple, and is primarily the work of a single author, who knows a lot about cryptography
Smaller code helps prevent bugs, as there's simply less code where bugs could be.
Thus it is not as clear as you picture it.
What is clear, however, is that it should be easier to make BearSSL's code bug-free, by virtue of having less code.
Which makes it complicated.
On the other hand, every bug in OpenSSL gets CVE mark and will end up into the news. It gives distorted view and comparison of the software quality between many projects.
I still can't comprehend how the industry didn't simply move to libressl early on.
And Heartbleed bug was in the extension, not in the core software.
> (citation needed, btw)
Not really. But if you insist, OpenSSL is defacto crypto library [1] , at least on server side. Browsers and OpenSSL takes the most burden for securing every-day use of internet in the world. There are billions testers every day.
Sure, this is done all the time via verification and other formal methods. It's not common in the industry, but not entirely uncommon either.
CompCert [2] is a formally verified optimizing C compiler.
Most formal verification happens in compilers or low-level mission critical systems due to the cost.
If you want to write some formally verified C, you can check out Frama-C [3].
Using proofs just shifts the bugs into the assumptions/axioms (i.e you think your proof is proving X but it's actually proving Y)
It is not recommended to use for general parties, even Google does not recommend.
To quote: https://boringssl.googlesource.com/boringssl/
BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.
Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.
Counterpoints:
> Encryption Implemented in the Google Front End for Google Cloud Services and Implemented in the BoringSSL Cryptographic Library
https://cloud.google.com/docs/security/encryption-in-transit
> We use a common cryptographic library, Tink, which includes our FIPS 140-2 validated module (named BoringCrypto) to implement encryption consistently across Google Cloud
https://cloud.google.com/docs/security/encryption/default-en...
> It may (or may not!) come as surprise, but a few months ago we migrated Cloudflare’s edge SSL connection termination stack to use BoringSSL: Google's crypto and SSL implementation that started as a fork of OpenSSL.
https://blog.cloudflare.com/make-ssl-boring-again/
> We ported our SMTP server to use BoringSSL, Cloudflare’s SSL/TLS implementation of choice
https://blog.cloudflare.com/email-routing-leaves-beta/
> We are pleased to announce the availability of s2n-quic, an open-source Rust implementation of the QUIC protocol added to our set of AWS encryption open-source libraries. <snip> AWS-LC is a general-purpose cryptographic library maintained by AWS which originated from the Google project BoringSSL.
https://aws.amazon.com/blogs/security/introducing-s2n-quic-o...
This last one is not 100% clear but I would imagine AWS dogfoods their own encryption libraries to build their internal cloud stack.