github.com/kotalco/kotal@v0.3.0/controllers/ethereum/keystore.go (about)

     1  package controllers
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  
     7  	"github.com/ethereum/go-ethereum/accounts/keystore"
     8  	"github.com/ethereum/go-ethereum/crypto"
     9  )
    10  
    11  // KeyStoreFromPrivateKey generates key store from private key (hex without 0x)
    12  func KeyStoreFromPrivateKey(key, password string) (content []byte, err error) {
    13  	dir, err := ioutil.TempDir(os.TempDir(), "tmp")
    14  	if err != nil {
    15  		return
    16  	}
    17  	defer os.RemoveAll(dir)
    18  
    19  	ks := keystore.NewKeyStore(dir, keystore.StandardScryptN, keystore.StandardScryptP)
    20  	privateKey, err := crypto.HexToECDSA(key)
    21  	if err != nil {
    22  		return
    23  	}
    24  
    25  	acc, err := ks.ImportECDSA(privateKey, password)
    26  	if err != nil {
    27  		return
    28  	}
    29  
    30  	content, err = ks.Export(acc, password, password)
    31  
    32  	return
    33  }