Botan Cryptography 3rd Monthly Status Report

Monthly Status Report

This is the third monthly report for the Botan Cryptography Project, and it comes with some very satisfying news! But first…

Where we were

In our second Monthly Status Report, we spent quite a lot of time on quality-of-life aspects. We merged CAPI-experiments into main, giving us usage of the new CApiFFI. We also started freezing botan-bindings and botan-low, and completely overhauled the project README for great good!

Bindings library botan-bindings
Low-level library botan-low
Unit tests
Extended X509 support
CI
High-level library botan <- we were here
Documentation
Tutorials 
Test vectors
Stream Cipher support
TLS support

It really put us in a good spot to start hacking away at the high-level botan library.

Where we are

This month has been reworking and refining!

Most of the month was spent vastly improving ergonomics, documentation, and tutorials (also available in the haddock docs), and we are finally freezing botan-bindings and botan-low for initial release! That’s right - we have candidate packages for botan-bindings and botan-low! Unless there are any critical issues, by the time you read this, they may even be published!

Aside from that, a lot of effort has gone towards producing the high-level botan library, and some of the improvements have trickled their way downward to botan-low in the form of algorithm pattern constants. The inadequacy of long assemblies of ADTs such as Cryptohash $ SHA_3 SHA3_512 or EMSA $ EMSA4 (Cryptohash $ SHA2 SHA512) Nothing has resulted in the development of cryptographic typeclasses with data families - this has significantly improved the ergonomics of botan as the high-level library approaches a degree of usability, now having a incomplete-but-growing complement of gold-standard libraries. Error reporting has also been significantly improved :smiling:

The github activity green has grown:

Our stats for the end of the month are:

390 commits (353 Haskell + 37 C/C++)
221 days
20130 significant lines of code (17721 Haskell + 2409 C/C++)

We’ve actually reached 20k sloc! A lot of this is documentation and the new gold-standard modules which could probably be replaced with a smidge of TemplateHaskell, but its gotten to be quite a decently-sized project by now :smiling: All that effort spent organizing earlier has really paid off in making it easy to navigate!

Where we are going

Right now, the focus is still on the publishing botan-bindings and botan-low - so, documentation, tutorials, and polish. Despite this library being more work than I initially forecast, we’ve come close to meeting our deliverables on time, and the high-level botan is following soon after.

We’ve reached the end of our funding for the moment, but we’re working on that, and in the meantime we’re going to keep working hard on the project too - it’s not done yet.

Our current timeline is roughly as follows:

Bindings library botan-bindings
Low-level library botan-low
Unit tests
Extended X509 support
CI
Documentation
Tutorials <- we are here
High-level library botan <- we need to get at least here
Test vectors
Stream Cipher support
TLS support

It’s amazing how this project has really come together. After we get the low-level libraries published, we’re going to be back on the high-level classy interface, getting it shipshape for publishing as well - and then, finally then, can we start talking about what I want to do with botan when it’s finished.

Follow the devlog for more frequent updates!

Past reports

1st Monthly Status Report
2nd Monthly Status Report

Funding

This project has received support from the Haskell Foundation and funding from Mercury).

12 Likes