add crypto errors standard enumeration and some helper.
This commit is contained in:
parent
54ba47384c
commit
3b19f768ce
12
Crypto/Error.hs
Normal file
12
Crypto/Error.hs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-- |
|
||||||
|
-- Module : Crypto.Error
|
||||||
|
-- License : BSD-style
|
||||||
|
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
|
||||||
|
-- Stability : Stable
|
||||||
|
-- Portability : Excellent
|
||||||
|
--
|
||||||
|
module Crypto.Error
|
||||||
|
( module Crypto.Error.Types
|
||||||
|
) where
|
||||||
|
|
||||||
|
import Crypto.Error.Types
|
||||||
54
Crypto/Error/Types.hs
Normal file
54
Crypto/Error/Types.hs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
-- |
|
||||||
|
-- Module : Crypto.Error.Types
|
||||||
|
-- License : BSD-style
|
||||||
|
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
|
||||||
|
-- Stability : stable
|
||||||
|
-- Portability : Good
|
||||||
|
--
|
||||||
|
-- Cryptographic Error enumeration and handling
|
||||||
|
--
|
||||||
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
|
module Crypto.Error.Types
|
||||||
|
( CryptoError(..)
|
||||||
|
, CryptoFailable(..)
|
||||||
|
) where
|
||||||
|
|
||||||
|
import qualified Control.Exception as E
|
||||||
|
import Data.Data
|
||||||
|
|
||||||
|
import Crypto.Internal.Imports
|
||||||
|
|
||||||
|
-- | Enumeration of all possible errors that can be found in this library
|
||||||
|
data CryptoError =
|
||||||
|
-- symmetric cipher errors
|
||||||
|
CryptoError_KeySizeInvalid
|
||||||
|
| CryptoError_IvSizeInvalid
|
||||||
|
deriving (Show,Eq,Enum,Data,Typeable)
|
||||||
|
|
||||||
|
instance E.Exception CryptoError
|
||||||
|
|
||||||
|
-- | A simple Either like type to represent a computation that can fail
|
||||||
|
--
|
||||||
|
-- 2 possibles values are:
|
||||||
|
-- * 'CryptoPassed' :
|
||||||
|
data CryptoFailable a =
|
||||||
|
CryptoPassed a
|
||||||
|
| CryptoFailed CryptoError
|
||||||
|
|
||||||
|
instance Functor CryptoFailable where
|
||||||
|
fmap f (CryptoPassed a) = CryptoPassed (f a)
|
||||||
|
fmap _ (CryptoFailed r) = CryptoFailed r
|
||||||
|
|
||||||
|
instance Applicative CryptoFailable where
|
||||||
|
pure a = CryptoPassed a
|
||||||
|
instance Monad CryptoFailable where
|
||||||
|
return a = CryptoPassed a
|
||||||
|
|
||||||
|
throwCryptoError :: CryptoFailable a -> IO a
|
||||||
|
throwCryptoError = undefined
|
||||||
|
|
||||||
|
eitherCryptoError :: CryptoFailable a -> Either CryptoError a
|
||||||
|
eitherCryptoError = undefined
|
||||||
|
|
||||||
|
maybeCryptoError :: CryptoFailable a -> Maybe a
|
||||||
|
maybeCryptoError = undefined
|
||||||
@ -32,6 +32,7 @@ Library
|
|||||||
Crypto.Cipher.RC4
|
Crypto.Cipher.RC4
|
||||||
Crypto.Cipher.Types
|
Crypto.Cipher.Types
|
||||||
Crypto.Data.AFIS
|
Crypto.Data.AFIS
|
||||||
|
Crypto.Error
|
||||||
Crypto.MAC.Poly1305
|
Crypto.MAC.Poly1305
|
||||||
Crypto.MAC.HMAC
|
Crypto.MAC.HMAC
|
||||||
Crypto.Number.Basic
|
Crypto.Number.Basic
|
||||||
@ -87,6 +88,7 @@ Library
|
|||||||
Crypto.Cipher.Types.GF
|
Crypto.Cipher.Types.GF
|
||||||
Crypto.Cipher.Types.Stream
|
Crypto.Cipher.Types.Stream
|
||||||
Crypto.Cipher.Types.Utils
|
Crypto.Cipher.Types.Utils
|
||||||
|
Crypto.Error.Types
|
||||||
Crypto.Hash.Utils
|
Crypto.Hash.Utils
|
||||||
Crypto.Hash.Utils.Cpu
|
Crypto.Hash.Utils.Cpu
|
||||||
Crypto.Hash.Types
|
Crypto.Hash.Types
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user