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).