sha-validation-0.1.0.1: Validation SHA Implementations
CopyrightCopyright © 2022-2024 Lars Kuhtz <lakuhtz@gmail.com>
LicenseMIT
MaintainerLars Kuhtz <lakuhtz@gmail.com>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.Hash.Internal

Description

 
Synopsis

Validation Tests for SHA1, SHA2, and SHA3 Hash Algorithms

Response Files for Selected Long And Short Messages Test for Byte-Oriented Implementations

data MsgFile Source #

Constructors

MsgFile 

Instances

Instances details
Show MsgFile Source # 
Instance details

Defined in Test.Hash.Internal

Eq MsgFile Source # 
Instance details

Defined in Test.Hash.Internal

Methods

(==) :: MsgFile -> MsgFile -> Bool #

(/=) :: MsgFile -> MsgFile -> Bool #

Ord MsgFile Source # 
Instance details

Defined in Test.Hash.Internal

Lift MsgFile Source # 
Instance details

Defined in Test.Hash.Internal

Methods

lift :: Quote m => MsgFile -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => MsgFile -> Code m MsgFile #

data MsgVector Source #

Constructors

MsgVector 

Instances

Instances details
Show MsgVector Source # 
Instance details

Defined in Test.Hash.Internal

Eq MsgVector Source # 
Instance details

Defined in Test.Hash.Internal

Ord MsgVector Source # 
Instance details

Defined in Test.Hash.Internal

Lift MsgVector Source # 
Instance details

Defined in Test.Hash.Internal

Methods

lift :: Quote m => MsgVector -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => MsgVector -> Code m MsgVector #

Response Files for Pseudorandomly Generated Messages (Monte Carlo) Tests

data MonteFile Source #

Instances

Instances details
Show MonteFile Source # 
Instance details

Defined in Test.Hash.Internal

Eq MonteFile Source # 
Instance details

Defined in Test.Hash.Internal

Ord MonteFile Source # 
Instance details

Defined in Test.Hash.Internal

Lift MonteFile Source # 
Instance details

Defined in Test.Hash.Internal

Methods

lift :: Quote m => MonteFile -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => MonteFile -> Code m MonteFile #

Validation Tests for SHA3-XOFs (Shake) Hash Algorithms

Response Files for Selected Long And Short Messages Test for Byte-Oriented Implementations

Response Files for Pseudorandomly Generated Messages (Monte Carlo) Tests

Response Files for Variable Output Tests for Byte-Oriented Implementations

Test Tools

msgTest :: (ByteString -> ByteString) -> MsgFile -> Bool Source #

Check that all test vectors in a File are satisfied by a given hash implementation.

msgAssert Source #

Arguments

:: Monad m 
=> (String -> ByteString -> ByteString -> m ())

Function to assertion Equality. The first argument is a test label, the second argument is the actual value, and the thrid value is the expected value.

-> (ByteString -> ByteString)

Hash function

-> MsgFile 
-> m () 

For a given hash implementation, assert the correct result for each test vector in a MsgFile.

The function to assert equality is usually provided by some testing framework.

monteAssertInternal Source #

Arguments

:: Monad m 
=> Natural

seed multiplyer

-> (String -> ByteString -> ByteString -> m ())

Function to assertion Equality. The first argument is a test label, the second argument is the actual value, and the thrid value is the expected value.

-> (ByteString -> ByteString)

Hash function

-> MonteFile 
-> m () 

Internal: Embedding Response Files in Haskell Code

embedIO :: Lift a => IO a -> Code Q a Source #

Orphan instances

Lift a => Lift (Vector a :: Type) Source # 
Instance details

Methods

lift :: Quote m => Vector a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Vector a -> Code m (Vector a) #