age-0.0.1.0: test/Test/Crypto/Age/Identity/Gen.hs
module Test.Crypto.Age.Identity.Gen
( genScryptIdentity
, genX25519Identity
, genIdentity
) where
import Crypto.Age.Identity
( Identity (..)
, ScryptIdentity (..)
, X25519Identity (..)
, bytesToX25519Identity
)
import Hedgehog ( Gen )
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import Prelude
import Test.Crypto.Age.Scrypt.Gen ( genPassphrase, genWorkFactor )
import Test.Gen ( genByteArray )
genScryptIdentity :: Gen ScryptIdentity
genScryptIdentity =
ScryptIdentity
<$> genPassphrase
<*> genWorkFactor
genX25519Identity :: Gen X25519Identity
genX25519Identity = do
bs <- genByteArray (Range.singleton 32)
case bytesToX25519Identity bs of
Nothing -> fail "failed to generate a X25519Identity"
Just x -> pure x
genIdentity :: Gen Identity
genIdentity =
Gen.choice
[ IdentityScrypt <$> genScryptIdentity
, IdentityX25519 <$> genX25519Identity
]