c41777dcd2
* mostly working api proxy gen * api: Consistent api names * fix docsgen * regenerate api struct * api: expand external interfaces * Add missing gen files * apigen: fix perm detection * api: Move perm tags to the interface * gofmt * worker perms * docsgen * docsgen: ignore tag comments * apigen: add codegen warning * gofmt * missing actor type * docsgen * make linter happy * fix lint * apigen: use directives for tags * docsgen * regen openrpc docs
48 lines
1.3 KiB
Go
48 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 Wallet interface {
|
|
WalletNew(context.Context, types.KeyType) (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
|
|
}
|