{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
module Cardano.CLI.Type.Key
( VerificationKeyOrFile (..)
, readVerificationKeyOrFile
, readVerificationKeyOrTextEnvFile
, VerificationKeyTextOrFile (..)
, VerificationKeyTextOrFileError (..)
, readVerificationKeyTextOrFileAnyOf
, renderVerificationKeyTextOrFileError
, VerificationKeyOrHashOrFile (..)
, readVerificationKeyOrHashOrFile
, readVerificationKeyOrHashOrTextEnvFile
, VerificationKeyOrHashOrFileOrScript (..)
, VerificationKeyOrHashOrFileOrScriptHash (..)
, VerificationKeySource (..)
, readVerificationKeyOrHashOrFileOrScriptHash
, PaymentVerifier (..)
, StakeIdentifier (..)
, StakeVerifier (..)
, generateKeyPair
, StakePoolKeyHashSource (..)
, StakePoolVerificationKeySource (..)
, StakePoolRegistrationParserRequirements (..)
, AnyDelegationTarget (..)
, StakeTarget (..)
, ColdVerificationKeyOrFile (..)
, DRepHashSource (..)
, readDRepCredential
, SPOHashSource (..)
, readSPOCredential
, SomeSigningKey (..)
, withSomeSigningKey
, readSigningKeyFile
)
where
import Cardano.Api
import Cardano.Api.Byron (ByronKey)
import Cardano.Api.Ledger qualified as L
import Cardano.CLI.Compatible.Exception
import Cardano.CLI.Orphan ()
import Cardano.CLI.Type.Common
import Data.Bifunctor (Bifunctor (..))
import Data.ByteString qualified as BS
import Data.Text (Text)
import Data.Text.Encoding qualified as Text
import GHC.Exts (IsList (..))
data VerificationKeyOrFile keyrole
=
VerificationKeyValue !(VerificationKey keyrole)
|
VerificationKeyFilePath !(VerificationKeyFile In)
deriving instance
Show (VerificationKey keyrole)
=> Show (VerificationKeyOrFile keyrole)
deriving instance
Eq (VerificationKey keyrole)
=> Eq (VerificationKeyOrFile keyrole)
readVerificationKeyOrFile
:: HasTextEnvelope (VerificationKey keyrole)
=> SerialiseAsBech32 (VerificationKey keyrole)
=> VerificationKeyOrFile keyrole
-> CIO e (VerificationKey keyrole)
readVerificationKeyOrFile :: forall keyrole e.
(HasTextEnvelope (VerificationKey keyrole),
SerialiseAsBech32 (VerificationKey keyrole)) =>
VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
readVerificationKeyOrFile VerificationKeyOrFile keyrole
verKeyOrFile =
case VerificationKeyOrFile keyrole
verKeyOrFile of
VerificationKeyValue VerificationKey keyrole
vk -> VerificationKey keyrole -> RIO e (VerificationKey keyrole)
forall a. a -> RIO e a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VerificationKey keyrole
vk
VerificationKeyFilePath (File String
fp) ->
IO (Either (FileError InputDecodeError) (VerificationKey keyrole))
-> RIO e (VerificationKey keyrole)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli (IO (Either (FileError InputDecodeError) (VerificationKey keyrole))
-> RIO e (VerificationKey keyrole))
-> IO
(Either (FileError InputDecodeError) (VerificationKey keyrole))
-> RIO e (VerificationKey keyrole)
forall a b. (a -> b) -> a -> b
$
NonEmpty (InputFormat (VerificationKey keyrole))
-> String
-> IO
(Either (FileError InputDecodeError) (VerificationKey keyrole))
forall a.
NonEmpty (InputFormat a)
-> String -> IO (Either (FileError InputDecodeError) a)
readFormattedFile
([Item (NonEmpty (InputFormat (VerificationKey keyrole)))]
-> NonEmpty (InputFormat (VerificationKey keyrole))
forall l. IsList l => [Item l] -> l
fromList [Item (NonEmpty (InputFormat (VerificationKey keyrole)))
InputFormat (VerificationKey keyrole)
forall a. SerialiseAsBech32 a => InputFormat a
InputFormatBech32, Item (NonEmpty (InputFormat (VerificationKey keyrole)))
InputFormat (VerificationKey keyrole)
forall a. SerialiseAsRawBytes a => InputFormat a
InputFormatHex, Item (NonEmpty (InputFormat (VerificationKey keyrole)))
InputFormat (VerificationKey keyrole)
forall a. HasTextEnvelope a => InputFormat a
InputFormatTextEnvelope])
String
fp
readVerificationKeyOrTextEnvFile
:: HasTextEnvelope (VerificationKey keyrole)
=> VerificationKeyOrFile keyrole
-> CIO e (VerificationKey keyrole)
readVerificationKeyOrTextEnvFile :: forall keyrole e.
HasTextEnvelope (VerificationKey keyrole) =>
VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
readVerificationKeyOrTextEnvFile VerificationKeyOrFile keyrole
verKeyOrFile =
case VerificationKeyOrFile keyrole
verKeyOrFile of
VerificationKeyValue VerificationKey keyrole
vk -> VerificationKey keyrole -> RIO e (VerificationKey keyrole)
forall a. a -> RIO e a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VerificationKey keyrole
vk
VerificationKeyFilePath VerificationKeyFile 'In
fp -> IO (Either (FileError InputDecodeError) (VerificationKey keyrole))
-> RIO e (VerificationKey keyrole)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli (IO (Either (FileError InputDecodeError) (VerificationKey keyrole))
-> RIO e (VerificationKey keyrole))
-> IO
(Either (FileError InputDecodeError) (VerificationKey keyrole))
-> RIO e (VerificationKey keyrole)
forall a b. (a -> b) -> a -> b
$ VerificationKeyFile 'In
-> IO
(Either (FileError InputDecodeError) (VerificationKey keyrole))
forall a content.
HasTextEnvelope a =>
File content 'In -> IO (Either (FileError InputDecodeError) a)
readFormattedFileTextEnvelope VerificationKeyFile 'In
fp
data PaymentVerifier
= PaymentVerifierKey VerificationKeyTextOrFile
| PaymentVerifierScriptFile ScriptFile
deriving (PaymentVerifier -> PaymentVerifier -> Bool
(PaymentVerifier -> PaymentVerifier -> Bool)
-> (PaymentVerifier -> PaymentVerifier -> Bool)
-> Eq PaymentVerifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PaymentVerifier -> PaymentVerifier -> Bool
== :: PaymentVerifier -> PaymentVerifier -> Bool
$c/= :: PaymentVerifier -> PaymentVerifier -> Bool
/= :: PaymentVerifier -> PaymentVerifier -> Bool
Eq, Int -> PaymentVerifier -> ShowS
[PaymentVerifier] -> ShowS
PaymentVerifier -> String
(Int -> PaymentVerifier -> ShowS)
-> (PaymentVerifier -> String)
-> ([PaymentVerifier] -> ShowS)
-> Show PaymentVerifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PaymentVerifier -> ShowS
showsPrec :: Int -> PaymentVerifier -> ShowS
$cshow :: PaymentVerifier -> String
show :: PaymentVerifier -> String
$cshowList :: [PaymentVerifier] -> ShowS
showList :: [PaymentVerifier] -> ShowS
Show)
data StakeVerifier
= StakeVerifierKey (VerificationKeyOrHashOrFile StakeKey)
| StakeVerifierScriptFile ScriptFile
deriving (StakeVerifier -> StakeVerifier -> Bool
(StakeVerifier -> StakeVerifier -> Bool)
-> (StakeVerifier -> StakeVerifier -> Bool) -> Eq StakeVerifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StakeVerifier -> StakeVerifier -> Bool
== :: StakeVerifier -> StakeVerifier -> Bool
$c/= :: StakeVerifier -> StakeVerifier -> Bool
/= :: StakeVerifier -> StakeVerifier -> Bool
Eq, Int -> StakeVerifier -> ShowS
[StakeVerifier] -> ShowS
StakeVerifier -> String
(Int -> StakeVerifier -> ShowS)
-> (StakeVerifier -> String)
-> ([StakeVerifier] -> ShowS)
-> Show StakeVerifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StakeVerifier -> ShowS
showsPrec :: Int -> StakeVerifier -> ShowS
$cshow :: StakeVerifier -> String
show :: StakeVerifier -> String
$cshowList :: [StakeVerifier] -> ShowS
showList :: [StakeVerifier] -> ShowS
Show)
data StakeIdentifier
= StakeIdentifierVerifier StakeVerifier
| StakeIdentifierAddress StakeAddress
deriving (StakeIdentifier -> StakeIdentifier -> Bool
(StakeIdentifier -> StakeIdentifier -> Bool)
-> (StakeIdentifier -> StakeIdentifier -> Bool)
-> Eq StakeIdentifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StakeIdentifier -> StakeIdentifier -> Bool
== :: StakeIdentifier -> StakeIdentifier -> Bool
$c/= :: StakeIdentifier -> StakeIdentifier -> Bool
/= :: StakeIdentifier -> StakeIdentifier -> Bool
Eq, Int -> StakeIdentifier -> ShowS
[StakeIdentifier] -> ShowS
StakeIdentifier -> String
(Int -> StakeIdentifier -> ShowS)
-> (StakeIdentifier -> String)
-> ([StakeIdentifier] -> ShowS)
-> Show StakeIdentifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StakeIdentifier -> ShowS
showsPrec :: Int -> StakeIdentifier -> ShowS
$cshow :: StakeIdentifier -> String
show :: StakeIdentifier -> String
$cshowList :: [StakeIdentifier] -> ShowS
showList :: [StakeIdentifier] -> ShowS
Show)
data StakePoolRegistrationParserRequirements
= StakePoolRegistrationParserRequirements
{ StakePoolRegistrationParserRequirements
-> StakePoolVerificationKeySource
sprStakePoolKey :: StakePoolVerificationKeySource
, StakePoolRegistrationParserRequirements
-> VerificationKeyOrFile VrfKey
sprVrfKey :: VerificationKeyOrFile VrfKey
, StakePoolRegistrationParserRequirements -> Lovelace
sprPoolPledge :: Lovelace
, StakePoolRegistrationParserRequirements -> Lovelace
sprPoolCost :: Lovelace
, StakePoolRegistrationParserRequirements -> Rational
sprPoolMargin :: Rational
, StakePoolRegistrationParserRequirements
-> VerificationKeyOrFile StakeKey
sprRewardAccountKey :: VerificationKeyOrFile StakeKey
, StakePoolRegistrationParserRequirements
-> [VerificationKeyOrFile StakeKey]
spoPoolOwnerKeys :: [VerificationKeyOrFile StakeKey]
, StakePoolRegistrationParserRequirements -> [StakePoolRelay]
sprRelays :: [StakePoolRelay]
, StakePoolRegistrationParserRequirements
-> Maybe
(PotentiallyCheckedAnchor
StakePoolMetadataReference StakePoolMetadataReference)
sprMetadata
:: Maybe (PotentiallyCheckedAnchor StakePoolMetadataReference StakePoolMetadataReference)
, StakePoolRegistrationParserRequirements -> NetworkId
sprNetworkId :: NetworkId
}
data AnyDelegationTarget where
ShelleyToBabbageDelegTarget
:: ShelleyToBabbageEra era
-> VerificationKeyOrHashOrFile StakePoolKey
-> AnyDelegationTarget
ConwayOnwardDelegTarget
:: ConwayEraOnwards era
-> StakeTarget era
-> AnyDelegationTarget
deriving instance Show AnyDelegationTarget
data StakeTarget era where
TargetStakePool
:: ConwayEraOnwards era
-> VerificationKeyOrHashOrFile StakePoolKey
-> StakeTarget era
TargetVotingDrep
:: ConwayEraOnwards era
-> VerificationKeyOrHashOrFile DRepKey
-> StakeTarget era
TargetVotingDrepAndStakePool
:: ConwayEraOnwards era
-> VerificationKeyOrHashOrFile DRepKey
-> VerificationKeyOrHashOrFile StakePoolKey
-> StakeTarget era
TargetAlwaysAbstain
:: ConwayEraOnwards era
-> StakeTarget era
TargetAlwaysNoConfidence
:: ConwayEraOnwards era
-> StakeTarget era
TargetVotingDRepScriptHash
:: ConwayEraOnwards era
-> ScriptHash
-> StakeTarget era
deriving instance Show (StakeTarget era)
data VerificationKeyTextOrFile
= VktofVerificationKeyText !Text
| VktofVerificationKeyFile !(VerificationKeyFile In)
deriving (VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool
(VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool)
-> (VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool)
-> Eq VerificationKeyTextOrFile
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool
== :: VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool
$c/= :: VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool
/= :: VerificationKeyTextOrFile -> VerificationKeyTextOrFile -> Bool
Eq, Int -> VerificationKeyTextOrFile -> ShowS
[VerificationKeyTextOrFile] -> ShowS
VerificationKeyTextOrFile -> String
(Int -> VerificationKeyTextOrFile -> ShowS)
-> (VerificationKeyTextOrFile -> String)
-> ([VerificationKeyTextOrFile] -> ShowS)
-> Show VerificationKeyTextOrFile
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VerificationKeyTextOrFile -> ShowS
showsPrec :: Int -> VerificationKeyTextOrFile -> ShowS
$cshow :: VerificationKeyTextOrFile -> String
show :: VerificationKeyTextOrFile -> String
$cshowList :: [VerificationKeyTextOrFile] -> ShowS
showList :: [VerificationKeyTextOrFile] -> ShowS
Show)
newtype VerificationKeyTextOrFileError
= VerificationKeyTextError InputDecodeError
deriving Int -> VerificationKeyTextOrFileError -> ShowS
[VerificationKeyTextOrFileError] -> ShowS
VerificationKeyTextOrFileError -> String
(Int -> VerificationKeyTextOrFileError -> ShowS)
-> (VerificationKeyTextOrFileError -> String)
-> ([VerificationKeyTextOrFileError] -> ShowS)
-> Show VerificationKeyTextOrFileError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VerificationKeyTextOrFileError -> ShowS
showsPrec :: Int -> VerificationKeyTextOrFileError -> ShowS
$cshow :: VerificationKeyTextOrFileError -> String
show :: VerificationKeyTextOrFileError -> String
$cshowList :: [VerificationKeyTextOrFileError] -> ShowS
showList :: [VerificationKeyTextOrFileError] -> ShowS
Show
instance Error VerificationKeyTextOrFileError where
prettyError :: forall ann. VerificationKeyTextOrFileError -> Doc ann
prettyError = VerificationKeyTextOrFileError -> Doc ann
forall ann. VerificationKeyTextOrFileError -> Doc ann
renderVerificationKeyTextOrFileError
renderVerificationKeyTextOrFileError :: VerificationKeyTextOrFileError -> Doc ann
renderVerificationKeyTextOrFileError :: forall ann. VerificationKeyTextOrFileError -> Doc ann
renderVerificationKeyTextOrFileError VerificationKeyTextOrFileError
vkTextOrFileErr =
case VerificationKeyTextOrFileError
vkTextOrFileErr of
VerificationKeyTextError InputDecodeError
err -> InputDecodeError -> Doc ann
forall ann. InputDecodeError -> Doc ann
renderInputDecodeError InputDecodeError
err
readVerificationKeyTextOrFileAnyOf
:: VerificationKeyTextOrFile
-> IO (Either VerificationKeyTextOrFileError SomeAddressVerificationKey)
readVerificationKeyTextOrFileAnyOf :: VerificationKeyTextOrFile
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey)
readVerificationKeyTextOrFileAnyOf VerificationKeyTextOrFile
verKeyTextOrFile =
case VerificationKeyTextOrFile
verKeyTextOrFile of
VktofVerificationKeyText Text
vkText ->
Either VerificationKeyTextOrFileError SomeAddressVerificationKey
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either VerificationKeyTextOrFileError SomeAddressVerificationKey
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey))
-> Either VerificationKeyTextOrFileError SomeAddressVerificationKey
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey)
forall a b. (a -> b) -> a -> b
$
(InputDecodeError -> VerificationKeyTextOrFileError)
-> Either InputDecodeError SomeAddressVerificationKey
-> Either VerificationKeyTextOrFileError SomeAddressVerificationKey
forall a b c. (a -> b) -> Either a c -> Either b c
forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first InputDecodeError -> VerificationKeyTextOrFileError
VerificationKeyTextError (Either InputDecodeError SomeAddressVerificationKey
-> Either
VerificationKeyTextOrFileError SomeAddressVerificationKey)
-> Either InputDecodeError SomeAddressVerificationKey
-> Either VerificationKeyTextOrFileError SomeAddressVerificationKey
forall a b. (a -> b) -> a -> b
$
ByteString -> Either InputDecodeError SomeAddressVerificationKey
deserialiseAnyVerificationKey (Text -> ByteString
Text.encodeUtf8 Text
vkText)
VktofVerificationKeyFile (File String
fp) -> do
ByteString
vkBs <- IO ByteString -> IO ByteString
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ByteString -> IO ByteString) -> IO ByteString -> IO ByteString
forall a b. (a -> b) -> a -> b
$ String -> IO ByteString
BS.readFile String
fp
Either VerificationKeyTextOrFileError SomeAddressVerificationKey
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either VerificationKeyTextOrFileError SomeAddressVerificationKey
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey))
-> Either VerificationKeyTextOrFileError SomeAddressVerificationKey
-> IO
(Either VerificationKeyTextOrFileError SomeAddressVerificationKey)
forall a b. (a -> b) -> a -> b
$
(InputDecodeError -> VerificationKeyTextOrFileError)
-> Either InputDecodeError SomeAddressVerificationKey
-> Either VerificationKeyTextOrFileError SomeAddressVerificationKey
forall a b c. (a -> b) -> Either a c -> Either b c
forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first InputDecodeError -> VerificationKeyTextOrFileError
VerificationKeyTextError (Either InputDecodeError SomeAddressVerificationKey
-> Either
VerificationKeyTextOrFileError SomeAddressVerificationKey)
-> Either InputDecodeError SomeAddressVerificationKey
-> Either VerificationKeyTextOrFileError SomeAddressVerificationKey
forall a b. (a -> b) -> a -> b
$
ByteString -> Either InputDecodeError SomeAddressVerificationKey
deserialiseAnyVerificationKey ByteString
vkBs
data VerificationKeyOrHashOrFile keyrole
=
VerificationKeyOrFile !(VerificationKeyOrFile keyrole)
|
VerificationKeyHash !(Hash keyrole)
deriving instance
(Show (VerificationKeyOrFile keyrole), Show (Hash keyrole))
=> Show (VerificationKeyOrHashOrFile keyrole)
deriving instance
(Eq (VerificationKeyOrFile keyrole), Eq (Hash keyrole))
=> Eq (VerificationKeyOrHashOrFile keyrole)
readVerificationKeyOrHashOrFile
:: Key keyrole
=> SerialiseAsBech32 (VerificationKey keyrole)
=> VerificationKeyOrHashOrFile keyrole
-> CIO e (Hash keyrole)
readVerificationKeyOrHashOrFile :: forall keyrole e.
(Key keyrole, SerialiseAsBech32 (VerificationKey keyrole)) =>
VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole)
readVerificationKeyOrHashOrFile =
\case
VerificationKeyOrFile VerificationKeyOrFile keyrole
vkOrFile ->
VerificationKey keyrole -> Hash keyrole
forall keyrole.
Key keyrole =>
VerificationKey keyrole -> Hash keyrole
verificationKeyHash (VerificationKey keyrole -> Hash keyrole)
-> RIO e (VerificationKey keyrole) -> RIO e (Hash keyrole)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
forall keyrole e.
(HasTextEnvelope (VerificationKey keyrole),
SerialiseAsBech32 (VerificationKey keyrole)) =>
VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
readVerificationKeyOrFile VerificationKeyOrFile keyrole
vkOrFile
VerificationKeyHash Hash keyrole
vkHash -> Hash keyrole -> RIO e (Hash keyrole)
forall a. a -> RIO e a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Hash keyrole
vkHash
readVerificationKeyOrHashOrTextEnvFile
:: Key keyrole
=> VerificationKeyOrHashOrFile keyrole
-> CIO e (Hash keyrole)
readVerificationKeyOrHashOrTextEnvFile :: forall keyrole e.
Key keyrole =>
VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole)
readVerificationKeyOrHashOrTextEnvFile =
\case
VerificationKeyOrFile VerificationKeyOrFile keyrole
vkOrFile ->
VerificationKey keyrole -> Hash keyrole
forall keyrole.
Key keyrole =>
VerificationKey keyrole -> Hash keyrole
verificationKeyHash (VerificationKey keyrole -> Hash keyrole)
-> RIO e (VerificationKey keyrole) -> RIO e (Hash keyrole)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
forall keyrole e.
HasTextEnvelope (VerificationKey keyrole) =>
VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
readVerificationKeyOrTextEnvFile VerificationKeyOrFile keyrole
vkOrFile
VerificationKeyHash Hash keyrole
vkHash -> Hash keyrole -> RIO e (Hash keyrole)
forall a. a -> RIO e a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Hash keyrole
vkHash
generateKeyPair
:: forall keyrole m
. MonadIO m
=> Key keyrole
=> HasTypeProxy keyrole
=> AsType keyrole
-> m (VerificationKey keyrole, SigningKey keyrole)
generateKeyPair :: forall keyrole (m :: * -> *).
(MonadIO m, Key keyrole, HasTypeProxy keyrole) =>
AsType keyrole -> m (VerificationKey keyrole, SigningKey keyrole)
generateKeyPair AsType keyrole
asType' = do
SigningKey keyrole
skey <- AsType keyrole -> m (SigningKey keyrole)
forall (m :: * -> *) keyrole.
(MonadIO m, Key keyrole) =>
AsType keyrole -> m (SigningKey keyrole)
generateSigningKey AsType keyrole
asType'
(VerificationKey keyrole, SigningKey keyrole)
-> m (VerificationKey keyrole, SigningKey keyrole)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return (SigningKey keyrole -> VerificationKey keyrole
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> VerificationKey keyrole
getVerificationKey SigningKey keyrole
skey, SigningKey keyrole
skey)
data ColdVerificationKeyOrFile
= ColdStakePoolVerificationKey !AnyStakePoolVerificationKey
| ColdGenesisDelegateVerificationKey !(VerificationKey GenesisDelegateKey)
| ColdVerificationKeyFile !(VerificationKeyFile In)
deriving Int -> ColdVerificationKeyOrFile -> ShowS
[ColdVerificationKeyOrFile] -> ShowS
ColdVerificationKeyOrFile -> String
(Int -> ColdVerificationKeyOrFile -> ShowS)
-> (ColdVerificationKeyOrFile -> String)
-> ([ColdVerificationKeyOrFile] -> ShowS)
-> Show ColdVerificationKeyOrFile
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ColdVerificationKeyOrFile -> ShowS
showsPrec :: Int -> ColdVerificationKeyOrFile -> ShowS
$cshow :: ColdVerificationKeyOrFile -> String
show :: ColdVerificationKeyOrFile -> String
$cshowList :: [ColdVerificationKeyOrFile] -> ShowS
showList :: [ColdVerificationKeyOrFile] -> ShowS
Show
data DRepHashSource
= DRepHashSourceScript
ScriptHash
| DRepHashSourceVerificationKey
(VerificationKeyOrHashOrFile DRepKey)
deriving (DRepHashSource -> DRepHashSource -> Bool
(DRepHashSource -> DRepHashSource -> Bool)
-> (DRepHashSource -> DRepHashSource -> Bool) -> Eq DRepHashSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepHashSource -> DRepHashSource -> Bool
== :: DRepHashSource -> DRepHashSource -> Bool
$c/= :: DRepHashSource -> DRepHashSource -> Bool
/= :: DRepHashSource -> DRepHashSource -> Bool
Eq, Int -> DRepHashSource -> ShowS
[DRepHashSource] -> ShowS
DRepHashSource -> String
(Int -> DRepHashSource -> ShowS)
-> (DRepHashSource -> String)
-> ([DRepHashSource] -> ShowS)
-> Show DRepHashSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepHashSource -> ShowS
showsPrec :: Int -> DRepHashSource -> ShowS
$cshow :: DRepHashSource -> String
show :: DRepHashSource -> String
$cshowList :: [DRepHashSource] -> ShowS
showList :: [DRepHashSource] -> ShowS
Show)
readDRepCredential
:: DRepHashSource
-> CIO e (L.Credential L.DRepRole)
readDRepCredential :: forall e. DRepHashSource -> CIO e (Credential 'DRepRole)
readDRepCredential = \case
DRepHashSourceScript (ScriptHash ScriptHash
scriptHash) ->
Credential 'DRepRole -> RIO e (Credential 'DRepRole)
forall a. a -> RIO e a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ScriptHash -> Credential 'DRepRole
forall (kr :: KeyRole). ScriptHash -> Credential kr
L.ScriptHashObj ScriptHash
scriptHash)
DRepHashSourceVerificationKey VerificationKeyOrHashOrFile DRepKey
drepVKeyOrHashOrFile ->
KeyHash 'DRepRole -> Credential 'DRepRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
L.KeyHashObj (KeyHash 'DRepRole -> Credential 'DRepRole)
-> (Hash DRepKey -> KeyHash 'DRepRole)
-> Hash DRepKey
-> Credential 'DRepRole
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Hash DRepKey -> KeyHash 'DRepRole
unDRepKeyHash
(Hash DRepKey -> Credential 'DRepRole)
-> RIO e (Hash DRepKey) -> RIO e (Credential 'DRepRole)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> VerificationKeyOrHashOrFile DRepKey -> CIO e (Hash DRepKey)
forall keyrole e.
Key keyrole =>
VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole)
readVerificationKeyOrHashOrTextEnvFile VerificationKeyOrHashOrFile DRepKey
drepVKeyOrHashOrFile
newtype SPOHashSource
= SPOHashSourceVerificationKey
(VerificationKeyOrHashOrFile StakePoolKey)
deriving (SPOHashSource -> SPOHashSource -> Bool
(SPOHashSource -> SPOHashSource -> Bool)
-> (SPOHashSource -> SPOHashSource -> Bool) -> Eq SPOHashSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SPOHashSource -> SPOHashSource -> Bool
== :: SPOHashSource -> SPOHashSource -> Bool
$c/= :: SPOHashSource -> SPOHashSource -> Bool
/= :: SPOHashSource -> SPOHashSource -> Bool
Eq, Int -> SPOHashSource -> ShowS
[SPOHashSource] -> ShowS
SPOHashSource -> String
(Int -> SPOHashSource -> ShowS)
-> (SPOHashSource -> String)
-> ([SPOHashSource] -> ShowS)
-> Show SPOHashSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SPOHashSource -> ShowS
showsPrec :: Int -> SPOHashSource -> ShowS
$cshow :: SPOHashSource -> String
show :: SPOHashSource -> String
$cshowList :: [SPOHashSource] -> ShowS
showList :: [SPOHashSource] -> ShowS
Show)
readSPOCredential
:: SPOHashSource
-> CIO e (L.KeyHash L.StakePool)
readSPOCredential :: forall e. SPOHashSource -> CIO e (KeyHash 'StakePool)
readSPOCredential = \case
SPOHashSourceVerificationKey VerificationKeyOrHashOrFile StakePoolKey
spoVKeyOrHashOrFile ->
Hash StakePoolKey -> KeyHash 'StakePool
unStakePoolKeyHash (Hash StakePoolKey -> KeyHash 'StakePool)
-> RIO e (Hash StakePoolKey) -> RIO e (KeyHash 'StakePool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> VerificationKeyOrHashOrFile StakePoolKey
-> CIO e (Hash StakePoolKey)
forall keyrole e.
Key keyrole =>
VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole)
readVerificationKeyOrHashOrTextEnvFile VerificationKeyOrHashOrFile StakePoolKey
spoVKeyOrHashOrFile
data VerificationKeyOrHashOrFileOrScript keyrole
= VkhfsKeyHashFile !(VerificationKeyOrHashOrFile keyrole)
| VkhfsScript !(File ScriptInAnyLang In)
deriving instance
Eq (VerificationKeyOrHashOrFile keyrole)
=> Eq (VerificationKeyOrHashOrFileOrScript keyrole)
deriving instance
Show (VerificationKeyOrHashOrFile keyrole)
=> Show (VerificationKeyOrHashOrFileOrScript keyrole)
data VerificationKeyOrHashOrFileOrScriptHash keyrole
= VkhfshKeyHashFile !(VerificationKeyOrHashOrFile keyrole)
| VkhfshScriptHash !ScriptHash
deriving instance
Eq (VerificationKeyOrHashOrFile keyrole)
=> Eq (VerificationKeyOrHashOrFileOrScriptHash keyrole)
deriving instance
Show (VerificationKeyOrHashOrFile keyrole)
=> Show (VerificationKeyOrHashOrFileOrScriptHash keyrole)
data VerificationKeySource keyrole
= VksKeyHashFile !(VerificationKeyOrHashOrFile keyrole)
| VksScript !(File ScriptInAnyLang In)
| VksScriptHash !ScriptHash
deriving instance
Eq (VerificationKeyOrHashOrFile keyrole)
=> Eq (VerificationKeySource keyrole)
deriving instance
Show (VerificationKeyOrHashOrFile keyrole)
=> Show (VerificationKeySource keyrole)
readVerificationKeyOrHashOrFileOrScriptHash
:: Key keyrole
=> (Hash keyrole -> L.KeyHash kr)
-> VerificationKeyOrHashOrFileOrScriptHash keyrole
-> CIO e (L.Credential kr)
readVerificationKeyOrHashOrFileOrScriptHash :: forall keyrole (kr :: KeyRole) e.
Key keyrole =>
(Hash keyrole -> KeyHash kr)
-> VerificationKeyOrHashOrFileOrScriptHash keyrole
-> CIO e (Credential kr)
readVerificationKeyOrHashOrFileOrScriptHash Hash keyrole -> KeyHash kr
extractHash = \case
VkhfshScriptHash (ScriptHash ScriptHash
scriptHash) ->
Credential kr -> RIO e (Credential kr)
forall a. a -> RIO e a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ScriptHash -> Credential kr
forall (kr :: KeyRole). ScriptHash -> Credential kr
L.ScriptHashObj ScriptHash
scriptHash)
VkhfshKeyHashFile VerificationKeyOrHashOrFile keyrole
vKeyOrHashOrFile ->
KeyHash kr -> Credential kr
forall (kr :: KeyRole). KeyHash kr -> Credential kr
L.KeyHashObj (KeyHash kr -> Credential kr)
-> (Hash keyrole -> KeyHash kr) -> Hash keyrole -> Credential kr
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Hash keyrole -> KeyHash kr
extractHash
(Hash keyrole -> Credential kr)
-> RIO e (Hash keyrole) -> RIO e (Credential kr)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole)
forall keyrole e.
Key keyrole =>
VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole)
readVerificationKeyOrHashOrTextEnvFile VerificationKeyOrHashOrFile keyrole
vKeyOrHashOrFile
data SomeSigningKey
= AByronSigningKey (SigningKey ByronKey)
| APaymentSigningKey (SigningKey PaymentKey)
| APaymentExtendedSigningKey (SigningKey PaymentExtendedKey)
| AStakeSigningKey (SigningKey StakeKey)
| AStakeExtendedSigningKey (SigningKey StakeExtendedKey)
| AStakePoolSigningKey (SigningKey StakePoolKey)
| AStakePoolExtendedSigningKey (SigningKey StakePoolExtendedKey)
| AGenesisSigningKey (SigningKey GenesisKey)
| AGenesisExtendedSigningKey (SigningKey GenesisExtendedKey)
| AGenesisDelegateSigningKey (SigningKey GenesisDelegateKey)
| AGenesisDelegateExtendedSigningKey (SigningKey GenesisDelegateExtendedKey)
| AGenesisUTxOSigningKey (SigningKey GenesisUTxOKey)
| ADRepSigningKey (SigningKey DRepKey)
| ADRepExtendedSigningKey (SigningKey DRepExtendedKey)
| ACommitteeColdSigningKey (SigningKey CommitteeColdKey)
| ACommitteeColdExtendedSigningKey (SigningKey CommitteeColdExtendedKey)
| ACommitteeHotSigningKey (SigningKey CommitteeHotKey)
| ACommitteeHotExtendedSigningKey (SigningKey CommitteeHotExtendedKey)
| AVrfSigningKey (SigningKey VrfKey)
| AKesSigningKey (SigningKey KesKey)
withSomeSigningKey
:: ()
=> SomeSigningKey
-> (forall keyrole. (Key keyrole, HasTypeProxy keyrole) => SigningKey keyrole -> a)
-> a
withSomeSigningKey :: forall a.
SomeSigningKey
-> (forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a)
-> a
withSomeSigningKey SomeSigningKey
ssk forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f =
case SomeSigningKey
ssk of
AByronSigningKey SigningKey ByronKey
sk -> SigningKey ByronKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey ByronKey
sk
APaymentSigningKey SigningKey PaymentKey
sk -> SigningKey PaymentKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey PaymentKey
sk
APaymentExtendedSigningKey SigningKey PaymentExtendedKey
sk -> SigningKey PaymentExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey PaymentExtendedKey
sk
AStakeSigningKey SigningKey StakeKey
sk -> SigningKey StakeKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey StakeKey
sk
AStakeExtendedSigningKey SigningKey StakeExtendedKey
sk -> SigningKey StakeExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey StakeExtendedKey
sk
AStakePoolSigningKey SigningKey StakePoolKey
sk -> SigningKey StakePoolKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey StakePoolKey
sk
AStakePoolExtendedSigningKey SigningKey StakePoolExtendedKey
sk -> SigningKey StakePoolExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey StakePoolExtendedKey
sk
AGenesisSigningKey SigningKey GenesisKey
sk -> SigningKey GenesisKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey GenesisKey
sk
AGenesisExtendedSigningKey SigningKey GenesisExtendedKey
sk -> SigningKey GenesisExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey GenesisExtendedKey
sk
AGenesisDelegateSigningKey SigningKey GenesisDelegateKey
sk -> SigningKey GenesisDelegateKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey GenesisDelegateKey
sk
AGenesisDelegateExtendedSigningKey SigningKey GenesisDelegateExtendedKey
sk -> SigningKey GenesisDelegateExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey GenesisDelegateExtendedKey
sk
AGenesisUTxOSigningKey SigningKey GenesisUTxOKey
sk -> SigningKey GenesisUTxOKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey GenesisUTxOKey
sk
ADRepSigningKey SigningKey DRepKey
sk -> SigningKey DRepKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey DRepKey
sk
ADRepExtendedSigningKey SigningKey DRepExtendedKey
sk -> SigningKey DRepExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey DRepExtendedKey
sk
ACommitteeColdSigningKey SigningKey CommitteeColdKey
sk -> SigningKey CommitteeColdKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey CommitteeColdKey
sk
ACommitteeColdExtendedSigningKey SigningKey CommitteeColdExtendedKey
sk -> SigningKey CommitteeColdExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey CommitteeColdExtendedKey
sk
ACommitteeHotSigningKey SigningKey CommitteeHotKey
sk -> SigningKey CommitteeHotKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey CommitteeHotKey
sk
ACommitteeHotExtendedSigningKey SigningKey CommitteeHotExtendedKey
sk -> SigningKey CommitteeHotExtendedKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey CommitteeHotExtendedKey
sk
AVrfSigningKey SigningKey VrfKey
sk -> SigningKey VrfKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey VrfKey
sk
AKesSigningKey SigningKey KesKey
sk -> SigningKey KesKey -> a
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> a
f SigningKey KesKey
sk
readSigningKeyFile
:: ()
=> SigningKeyFile In
-> ExceptT (FileError InputDecodeError) IO SomeSigningKey
readSigningKeyFile :: SigningKeyFile 'In
-> ExceptT (FileError InputDecodeError) IO SomeSigningKey
readSigningKeyFile SigningKeyFile 'In
skFile =
IO (Either (FileError InputDecodeError) SomeSigningKey)
-> ExceptT (FileError InputDecodeError) IO SomeSigningKey
forall (m :: * -> *) x a. m (Either x a) -> ExceptT x m a
newExceptT (IO (Either (FileError InputDecodeError) SomeSigningKey)
-> ExceptT (FileError InputDecodeError) IO SomeSigningKey)
-> IO (Either (FileError InputDecodeError) SomeSigningKey)
-> ExceptT (FileError InputDecodeError) IO SomeSigningKey
forall a b. (a -> b) -> a -> b
$
[FromSomeType SerialiseAsBech32 SomeSigningKey]
-> [FromSomeType HasTextEnvelope SomeSigningKey]
-> SigningKeyFile 'In
-> IO (Either (FileError InputDecodeError) SomeSigningKey)
forall content b.
[FromSomeType SerialiseAsBech32 b]
-> [FromSomeType HasTextEnvelope b]
-> File content 'In
-> IO (Either (FileError InputDecodeError) b)
readFormattedFileAnyOf [FromSomeType SerialiseAsBech32 SomeSigningKey]
bech32FileTypes [FromSomeType HasTextEnvelope SomeSigningKey]
textEnvFileTypes SigningKeyFile 'In
skFile
where
textEnvFileTypes :: [FromSomeType HasTextEnvelope SomeSigningKey]
textEnvFileTypes =
[ AsType (SigningKey ByronKey)
-> (SigningKey ByronKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType ByronKey -> AsType (SigningKey ByronKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType ByronKey
AsByronKey) SigningKey ByronKey -> SomeSigningKey
AByronSigningKey
, AsType (SigningKey PaymentKey)
-> (SigningKey PaymentKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType PaymentKey -> AsType (SigningKey PaymentKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType PaymentKey
AsPaymentKey) SigningKey PaymentKey -> SomeSigningKey
APaymentSigningKey
, AsType (SigningKey PaymentExtendedKey)
-> (SigningKey PaymentExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType PaymentExtendedKey -> AsType (SigningKey PaymentExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType PaymentExtendedKey
AsPaymentExtendedKey) SigningKey PaymentExtendedKey -> SomeSigningKey
APaymentExtendedSigningKey
, AsType (SigningKey StakeKey)
-> (SigningKey StakeKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakeKey -> AsType (SigningKey StakeKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakeKey
AsStakeKey) SigningKey StakeKey -> SomeSigningKey
AStakeSigningKey
, AsType (SigningKey StakeExtendedKey)
-> (SigningKey StakeExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakeExtendedKey -> AsType (SigningKey StakeExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakeExtendedKey
AsStakeExtendedKey) SigningKey StakeExtendedKey -> SomeSigningKey
AStakeExtendedSigningKey
, AsType (SigningKey StakePoolKey)
-> (SigningKey StakePoolKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakePoolKey -> AsType (SigningKey StakePoolKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakePoolKey
AsStakePoolKey) SigningKey StakePoolKey -> SomeSigningKey
AStakePoolSigningKey
, AsType (SigningKey StakePoolExtendedKey)
-> (SigningKey StakePoolExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakePoolExtendedKey
-> AsType (SigningKey StakePoolExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakePoolExtendedKey
AsStakePoolExtendedKey) SigningKey StakePoolExtendedKey -> SomeSigningKey
AStakePoolExtendedSigningKey
, AsType (SigningKey GenesisKey)
-> (SigningKey GenesisKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType GenesisKey -> AsType (SigningKey GenesisKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType GenesisKey
AsGenesisKey) SigningKey GenesisKey -> SomeSigningKey
AGenesisSigningKey
, AsType (SigningKey GenesisExtendedKey)
-> (SigningKey GenesisExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType GenesisExtendedKey -> AsType (SigningKey GenesisExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType GenesisExtendedKey
AsGenesisExtendedKey) SigningKey GenesisExtendedKey -> SomeSigningKey
AGenesisExtendedSigningKey
, AsType (SigningKey GenesisDelegateKey)
-> (SigningKey GenesisDelegateKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType GenesisDelegateKey -> AsType (SigningKey GenesisDelegateKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType GenesisDelegateKey
AsGenesisDelegateKey) SigningKey GenesisDelegateKey -> SomeSigningKey
AGenesisDelegateSigningKey
, AsType (SigningKey GenesisDelegateExtendedKey)
-> (SigningKey GenesisDelegateExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType GenesisDelegateExtendedKey
-> AsType (SigningKey GenesisDelegateExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType GenesisDelegateExtendedKey
AsGenesisDelegateExtendedKey) SigningKey GenesisDelegateExtendedKey -> SomeSigningKey
AGenesisDelegateExtendedSigningKey
, AsType (SigningKey GenesisUTxOKey)
-> (SigningKey GenesisUTxOKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType GenesisUTxOKey -> AsType (SigningKey GenesisUTxOKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType GenesisUTxOKey
AsGenesisUTxOKey) SigningKey GenesisUTxOKey -> SomeSigningKey
AGenesisUTxOSigningKey
, AsType (SigningKey DRepKey)
-> (SigningKey DRepKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType DRepKey -> AsType (SigningKey DRepKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType DRepKey
AsDRepKey) SigningKey DRepKey -> SomeSigningKey
ADRepSigningKey
, AsType (SigningKey DRepExtendedKey)
-> (SigningKey DRepExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType DRepExtendedKey -> AsType (SigningKey DRepExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType DRepExtendedKey
AsDRepExtendedKey) SigningKey DRepExtendedKey -> SomeSigningKey
ADRepExtendedSigningKey
, AsType (SigningKey CommitteeColdKey)
-> (SigningKey CommitteeColdKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType CommitteeColdKey -> AsType (SigningKey CommitteeColdKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType CommitteeColdKey
AsCommitteeColdKey) SigningKey CommitteeColdKey -> SomeSigningKey
ACommitteeColdSigningKey
, AsType (SigningKey CommitteeColdExtendedKey)
-> (SigningKey CommitteeColdExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType CommitteeColdExtendedKey
-> AsType (SigningKey CommitteeColdExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType CommitteeColdExtendedKey
AsCommitteeColdExtendedKey) SigningKey CommitteeColdExtendedKey -> SomeSigningKey
ACommitteeColdExtendedSigningKey
, AsType (SigningKey CommitteeHotKey)
-> (SigningKey CommitteeHotKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType CommitteeHotKey -> AsType (SigningKey CommitteeHotKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType CommitteeHotKey
AsCommitteeHotKey) SigningKey CommitteeHotKey -> SomeSigningKey
ACommitteeHotSigningKey
, AsType (SigningKey CommitteeHotExtendedKey)
-> (SigningKey CommitteeHotExtendedKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType CommitteeHotExtendedKey
-> AsType (SigningKey CommitteeHotExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType CommitteeHotExtendedKey
AsCommitteeHotExtendedKey) SigningKey CommitteeHotExtendedKey -> SomeSigningKey
ACommitteeHotExtendedSigningKey
, AsType (SigningKey VrfKey)
-> (SigningKey VrfKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType VrfKey -> AsType (SigningKey VrfKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType VrfKey
AsVrfKey) SigningKey VrfKey -> SomeSigningKey
AVrfSigningKey
, AsType (SigningKey KesKey)
-> (SigningKey KesKey -> SomeSigningKey)
-> FromSomeType HasTextEnvelope SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType KesKey -> AsType (SigningKey KesKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType KesKey
AsKesKey) SigningKey KesKey -> SomeSigningKey
AKesSigningKey
]
bech32FileTypes :: [FromSomeType SerialiseAsBech32 SomeSigningKey]
bech32FileTypes =
[ AsType (SigningKey PaymentKey)
-> (SigningKey PaymentKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType PaymentKey -> AsType (SigningKey PaymentKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType PaymentKey
AsPaymentKey) SigningKey PaymentKey -> SomeSigningKey
APaymentSigningKey
, AsType (SigningKey PaymentExtendedKey)
-> (SigningKey PaymentExtendedKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType PaymentExtendedKey -> AsType (SigningKey PaymentExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType PaymentExtendedKey
AsPaymentExtendedKey) SigningKey PaymentExtendedKey -> SomeSigningKey
APaymentExtendedSigningKey
, AsType (SigningKey StakeKey)
-> (SigningKey StakeKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakeKey -> AsType (SigningKey StakeKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakeKey
AsStakeKey) SigningKey StakeKey -> SomeSigningKey
AStakeSigningKey
, AsType (SigningKey StakeExtendedKey)
-> (SigningKey StakeExtendedKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakeExtendedKey -> AsType (SigningKey StakeExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakeExtendedKey
AsStakeExtendedKey) SigningKey StakeExtendedKey -> SomeSigningKey
AStakeExtendedSigningKey
, AsType (SigningKey StakePoolKey)
-> (SigningKey StakePoolKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakePoolKey -> AsType (SigningKey StakePoolKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakePoolKey
AsStakePoolKey) SigningKey StakePoolKey -> SomeSigningKey
AStakePoolSigningKey
, AsType (SigningKey StakePoolExtendedKey)
-> (SigningKey StakePoolExtendedKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType StakePoolExtendedKey
-> AsType (SigningKey StakePoolExtendedKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType StakePoolExtendedKey
AsStakePoolExtendedKey) SigningKey StakePoolExtendedKey -> SomeSigningKey
AStakePoolExtendedSigningKey
, AsType (SigningKey VrfKey)
-> (SigningKey VrfKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType VrfKey -> AsType (SigningKey VrfKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType VrfKey
AsVrfKey) SigningKey VrfKey -> SomeSigningKey
AVrfSigningKey
, AsType (SigningKey KesKey)
-> (SigningKey KesKey -> SomeSigningKey)
-> FromSomeType SerialiseAsBech32 SomeSigningKey
forall (c :: * -> Constraint) a b.
c a =>
AsType a -> (a -> b) -> FromSomeType c b
FromSomeType (AsType KesKey -> AsType (SigningKey KesKey)
forall a. AsType a -> AsType (SigningKey a)
AsSigningKey AsType KesKey
AsKesKey) SigningKey KesKey -> SomeSigningKey
AKesSigningKey
]
data StakePoolKeyHashSource
= StakePoolKeyHashSource !StakePoolVerificationKeySource
| StakePoolKeyHashLiteral !(Hash StakePoolKey)
deriving (StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool
(StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool)
-> (StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool)
-> Eq StakePoolKeyHashSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool
== :: StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool
$c/= :: StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool
/= :: StakePoolKeyHashSource -> StakePoolKeyHashSource -> Bool
Eq, Int -> StakePoolKeyHashSource -> ShowS
[StakePoolKeyHashSource] -> ShowS
StakePoolKeyHashSource -> String
(Int -> StakePoolKeyHashSource -> ShowS)
-> (StakePoolKeyHashSource -> String)
-> ([StakePoolKeyHashSource] -> ShowS)
-> Show StakePoolKeyHashSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StakePoolKeyHashSource -> ShowS
showsPrec :: Int -> StakePoolKeyHashSource -> ShowS
$cshow :: StakePoolKeyHashSource -> String
show :: StakePoolKeyHashSource -> String
$cshowList :: [StakePoolKeyHashSource] -> ShowS
showList :: [StakePoolKeyHashSource] -> ShowS
Show)
data StakePoolVerificationKeySource
= StakePoolVerificationKeyFromLiteral !AnyStakePoolVerificationKey
| StakePoolVerificationKeyFromFile !(VerificationKeyFile In)
deriving (Int -> StakePoolVerificationKeySource -> ShowS
[StakePoolVerificationKeySource] -> ShowS
StakePoolVerificationKeySource -> String
(Int -> StakePoolVerificationKeySource -> ShowS)
-> (StakePoolVerificationKeySource -> String)
-> ([StakePoolVerificationKeySource] -> ShowS)
-> Show StakePoolVerificationKeySource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StakePoolVerificationKeySource -> ShowS
showsPrec :: Int -> StakePoolVerificationKeySource -> ShowS
$cshow :: StakePoolVerificationKeySource -> String
show :: StakePoolVerificationKeySource -> String
$cshowList :: [StakePoolVerificationKeySource] -> ShowS
showList :: [StakePoolVerificationKeySource] -> ShowS
Show, StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool
(StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool)
-> (StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool)
-> Eq StakePoolVerificationKeySource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool
== :: StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool
$c/= :: StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool
/= :: StakePoolVerificationKeySource
-> StakePoolVerificationKeySource -> Bool
Eq)