module Database.Perdure.WValidator (
W32Validator,
W64Validator,
module Database.Perdure.Validator
) where
import Prelude ()
import Cgm.Prelude
import Data.Word
import Database.Perdure.Digest
import Database.Perdure.Validator
import Cgm.Data.Maybe
import Cgm.Data.Structured
data W32Validator = W32Validator !MD5Digest deriving (Eq, Show)
data W64Validator = W64Validator !(Skein512Digest Word128) deriving (Eq, Show)
instance Validator W32Validator where
type ValidatedElem W32Validator = Word32
mkValidationInput b = (W32Validator $ digest b, pure b)
validate (W32Validator h) b = b `justIf` (digest b == h)
instance Validator W64Validator where
type ValidatedElem W64Validator = Word64
mkValidationInput b = (W64Validator $ digest b, pure b)
validate (W64Validator h) b = b `justIf` (digest b == h)
deriveStructured ''W32Validator
deriveStructured ''W64Validator