# Botan Cryptography 3rd Monthly Status Report

**URL:** <https://discourse.haskell.org/t/botan-cryptography-3rd-monthly-status-report/8754>\
**Category:** Uncategorized\
**Created:** [February 7, 2024, 9:56pm UTC](https://discourse.haskell.org/t/botan-cryptography-3rd-monthly-status-report/8754 "2024-02-07T21:56:48Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ApothecaLabs](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/apothecalabs/32/3215_2.png) [@ApothecaLabs](https://discourse.haskell.org/u/ApothecaLabs)\
**Post date:** [February 7, 2024, 9:56pm UTC](https://discourse.haskell.org/t/botan-cryptography-3rd-monthly-status-report/8754/1 "2024-02-07T21:56:48Z")

</div>

# Monthly Status Report

This is the third monthly report for the [Botan Cryptography Project](https://github.com/apotheca/botan), and it comes with some very satisfying news! But first…

# Where we were

In our second [Monthly Status Report](http://discourse.haskell.org/t/botan-cryptography-monthly-status-report-1/8497), 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](https://github.com/apotheca/botan/blob/main/README.md) 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](https://github.com/apotheca/botan?tab=readme-ov-file#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](https://hackage.haskell.org/package/botan-bindings-0.0.1.0/candidate) and [botan-low](https://hackage.haskell.org/package/botan-low-0.0.1.0/candidate)! 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:

 ![Screenshot 2024-02-07 at 3.39.07 PM](https://us1.discourse-cdn.com/flex002/uploads/haskell/original/2X/b/bc4a68d650215b1b63592d6ec41318fbc0493646.png)

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](http://discourse.haskell.org/t/botan-bindings-devlog/6855) for more frequent updates!

# Past reports

[1st Monthly Status Report](http://discourse.haskell.org/t/botan-cryptography-monthly-status-report-0/8280)  
[2nd Monthly Status Report](http://discourse.haskell.org/t/botan-cryptography-monthly-status-report-1/8497)

# Funding

[This project](https://github.com/apotheca/botan) has received [support from the Haskell Foundation](http://discourse.haskell.org/t/the-botan-cryptography-community-project-has-been-funded/7989) and [funding from Mercury](https://mercury.com/)).
