Experimental libsodium API focusing on usability and practically realizable safety
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.



Cryptography that's slightly less likely to blow up on you

This library is not production-ready and should not be used for purposes where cryptographic failure may endanger anyone's life, liberty or pursuit of happiness. Neither stability nor quality of either API or implementation is guaranteed at the moment.

A libsodium wrapper that aims to make it as hard as possible to shoot yourself in the foot, and thus make it as easy as possible to use crypto in your software. The design of Lithium is heavily informed by research on practical usability and aims to include a "full-stack" design covering most common use-cases.

The Crypto.Lithium.* modules expose an API designed to make all the choices for you, and remove as many pitfalls as possible. For example, nonce handling is a source of unnecessary complexity and danger, and has thus been completely removed from the interface.

The Crypto.Lithium.Unsafe.* modules expose mostly raw libsodium functionality with a reasonable type system, but in a complex or risky way users of the library should not need to have to deal with.

Requires libsodium 1.0.15 or later