License | BSD3 |
---|---|

Safe Haskell | None |

Language | Haskell2010 |

Polymorphic functions to perform cryptographic operations on `CryptoID`

s in a monadic context

- class MonadThrow m => MonadCrypto (m :: * -> *) where
- type MonadCryptoKey m :: *

- class MonadCrypto m => HasCryptoID (namespace :: Symbol) (ciphertext :: *) (plaintext :: *) (m :: * -> *) where

# Documentation

class MonadThrow m => MonadCrypto (m :: * -> *) where Source #

Class of monads granting reader access to a key and allowing for failure during cryptographic operations

This formulation is weaker than `MonadReader key`

(from mtl) in that it does not require `local`

.

type MonadCryptoKey m :: * Source #

cryptoIDKey :: (MonadCryptoKey m -> m a) -> m a Source #

class MonadCrypto m => HasCryptoID (namespace :: Symbol) (ciphertext :: *) (plaintext :: *) (m :: * -> *) where Source #

Multiparameter typeclass of `(namespace, ciphertext, plaintext, monad)`

tuples which allow for cryptographic operations on `CryptoID`

s with appropriate `namespace`

, `plaintext`

, and `ciphertext`

, utilising the state of `monad`

Instances of this typeclass are usually universally quantified over (at least) `namespace`

, and `m`

encrypt :: plaintext -> m (CryptoID namespace ciphertext) Source #

Encrypt a `plaintext`

in a fashion dependent on the `namespace`

and desired `ciphertext`

-type retrieving the key from and throwing errors into `m`

decrypt :: CryptoID namespace ciphertext -> m plaintext Source #

Encrypt a `ciphertext`

in a fashion dependent on the `namespace`

and desired `plaintext`

-type retrieving the key from and throwing errors into `m`