{-# OPTIONS_GHC -Wno-duplicate-exports #-} {-# LANGUAGE PackageImports #-} module Data.OpenPGP.Util ( module P , verify , setVerifyFlag ) where import Data.Bool import Data.IORef import Debug.Trace import GHC.Stack import System.IO.Unsafe import qualified "openpgp-util" Data.OpenPGP.Util as P import "openpgp-util" Data.OpenPGP.Util hiding (verify) import Data.OpenPGP traceVerifyFlag :: IORef Bool traceVerifyFlag = unsafePerformIO $ newIORef False {-# NOINLINE traceVerifyFlag #-} getVerifyFlag :: Bool getVerifyFlag = unsafePerformIO $ readIORef traceVerifyFlag {-# NOINLINE getVerifyFlag #-} setVerifyFlag :: Bool -> IO () setVerifyFlag x = writeIORef traceVerifyFlag x shortCallStack :: [([Char], SrcLoc)] -> String shortCallStack [] = "" shortCallStack ((_,loc):_) = (srcLocFile loc) ++ ":" ++ show (srcLocStartLine loc) verify :: HasCallStack => Message -> SignatureOver -> SignatureOver verify msg sig = bool id (trace $ "verify " ++ shortCallStack (getCallStack callStack)) getVerifyFlag $ P.verify msg sig