module Tendermint.Utils.User where import Crypto.Secp256k1 (SecKey, derivePubKey, secKey) import qualified Data.ByteArray.HexString as Hex import Data.Maybe (fromJust) import Data.Proxy import Data.String (fromString) import Tendermint.SDK.Crypto (Secp256k1, addressFromPubKey) import Tendermint.SDK.Types.Address (Address (..)) import Tendermint.Utils.TxClient.Types (Signer, makeSignerFromKey) data User = User { userPrivKey :: SecKey , userAddress :: Address } makeUser :: String -> User makeUser privKeyStr = let privateKey = fromJust . secKey . Hex.toBytes . fromString $ privKeyStr pubKey = derivePubKey privateKey address = addressFromPubKey (Proxy @Secp256k1) pubKey in User privateKey address makeSignerFromUser :: User -> Signer makeSignerFromUser User{userPrivKey} = makeSignerFromKey (Proxy @Secp256k1) userPrivKey