@@ -26,12 +26,18 @@ module DMQ.Protocol.SigSubmission.Test (tests) where
2626import Codec.CBOR.Encoding qualified as CBOR
2727import Codec.CBOR.Read qualified as CBOR
2828import Codec.CBOR.Write qualified as CBOR
29+ import Control.Concurrent.Class.MonadSTM.Strict
2930import Control.Monad (zipWithM , (>=>) )
3031import Control.Monad.ST (runST )
32+ import Control.Monad.Trans.Except
3133import Data.Bifunctor (second )
34+ import Data.Binary qualified as Binary
3235import Data.ByteString (ByteString )
36+ import Data.ByteString qualified as BS
3337import Data.ByteString.Lazy qualified as BL
3438import Data.List.NonEmpty qualified as NonEmpty
39+ import Data.Map qualified as Map
40+ import Data.Time.Clock.POSIX (posixSecondsToUTCTime )
3541import Data.Typeable
3642import Data.Word (Word32 )
3743import GHC.TypeNats (KnownNat )
@@ -46,16 +52,20 @@ import Cardano.Crypto.DSIGN.Class qualified as DSIGN
4652import Cardano.Crypto.KES.Class (KESAlgorithm (.. ), VerKeyKES , encodeSigKES )
4753import Cardano.Crypto.KES.Class qualified as KES
4854import Cardano.Crypto.PinnedSizedBytes (PinnedSizedBytes , psbToByteString )
55+ import Cardano.Crypto.Hash (castHash , hashWith )
4956import Cardano.Crypto.Seed (mkSeedFromBytes )
57+ import Cardano.Ledger.Hashes (KeyHash (.. ))
5058import Cardano.KESAgent.KES.Crypto (Crypto (.. ))
5159import Cardano.KESAgent.KES.Evolution qualified as KES
5260import Cardano.KESAgent.KES.OCert (OCert (.. ))
5361import Cardano.KESAgent.KES.OCert qualified as KES
5462import Cardano.KESAgent.Protocols.StandardCrypto (MockCrypto , StandardCrypto )
5563import Test.Crypto.Instances
5664
65+ import DMQ.Diffusion.NodeKernel (PoolValidationCtx (.. ))
5766import DMQ.Protocol.SigSubmission.Codec
5867import DMQ.Protocol.SigSubmission.Type
68+ import DMQ.Protocol.SigSubmission.Validate
5969
6070import Ouroboros.Network.Protocol.TxSubmission2.Test (labelMsg )
6171
@@ -830,15 +840,20 @@ prop_validateSig
830840 )
831841 => WithConstrKES size kesCrypt (Sig crypto )
832842 -> Property
833- prop_validateSig constr = ioProperty $ do
843+ prop_validateSig constr = ioProperty do
834844 sig <- runWithConstr constr
835- return $ case validateSig KES. defEvolutionConfig sig of
845+ countersVar <- newTVarIO Map. empty
846+ let validationCtx =
847+ DMQPoolValidationCtx (posixSecondsToUTCTime 0 ) Nothing Map. empty countersVar
848+ dummyHash = KeyHash . castHash . hashWith (BS. toStrict . Binary. encode . const (0 :: Int ))
849+ result <- runExceptT $ validateSig KES. defEvolutionConfig dummyHash [sig] validationCtx
850+ return case result of
836851 Left err -> counterexample (" KES seed: " ++ show (ctx constr))
837852 . counterexample (" KES vk key: " ++ show (ocertVkHot . getSigOpCertificate . sigOpCertificate $ sig))
838853 . counterexample (show sig)
839854 . counterexample (show err)
840855 $ False
841- Right () -> property True
856+ Right {} -> property True
842857
843858prop_validateSig_mockcrypto
844859 :: Blind (WithConstrKES (SeedSizeKES (KES MockCrypto )) (KES MockCrypto ) (Sig MockCrypto ))
0 commit comments