sel-0.0.1.0: Cryptography for the casual user
LicenseBSD-3-Clause
MaintainerThe Haskell Cryptography Group
PortabilityGHC only
Safe HaskellSafe-Inferred
LanguageHaskell2010

Sel

Description

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

Available APIs

Hashing

PurposeModule
Hash passwordsSel.Hashing.Password
Verify the integrity of files and hash large dataSel.Hashing
Hash tables, bloom filters, fast integrity checking of short inputSel.Hashing.Short

Secret key / symmetric cryptography

PurposeModule
Authenticate a message with a secret keySel.SecretKey.Authentication
Encrypt and sign data with a secret keySel.SecretKey.Cipher
Encrypt a stream of messagesSel.SecretKey.Stream

Public and Secret key / asymmetric cryptography

PurposeModule
Sign and encrypt with my secret key and my recipient's public keySel.PublicKey.Cipher
Sign and encrypt an anonymous message with my recipient's public keySel.PublicKey.Seal
Sign with a secret key and distribute my public keySel.PublicKey.Signature

HMAC message authentication

PurposeModule
HMAC-256Sel.HMAC.SHA256
HMAC-512Sel.HMAC.SHA512
HMAC-512-256Sel.HMAC.SHA512_256

Legacy constructs

PurposeModule
SHA-256Sel.Hashing.SHA256
SHA-512Sel.Hashing.SHA512
ScryptSel.Scrypt

Program entrypoint

secureMain #

Arguments

:: IO a

Action that will perform cryptographic operations

-> IO a 

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

secureMainWithError #

Arguments

:: 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