module Crypto.Secp256k1.Gen where import Crypto.Secp256k1 import Hedgehog (MonadGen) import Hedgehog.Gen (bytes, discard, prune) import Hedgehog.Range (singleton) secKeyGen :: (MonadGen m) => m SecKey secKeyGen :: forall (m :: * -> *). MonadGen m => m SecKey secKeyGen = do ByteString bs <- m ByteString -> m ByteString forall (m :: * -> *) a. MonadGen m => m a -> m a prune (m ByteString -> m ByteString) -> (Range Int -> m ByteString) -> Range Int -> m ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . Range Int -> m ByteString forall (m :: * -> *). MonadGen m => Range Int -> m ByteString bytes (Range Int -> m ByteString) -> Range Int -> m ByteString forall a b. (a -> b) -> a -> b $ Int -> Range Int forall a. a -> Range a singleton Int 32 m SecKey -> (SecKey -> m SecKey) -> Maybe SecKey -> m SecKey forall b a. b -> (a -> b) -> Maybe a -> b maybe m SecKey forall (m :: * -> *) a. MonadGen m => m a discard SecKey -> m SecKey forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure (Maybe SecKey -> m SecKey) -> Maybe SecKey -> m SecKey forall a b. (a -> b) -> a -> b $ ByteString -> Maybe SecKey importSecKey ByteString bs pubKeyXYGen :: (MonadGen m) => m PubKeyXY pubKeyXYGen :: forall (m :: * -> *). MonadGen m => m PubKeyXY pubKeyXYGen = SecKey -> PubKeyXY derivePubKey (SecKey -> PubKeyXY) -> m SecKey -> m PubKeyXY forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> m SecKey forall (m :: * -> *). MonadGen m => m SecKey secKeyGen pubKeyXOGen :: (MonadGen m) => m PubKeyXO pubKeyXOGen :: forall (m :: * -> *). MonadGen m => m PubKeyXO pubKeyXOGen = (PubKeyXO, Bool) -> PubKeyXO forall a b. (a, b) -> a fst ((PubKeyXO, Bool) -> PubKeyXO) -> (PubKeyXY -> (PubKeyXO, Bool)) -> PubKeyXY -> PubKeyXO forall b c a. (b -> c) -> (a -> b) -> a -> c . PubKeyXY -> (PubKeyXO, Bool) xyToXO (PubKeyXY -> PubKeyXO) -> m PubKeyXY -> m PubKeyXO forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> m PubKeyXY forall (m :: * -> *). MonadGen m => m PubKeyXY pubKeyXYGen keyPairGen :: (MonadGen m) => m KeyPair keyPairGen :: forall (m :: * -> *). MonadGen m => m KeyPair keyPairGen = SecKey -> KeyPair keyPairCreate (SecKey -> KeyPair) -> m SecKey -> m KeyPair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> m SecKey forall (m :: * -> *). MonadGen m => m SecKey secKeyGen tweakGen :: (MonadGen m) => m Tweak tweakGen :: forall (m :: * -> *). MonadGen m => m Tweak tweakGen = do ByteString bs <- m ByteString -> m ByteString forall (m :: * -> *) a. MonadGen m => m a -> m a prune (m ByteString -> m ByteString) -> m ByteString -> m ByteString forall a b. (a -> b) -> a -> b $ Range Int -> m ByteString forall (m :: * -> *). MonadGen m => Range Int -> m ByteString bytes (Int -> Range Int forall a. a -> Range a singleton Int 32) m Tweak -> (Tweak -> m Tweak) -> Maybe Tweak -> m Tweak forall b a. b -> (a -> b) -> Maybe a -> b maybe m Tweak forall (m :: * -> *) a. MonadGen m => m a discard Tweak -> m Tweak forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure (ByteString -> Maybe Tweak importTweak ByteString bs)