47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/filecoin-project/go-address"
|
|
"github.com/filecoin-project/go-state-types/crypto"
|
|
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
)
|
|
|
|
type MsgType string
|
|
const (
|
|
MTUnknown = "unknown"
|
|
|
|
// Signing message CID. MsgMeta.Extra contains raw cbor message bytes
|
|
MTChainMsg = "message"
|
|
|
|
// Signing a blockheader. signing raw cbor block bytes (MsgMeta.Extra is empty)
|
|
MTBlock = "block"
|
|
|
|
// Signing a deal proposal. signing raw cbor proposal bytes (MsgMeta.Extra is empty)
|
|
MTDealProposal = "dealproposal"
|
|
|
|
// TODO: Deals, Vouchers, VRF
|
|
)
|
|
|
|
type MsgMeta struct {
|
|
Type MsgType
|
|
|
|
// Additional data related to what is signed. Should be verifiable with the
|
|
// signed bytes (e.g. CID(Extra).Bytes() == toSign)
|
|
Extra []byte
|
|
}
|
|
|
|
type WalletAPI interface {
|
|
WalletNew(context.Context, crypto.SigType) (address.Address, error)
|
|
WalletHas(context.Context, address.Address) (bool, error)
|
|
WalletList(context.Context) ([]address.Address, error)
|
|
|
|
WalletSign(ctx context.Context, signer address.Address, toSign []byte, meta MsgMeta) (*crypto.Signature, error)
|
|
|
|
WalletExport(context.Context, address.Address) (*types.KeyInfo, error)
|
|
WalletImport(context.Context, *types.KeyInfo) (address.Address, error)
|
|
WalletDelete(context.Context, address.Address) error
|
|
}
|