71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package keyring
|
|
|
|
import (
|
|
"github.com/cosmos/cosmos-sdk/crypto/hd"
|
|
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
|
)
|
|
|
|
// Language is a language to create the BIP 39 mnemonic in.
|
|
// Currently, only english is supported though.
|
|
// Find a list of all supported languages in the BIP 39 spec (word lists).
|
|
type Language int
|
|
|
|
const (
|
|
// English is the default language to create a mnemonic.
|
|
// It is the only supported language by this package.
|
|
English Language = iota + 1
|
|
// Japanese is currently not supported.
|
|
Japanese
|
|
// Korean is currently not supported.
|
|
Korean
|
|
// Spanish is currently not supported.
|
|
Spanish
|
|
// ChineseSimplified is currently not supported.
|
|
ChineseSimplified
|
|
// ChineseTraditional is currently not supported.
|
|
ChineseTraditional
|
|
// French is currently not supported.
|
|
French
|
|
// Italian is currently not supported.
|
|
Italian
|
|
)
|
|
|
|
const (
|
|
// DefaultBIP39Passphrase used for deriving seed from mnemonic
|
|
DefaultBIP39Passphrase = ""
|
|
|
|
// bits of entropy to draw when creating a mnemonic
|
|
defaultEntropySize = 256
|
|
addressSuffix = "address"
|
|
)
|
|
|
|
// KeyType reflects a human-readable type for key listing.
|
|
type KeyType uint
|
|
|
|
// Info KeyTypes
|
|
const (
|
|
TypeLocal KeyType = 0
|
|
TypeLedger KeyType = 1
|
|
TypeOffline KeyType = 2
|
|
TypeMulti KeyType = 3
|
|
)
|
|
|
|
var keyTypes = map[KeyType]string{
|
|
TypeLocal: "local",
|
|
TypeLedger: "ledger",
|
|
TypeOffline: "offline",
|
|
TypeMulti: "multi",
|
|
}
|
|
|
|
// String implements the stringer interface for KeyType.
|
|
func (kt KeyType) String() string {
|
|
return keyTypes[kt]
|
|
}
|
|
|
|
type (
|
|
// DeriveKeyFunc defines the function to derive a new key from a seed and hd path
|
|
DeriveKeyFunc func(mnemonic string, bip39Passphrase, hdPath string, algo hd.PubKeyType) ([]byte, error)
|
|
// PrivKeyGenFunc defines the function to convert derived key bytes to a tendermint private key
|
|
PrivKeyGenFunc func(bz []byte, algo hd.PubKeyType) (cryptotypes.PrivKey, error)
|
|
)
|