License | BSD-3-Clause |
---|---|
Maintainer | The Haskell Cryptography Group |
Portability | GHC only |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Sel is the library for casual users by the Haskell Cryptography Group.
It builds on Libsodium, a reliable and audited library for common operations.
⚠️ Important note: if you want to use any of this code in an executable, ensure that you use secureMain
or secureMainWithError
in your main
function before you call any functions from this library. Failing to do so will cause problems. For libraries, this is not necessary.
Synopsis
- secureMain :: IO a -> IO a
- secureMainWithError :: IO a -> IO a -> IO a
Available APIs
Hashing
Purpose | Module |
---|---|
Hash passwords | Sel.Hashing.Password |
Verify the integrity of files and hash large data | Sel.Hashing |
Hash tables, bloom filters, fast integrity checking of short input | Sel.Hashing.Short |
Secret key / symmetric cryptography
Purpose | Module |
---|---|
Authenticate a message with a secret key | Sel.SecretKey.Authentication |
Encrypt and sign data with a secret key | Sel.SecretKey.Cipher |
Encrypt a stream of messages | Sel.SecretKey.Stream |
Public and Secret key / asymmetric cryptography
Purpose | Module |
---|---|
Sign and encrypt with my secret key and my recipient's public key | Sel.PublicKey.Cipher |
Sign and encrypt an anonymous message with my recipient's public key | Sel.PublicKey.Seal |
Sign with a secret key and distribute my public key | Sel.PublicKey.Signature |
HMAC message authentication
Purpose | Module |
---|---|
HMAC-256 | Sel.HMAC.SHA256 |
HMAC-512 | Sel.HMAC.SHA512 |
HMAC-512-256 | Sel.HMAC.SHA512_256 |
Legacy constructs
Purpose | Module |
---|---|
SHA-256 | Sel.Hashing.SHA256 |
SHA-512 | Sel.Hashing.SHA512 |
Scrypt | Sel.Scrypt |
Program entrypoint
Initialise all security-related functionality, then perform the given
action. Abort with an error message if security-related functionality cannot
be initialised. This will also indicate failure to the shell, as with die
.
Use
main :: IO () main = secureMain doTheThingIActuallyWant
Since: libsodium-bindings-0.0.1.0
:: IO a | Code to execute if there is an initialisation failure. |
-> IO a | Action that will perform cryptographic operations after libsodium is initialised. |
-> IO a |
Similar to secureMain
, but allows responding to a failure of
initialisation.
Use
main :: IO () main = secureMainWith reportErrorWithLogging doTheThingIActuallyWant
Since: libsodium-bindings-0.0.1.0