{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-} module Test.Cardano.Protocol.Crypto.VRF ( VRFKeyPair (..), ) where import qualified Cardano.Crypto.VRF.Class as VRF import Cardano.Protocol.Crypto import Test.Cardano.Ledger.Common data VRFKeyPair c = VRFKeyPair { forall c. VRFKeyPair c -> SignKeyVRF (VRF c) vrfSignKey :: !(VRF.SignKeyVRF (VRF c)) , forall c. VRFKeyPair c -> VerKeyVRF (VRF c) vrfVerKey :: !(VRF.VerKeyVRF (VRF c)) } deriving instance (Show (VRF.SignKeyVRF (VRF c)), Show (VRF.VerKeyVRF (VRF c))) => Show (VRFKeyPair c) instance (Crypto c, Arbitrary (VRF.SignKeyVRF (VRF c))) => Arbitrary (VRFKeyPair c) where arbitrary :: Gen (VRFKeyPair c) arbitrary = do SignKeyVRF (VRF c) signKey <- forall a. Arbitrary a => Gen a arbitrary forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ VRFKeyPair { vrfSignKey :: SignKeyVRF (VRF c) vrfSignKey = SignKeyVRF (VRF c) signKey , vrfVerKey :: VerKeyVRF (VRF c) vrfVerKey = forall v. VRFAlgorithm v => SignKeyVRF v -> VerKeyVRF v VRF.deriveVerKeyVRF SignKeyVRF (VRF c) signKey }