Documentation ¶
Index ¶
- Constants
- Variables
- type Address
- type AddressScope
- type Backend
- type Cid
- type CryptoJSON
- type DSBackend
- func (backend *DSBackend) Addresses(ctx context.Context) []address.Address
- func (backend *DSBackend) GetKeyInfo(ctx context.Context, addr address.Address) (*crypto.KeyInfo, error)
- func (backend *DSBackend) GetKeyInfoPassphrase(ctx context.Context, addr address.Address, password []byte) (*crypto.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 *crypto.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 KeyInfo
- type KeyType
- type MethodNum
- type MsgMeta
- type MsgType
- type SigType
- type Signature
- type TokenAmount
- 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) Export(ctx context.Context, addr address.Address, password string) (*crypto.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 *crypto.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) (*crypto.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 )
const ( MTUnknown = MsgType("unknown") // Signing message CID. MsgMeta.Extra contains raw cbor message bytes MTChainMsg = MsgType("message") // Signing a blockheader. signing raw cbor block bytes (MsgMeta.Extra is empty) MTBlock = MsgType("block") // Signing a deal proposal. signing raw cbor proposal bytes (MsgMeta.Extra is empty) MTDealProposal = MsgType("dealproposal") // extra is nil, 'toSign' is cbor raw bytes of 'DrawRandomParams' // following types follow above rule MTDrawRandomParam = MsgType("drawrandomparam") MTSignedVoucher = MsgType("signedvoucher") MTStorageAsk = MsgType("storageask") MTAskResponse = MsgType("askresponse") MTNetWorkResponse = MsgType("networkresposne") // reference : storagemarket/impl/remotecli.go:330 // sign storagemarket.ClientDeal.ProposalCid, // MsgMeta.Extra is nil, 'toSign' is market.ClientDealProposal // storagemarket.ClientDeal.ProposalCid equals cborutil.AsIpld(market.ClientDealProposal).Cid() MTClientDeal = MsgType("clientdeal") MTProviderDealState = MsgType("providerdealstate") )
const ( SigTypeUnknown = SigType(math.MaxUint8) SigTypeSecp256k1 = SigType(iota) SigTypeBLS )
const StringEmpty = ""
Variables ¶
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 ErrInvalidPassword = errors.New("password matching failed")
var ErrKeyInfoNotFound = fmt.Errorf("key info not found")
var ErrRepeatPassword = errors.New("set password more than once")
var (
NilAddress = Address{}
)
var TestPassword = []byte("test-password")
Functions ¶
This section is empty.
Types ¶
type AddressScope ¶ added in v0.9.7
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 // 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) (*crypto.KeyInfo, error) GetKeyInfoPassphrase(context.Context, address.Address, []byte) (*crypto.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) GetKeyInfo ¶
func (backend *DSBackend) GetKeyInfo(ctx context.Context, addr address.Address) (*crypto.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) (*crypto.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, *crypto.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 *crypto.KeyInfo }
Key private key info
func (*Key) MarshalJSON ¶ added in v0.9.1
func (*Key) UnmarshalJSON ¶ added in v0.9.1
type KeyType ¶ added in v0.9.7
type KeyType string
KeyType defines a type of a key
func SignType2Key ¶ added in v0.9.7
func (*KeyType) UnmarshalJSON ¶ added in v0.9.7
type SigType ¶ added in v0.9.7
func KeyType2Sign ¶ added in v0.9.7
type TokenAmount ¶ added in v0.9.7
type TokenAmount = abi.TokenAmount
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) Export ¶
func (w *Wallet) Export(ctx context.Context, addr address.Address, password string) (*crypto.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, a address.Address) bool Addresses(ctx context.Context) []address.Address NewAddress(ctx context.Context, p address.Protocol) (address.Address, error) Import(ctx context.Context, ki *crypto.KeyInfo) (address.Address, error) Export(ctx context.Context, addr address.Address, password string) (*crypto.KeyInfo, error) WalletSign(ctx context.Context, keyAddr address.Address, msg []byte, meta types.MsgMeta) (*crypto.Signature, error) HasPassword(ctx context.Context) bool }
WalletIntersection nolint