sel-0.0.1.0: README.md
# sel [](https://github.com/haskell-cryptography/libsodium-bindings/actions/workflows/sel.yml) [](https://haskell.org)
Sel is the library for casual users by the [Haskell Cryptography Group](https://haskell-cryptography.org).
It builds on [Libsodium](https://doc.libsodium.org), a reliable and audited library for common operations.
## Hashing
| Purpose | Module |
|----------------------------------------------------------------------|--------------------------------|
| Hash passwords | [Sel.Hashing.Password](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-Hashing-Password.html) |
| Verify the integrity of files and hash large data | [Sel.Hashing](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-Hashing.html) |
| Hash tables, bloom filters, fast integrity checking of short input | [Sel.Hashing.Short](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-Hashing-Short.html) |
## Secret key / Symmetric cryptography
| Purpose | Module |
|----------------------------------------------------------------------|--------------------------------|
| Authenticate a message with a secret key | [Sel.SecretKey.Authentication](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-SecretKey-Authentication.html) |
| Encrypt and sign data with a secret key | [Sel.SecretKey.Cipher](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-SecretKey-Cipher.html) |
| Encrypt a stream of messages | [Sel.SecretKey.Stream](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-SecretKey-Stream.html) |
## Public and Secret key / Asymmetric cryptography
| Purpose | Module |
|----------------------------------------------------------------------|--------------------------------|
| Sign and encrypt with my secret key and my recipient's public key | [Sel.PublicKey.Cipher](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-PublicKey-Cipher.html) |
| Sign and encrypt an anonymous message with my recipient's public key | [Sel.PublicKey.Seal](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-PublicKey-Seal.html) |
| Sign with a secret key and distribute my public key | [Sel.PublicKey.Signature](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-PublicKey-Signature.html) |
## HMAC message authentication
| Purpose | Module |
|----------------------------------------------------------------------|--------------------------------|
| HMAC-256 | [Sel.HMAC.SHA256](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-HMAC-SHA256.html) |
| HMAC-512 | [Sel.HMAC.SHA512](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-HMAC-SHA512.html) |
| HMAC-512-256 | [Sel.HMAC.SHA512_256](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-HMAC-SHA512_256.html) |
## Legacy SHA2 constructs
| Purpose | Module |
|----------------------------------------------------------------------|--------------------------------|
| SHA-256 | [Sel.Hashing.SHA256](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-Hashing-SHA256.html) |
| SHA-512 | [Sel.Hashing.SHA512](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-Hashing-SHA512.html) |
| Scrypt | [Sel.Scrypt](https://hackage.haskell.org/package/sel-0.0.1.0/candidate/docs/Sel-Scrypt.html) |