packages feed

xml-verify-0.1.0.0: src/Crypto/PubKey/Xml/Errors.hs

{-# LANGUAGE TypeSynonymInstances #-}

{-|
Description: Error Types
-}

module Crypto.PubKey.Xml.Errors where

import Control.Exception
import Data.Either

data XmlVerifyError = XmlSecInitFailed -- -2
                    | XmlSecIncomp     -- -3
                    | XmlSecCryptoFail -- -4
                    | CryptoInitFailed -- -5
                    | XmlCryptoFailed  -- -6
                    | XmlParseFail     -- -7
                    | XmlNoStartNode   -- -8
                    | XmlSigCreateFail -- -9
                    | XmlPemLoadFail   -- -10
                    | XmlPemNameFail   -- -11
                    | VeryifyFail      -- -12

instance Show XmlVerifyError where
  show XmlSecInitFailed = "xmlsec initialization failed"
  show XmlSecIncomp     = "loaded xmlsec library version is not compatible"
  show XmlSecCryptoFail = "unable to load default xmlsec-crypto library"
  show CryptoInitFailed = "crypto initialization failed"
  show XmlCryptoFailed  = "xmlsec-crypto initialization failed"
  show XmlParseFail     = "unable to parse file"
  show XmlNoStartNode   = "start node not found"
  show XmlSigCreateFail = "failed to create signature context"
  show XmlPemLoadFail   = "failed to load public pem key"
  show XmlPemNameFail   = "failed to set key name for key"
  show VeryifyFail      = "signature verify fail"

instance Exception XmlVerifyError

throwXmlError :: IO (Either XmlVerifyError a) -> IO a
throwXmlError res = res >>= either throwIO return