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 Wallet interface { WalletNew(context.Context, types.KeyType) (address.Address, error) //perm:admin WalletHas(context.Context, address.Address) (bool, error) //perm:admin WalletList(context.Context) ([]address.Address, error) //perm:admin WalletSign(ctx context.Context, signer address.Address, toSign []byte, meta MsgMeta) (*crypto.Signature, error) //perm:admin WalletExport(context.Context, address.Address) (*types.KeyInfo, error) //perm:admin WalletImport(context.Context, *types.KeyInfo) (address.Address, error) //perm:admin WalletDelete(context.Context, address.Address) error //perm:admin }