|
|
- package keys
-
- import (
- crypto "github.com/tendermint/go-crypto"
- )
-
- // Keybase allows simple CRUD on a keystore, as an aid to signing
- type Keybase interface {
- // Sign some bytes
- Sign(name, passphrase string, msg []byte) (crypto.Signature, crypto.PubKey, error)
- // Create a new keypair
- Create(name, passphrase string, algo CryptoAlgo) (info Info, seed string, err error)
- // Recover takes a seedphrase and loads in the key
- Recover(name, passphrase, seedphrase string) (info Info, erro error)
- List() ([]Info, error)
- Get(name string) (Info, error)
- Update(name, oldpass, newpass string) error
- Delete(name, passphrase string) error
-
- Import(name string, armor string) (err error)
- Export(name string) (armor string, err error)
- }
-
- // Info is the public information about a key
- type Info struct {
- Name string `json:"name"`
- PubKey crypto.PubKey `json:"pubkey"`
- PrivKeyArmor string `json:"privkey.armor"`
- }
-
- func newInfo(name string, pub crypto.PubKey, privArmor string) Info {
- return Info{
- Name: name,
- PubKey: pub,
- PrivKeyArmor: privArmor,
- }
- }
-
- // Address is a helper function to calculate the address from the pubkey
- func (i Info) Address() []byte {
- return i.PubKey.Address()
- }
-
- func (i Info) bytes() []byte {
- bz, err := cdc.MarshalBinary(i)
- if err != nil {
- panic(err)
- }
- return bz
- }
-
- func readInfo(bz []byte) (info Info, err error) {
- err = cdc.UnmarshalBinary(bz, &info)
- return
- }
|