Documentation ¶
Index ¶
- Constants
- Variables
- type Backend
- type CryptoJSON
- type DSBackend
- func (backend *DSBackend) Addresses(ctx context.Context) []address.Address
- func (backend *DSBackend) DeleteAddress(ctx context.Context, addr address.Address) error
- func (backend *DSBackend) GetKeyInfo(ctx context.Context, addr address.Address) (*key.KeyInfo, error)
- func (backend *DSBackend) GetKeyInfoPassphrase(ctx context.Context, addr address.Address, password []byte) (*key.KeyInfo, error)
- func (backend *DSBackend) HasAddress(ctx context.Context, addr address.Address) bool
- func (backend *DSBackend) HasPassword() bool
- func (backend *DSBackend) ImportKey(ctx context.Context, ki *key.KeyInfo) error
- func (backend *DSBackend) LockWallet(ctx context.Context) error
- func (backend *DSBackend) NewAddress(ctx context.Context, protocol address.Protocol) (address.Address, error)
- func (backend *DSBackend) SetPassword(ctx context.Context, password []byte) error
- func (backend *DSBackend) SignBytes(ctx context.Context, data []byte, addr address.Address) (*crypto.Signature, error)
- func (backend *DSBackend) UnLockWallet(ctx context.Context, password []byte) error
- func (backend *DSBackend) UsePassword(f func(password []byte) error) error
- func (backend *DSBackend) WalletState(ctx context.Context) int
- type Importer
- type KeccakState
- type Key
- type Wallet
- func (w *Wallet) Addresses(ctx context.Context) []address.Address
- func (w *Wallet) Backends(typ reflect.Type) []Backend
- func (w *Wallet) DSBacked() (*DSBackend, error)
- func (w *Wallet) DeleteAddress(ctx context.Context, addr address.Address) error
- func (w *Wallet) Export(ctx context.Context, addr address.Address, password string) (*key.KeyInfo, error)
- func (w *Wallet) Find(ctx context.Context, addr address.Address) (Backend, error)
- func (w *Wallet) GetPubKeyForAddress(ctx context.Context, addr address.Address) ([]byte, error)
- func (w *Wallet) HasAddress(ctx context.Context, a address.Address) bool
- func (w *Wallet) HasPassword(ctx context.Context) bool
- func (w *Wallet) Import(ctx context.Context, ki *key.KeyInfo) (address.Address, error)
- func (w *Wallet) LockWallet(ctx context.Context) error
- func (w *Wallet) NewAddress(ctx context.Context, p address.Protocol) (address.Address, error)
- func (w *Wallet) NewKeyInfo(ctx context.Context) (*key.KeyInfo, error)
- func (w *Wallet) SetPassword(ctx context.Context, password []byte) error
- func (w *Wallet) SignBytes(ctx context.Context, data []byte, addr address.Address) (*crypto.Signature, error)
- func (w *Wallet) UnLockWallet(ctx context.Context, password []byte) error
- func (w *Wallet) WalletSign(ctx context.Context, addr address.Address, msg []byte, meta types.MsgMeta) (*crypto.Signature, error)
- func (w *Wallet) WalletState(ctx context.Context) int
- type WalletIntersection
Constants ¶
const ( Lock Unlock )
Variables ¶
var ( ErrInvalidPassword = errors.New("password matching failed") ErrRepeatPassword = errors.New("set password more than once") )
var DSBackendType = reflect.TypeOf(&DSBackend{})
DSBackendType is the reflect type of the DSBackend.
var ErrDecrypt = errors.New("could not decrypt key with given password")
var (
ErrKeyInfoNotFound = fmt.Errorf("key info not found")
)
var TestPassword = []byte("test-password")
Functions ¶
This section is empty.
Types ¶
type Backend ¶
type Backend interface { // Addresses returns a list of all accounts currently stored in this backend. Addresses(ctx context.Context) []address.Address // Contains returns true if this backend stores the passed in address. HasAddress(context.Context, address.Address) bool DeleteAddress(context.Context, address.Address) error // Sign cryptographically signs data with the private key associated with an address. SignBytes(context.Context, []byte, address.Address) (*crypto.Signature, error) // GetKeyInfo will return the keyinfo associated with address `addr` // iff backend contains the addr. GetKeyInfo(context.Context, address.Address) (*key.KeyInfo, error) GetKeyInfoPassphrase(context.Context, address.Address, []byte) (*key.KeyInfo, error) LockWallet(context.Context) error UnLockWallet(context.Context, []byte) error WalletState(context.Context) int }
Backend is the interface to represent different storage backends that can contain many addresses.
type CryptoJSON ¶ added in v0.9.1
type DSBackend ¶
type DSBackend struct { PassphraseConf config.PassphraseConfig // contains filtered or unexported fields }
DSBackend is a wallet backend implementation for storing addresses in a datastore.
func NewDSBackend ¶
func NewDSBackend(ctx context.Context, ds repo.Datastore, passphraseCfg config.PassphraseConfig, password []byte) (*DSBackend, error)
NewDSBackend constructs a new backend using the passed in datastore.
func (*DSBackend) Addresses ¶
Addresses returns a list of all addresses that are stored in this backend.
func (*DSBackend) DeleteAddress ¶ added in v1.8.0
func (*DSBackend) GetKeyInfo ¶
func (backend *DSBackend) GetKeyInfo(ctx context.Context, addr address.Address) (*key.KeyInfo, error)
GetKeyInfo will return the private & public keys associated with address `addr` iff backend contains the addr.
func (*DSBackend) GetKeyInfoPassphrase ¶ added in v0.9.1
func (backend *DSBackend) GetKeyInfoPassphrase(ctx context.Context, addr address.Address, password []byte) (*key.KeyInfo, error)
GetKeyInfoPassphrase get private private key from wallet, get encrypt byte from db and decrypto it with password
func (*DSBackend) HasAddress ¶
HasAddress checks if the passed in address is stored in this backend. Safe for concurrent access.
func (*DSBackend) HasPassword ¶ added in v0.9.4
HasPassword return whether the password has been set in the wallet
func (*DSBackend) LockWallet ¶ added in v0.9.7
func (*DSBackend) NewAddress ¶
func (backend *DSBackend) NewAddress(ctx context.Context, protocol address.Protocol) (address.Address, error)
NewAddress creates a new address and stores it. Safe for concurrent access.
func (*DSBackend) SetPassword ¶ added in v0.9.1
SetPassword set password for wallet , and wallet used this password to encrypt private key
func (*DSBackend) SignBytes ¶
func (backend *DSBackend) SignBytes(ctx context.Context, data []byte, addr address.Address) (*crypto.Signature, error)
SignBytes cryptographically signs `data` using the private key `priv`.
func (*DSBackend) UnLockWallet ¶ added in v0.9.7
UnLockWallet unlock wallet with password, decrypt local key in db and save to protected memory
func (*DSBackend) UsePassword ¶ added in v0.9.7
type Importer ¶
type Importer interface { // ImportKey imports the key described by the given keyinfo // into the backend ImportKey(context.Context, *key.KeyInfo) error }
Importer is a specialization of a wallet backend that can import new keys into its permanent storage. Disk backed wallets can do this, hardware wallets generally cannot.
type KeccakState ¶ added in v0.9.1
KeccakState wraps sha3.state. In addition to the usual hash methods, it also supports Read to get a variable amount of data from the hash state. Read is faster than Sum because it doesn't copy the internal state, but also modifies the internal state.
type Key ¶ added in v0.9.1
type Key struct { ID uuid.UUID // Version 4 "random" for unique id not derived from key data // to simplify lookups we also store the address Address address.Address KeyInfo *key.KeyInfo }
Key private key info
func (*Key) MarshalJSON ¶ added in v0.9.1
func (*Key) UnmarshalJSON ¶ added in v0.9.1
type Wallet ¶
type Wallet struct {
// contains filtered or unexported fields
}
wallet manages the locally stored addresses.
func (*Wallet) Addresses ¶
Addresses retrieves all stored addresses. Safe for concurrent access. Always sorted in the same order.
func (*Wallet) DSBacked ¶ added in v0.9.1
DSBacked return the first wallet backend todo support multi wallet backend
func (*Wallet) DeleteAddress ¶ added in v1.8.0
DeleteAddress delete the given address from stored.
func (*Wallet) Export ¶
func (w *Wallet) Export(ctx context.Context, addr address.Address, password string) (*key.KeyInfo, error)
Export returns the KeyInfos for the given wallet addresses
func (*Wallet) Find ¶
Find searches through all backends and returns the one storing the passed in address. Safe for concurrent access.
func (*Wallet) GetPubKeyForAddress ¶
GetPubKeyForAddress returns the public key in the keystore associated with the given address.
func (*Wallet) HasAddress ¶
HasAddress checks if the given address is stored. Safe for concurrent access.
func (*Wallet) HasPassword ¶ added in v0.9.4
HasPassword return whether the password has been set in the wallet
func (*Wallet) LockWallet ¶ added in v0.9.7
LockWallet lock lock wallet
func (*Wallet) NewAddress ¶ added in v0.9.1
NewAddress creates a new account address on the default wallet backend.
func (*Wallet) NewKeyInfo ¶
NewKeyInfo creates a new KeyInfo struct in the wallet backend and returns it
func (*Wallet) SetPassword ¶ added in v0.9.1
SetPassword
func (*Wallet) SignBytes ¶
func (w *Wallet) SignBytes(ctx context.Context, data []byte, addr address.Address) (*crypto.Signature, error)
SignBytes cryptographically signs `data` using the private key corresponding to address `addr`
func (*Wallet) UnLockWallet ¶ added in v0.9.7
type WalletIntersection ¶ added in v0.9.4
type WalletIntersection interface { HasAddress(ctx context.Context, addr address.Address) bool Addresses(ctx context.Context) []address.Address NewAddress(ctx context.Context, protocol address.Protocol) (address.Address, error) DeleteAddress(ctx context.Context, addr address.Address) error Import(ctx context.Context, ki *key.KeyInfo) (address.Address, error) Export(ctx context.Context, addr address.Address, password string) (*key.KeyInfo, error) WalletSign(ctx context.Context, keyAddr address.Address, msg []byte, meta types.MsgMeta) (*crypto.Signature, error) HasPassword(ctx context.Context) bool }
WalletIntersection nolint