github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/server/init.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/crypto/keys"
     7  
     8  	clkeys "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/keys"
     9  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    10  )
    11  
    12  // GenerateCoinKey returns the address of a public key, along with the secret
    13  // phrase to recover the private key.
    14  func GenerateCoinKey() (sdk.AccAddress, string, error) {
    15  
    16  	// generate a private key, with recovery phrase
    17  	info, secret, err := clkeys.NewInMemoryKeyBase().CreateMnemonic(
    18  		"name", keys.English, "pass", keys.Secp256k1, "")
    19  	if err != nil {
    20  		return sdk.AccAddress([]byte{}), "", err
    21  	}
    22  	addr := info.GetPubKey().Address()
    23  	return sdk.AccAddress(addr), secret, nil
    24  }
    25  
    26  // GenerateSaveCoinKey returns the address of a public key, along with the secret
    27  // phrase to recover the private key.
    28  func GenerateSaveCoinKey(keybase keys.Keybase, keyName, keyPass string, overwrite bool, mnemonicInput string) (sdk.AccAddress, string, error) {
    29  	// ensure no overwrite
    30  	if !overwrite {
    31  		_, err := keybase.Get(keyName)
    32  		if err == nil {
    33  			return sdk.AccAddress([]byte{}), "", fmt.Errorf(
    34  				"key already exists, overwrite is disabled")
    35  		}
    36  	}
    37  
    38  	// generate a private key, with recovery phrase
    39  	info, secret, err := keybase.CreateMnemonic(keyName, keys.English, keyPass, keys.Secp256k1, mnemonicInput)
    40  	if err != nil {
    41  		return sdk.AccAddress([]byte{}), "", err
    42  	}
    43  
    44  	return sdk.AccAddress(info.GetPubKey().Address()), secret, nil
    45  }