| License | BSD3 |
|---|---|
| Safe Haskell | None |
| Language | Haskell2010 |
Data.CryptoID.Class.ImplicitNamespace
Description
When unambiguous it can be convenient to automatically infer the namespace based on the plaintext type.
Consider using newtype wrappers in order to do so.
- class MonadThrow m => MonadCrypto (m :: * -> *) where
- type MonadCryptoKey m :: *
- type family CryptoIDNamespace (ciphertext :: *) (plaintext :: *) :: Symbol
- type HasCryptoID ciphertext plaintext = HasCryptoID (CryptoIDNamespace ciphertext plaintext) ciphertext plaintext
- type CryptoID ciphertext plaintext = CryptoID (CryptoIDNamespace ciphertext plaintext) ciphertext
- CryptoID :: a -> CryptoID namespace a
- ciphertext :: CryptoID namespace a -> a
- encrypt :: HasCryptoID ciphertext plaintext m => plaintext -> m (CryptoID ciphertext plaintext)
- decrypt :: HasCryptoID ciphertext plaintext m => CryptoID ciphertext plaintext -> m plaintext
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.
Minimal complete definition
Associated Types
type MonadCryptoKey m :: * Source #
Methods
cryptoIDKey :: (MonadCryptoKey m -> m a) -> m a Source #
type family CryptoIDNamespace (ciphertext :: *) (plaintext :: *) :: Symbol Source #
Type family of namespaces associated to certain plaintext-types (parameterized over ciphertext for completeness)
type HasCryptoID ciphertext plaintext = HasCryptoID (CryptoIDNamespace ciphertext plaintext) ciphertext plaintext Source #
HasCryptoID reformulated to utilize CryptoIDNamespace
type CryptoID ciphertext plaintext = CryptoID (CryptoIDNamespace ciphertext plaintext) ciphertext Source #
CryptoID reformulated to utilize CryptoIDNamespace
ciphertext :: CryptoID namespace a -> a #