48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 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) //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
 | 
						|
}
 |