module Signet.Unstable.Exception.InvalidSignature where

import qualified Control.Monad.Catch as Exception
import qualified Signet.Unstable.Exception.InvalidAsymmetricSignature as InvalidAsymmetricSignature
import qualified Signet.Unstable.Exception.InvalidSymmetricSignature as InvalidSymmetricSignature

data InvalidSignature
  = InvalidAsymmetricSignature InvalidAsymmetricSignature.InvalidAsymmetricSignature
  | InvalidSymmetricSignature InvalidSymmetricSignature.InvalidSymmetricSignature
  deriving (InvalidSignature -> InvalidSignature -> Bool
(InvalidSignature -> InvalidSignature -> Bool)
-> (InvalidSignature -> InvalidSignature -> Bool)
-> Eq InvalidSignature
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InvalidSignature -> InvalidSignature -> Bool
== :: InvalidSignature -> InvalidSignature -> Bool
$c/= :: InvalidSignature -> InvalidSignature -> Bool
/= :: InvalidSignature -> InvalidSignature -> Bool
Eq, Int -> InvalidSignature -> ShowS
[InvalidSignature] -> ShowS
InvalidSignature -> String
(Int -> InvalidSignature -> ShowS)
-> (InvalidSignature -> String)
-> ([InvalidSignature] -> ShowS)
-> Show InvalidSignature
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InvalidSignature -> ShowS
showsPrec :: Int -> InvalidSignature -> ShowS
$cshow :: InvalidSignature -> String
show :: InvalidSignature -> String
$cshowList :: [InvalidSignature] -> ShowS
showList :: [InvalidSignature] -> ShowS
Show)

instance Exception.Exception InvalidSignature where
  displayException :: InvalidSignature -> String
displayException InvalidSignature
invalidSignature =
    String
"invalid signature: " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> case InvalidSignature
invalidSignature of
      InvalidAsymmetricSignature InvalidAsymmetricSignature
invalidAsymmetricSignature ->
        InvalidAsymmetricSignature -> String
forall e. Exception e => e -> String
Exception.displayException InvalidAsymmetricSignature
invalidAsymmetricSignature
      InvalidSymmetricSignature InvalidSymmetricSignature
invalidSymmetricSignature ->
        InvalidSymmetricSignature -> String
forall e. Exception e => e -> String
Exception.displayException InvalidSymmetricSignature
invalidSymmetricSignature