types

package
v0.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2023 License: Apache-2.0 Imports: 25 Imported by: 1

Documentation

Index

Constants

View Source
const (
	ModuleName    = "lcp"
	ClientTypeLCP = "lcp-client"
	MrenclaveSize = 32
)
View Source
const (
	LCPCommitmentVersion          = 1
	LCPCommitmentTypeUpdateClient = 1
	LCPCommitmentTypeState        = 2
)
View Source
const (
	LCPCommitmentContextTypeEmpty          = 0
	LCPCommitmentContextTypeTrustingPeriod = 1
)
View Source
const (
	QuoteOK                                = "OK"
	QuoteSignatureInvalid                  = "SIGNATURE_INVALID"
	QuoteGroupRevoked                      = "GROUP_REVOKED"
	QuoteSignatureRevoked                  = "SIGNATURE_REVOKED"
	QuoteKeyRevoked                        = "KEY_REVOKED"
	QuoteSigRLVersionMismatch              = "SIGRL_VERSION_MISMATCH"
	QuoteGroupOutOfDate                    = "GROUP_OUT_OF_DATE"
	QuoteConfigurationNeeded               = "CONFIGURATION_NEEDED"
	QuoteSwHardeningNeeded                 = "SW_HARDENING_NEEDED"
	QuoteConfigurationAndSwHardeningNeeded = "CONFIGURATION_AND_SW_HARDENING_NEEDED"
)

Variables

View Source
var (
	ErrInvalidStateCommitment      = sdkerrors.Register(ModuleName, 1, "invalid state commitment")
	ErrInvalidStateCommitmentProof = sdkerrors.Register(ModuleName, 2, "invalid state commitment proof")
	ErrExpiredEnclaveKey           = sdkerrors.Register(ModuleName, 3, "enclave key has expired")
	ErrProcessedTimeNotFound       = sdkerrors.Register(ModuleName, 4, "processed time not found")
	ErrProcessedHeightNotFound     = sdkerrors.Register(ModuleName, 5, "processed height not found")
	ErrDelayPeriodNotPassed        = sdkerrors.Register(ModuleName, 6, "packet-specified delay period has not been reached")
)
View Source
var (
	ErrInvalidLengthLcp        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowLcp          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupLcp = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	// KeyProcessedTime is appended to consensus state key to store the processed time
	KeyProcessedTime = []byte("/processedTime")
	// KeyProcessedHeight is appended to consensus state key to store the processed height
	KeyProcessedHeight = []byte("/processedHeight")
)

Functions

func EthABIEncodeCommitmentProof added in v0.2.0

func EthABIEncodeCommitmentProof(p *CommitmentProof) ([]byte, error)

func GetProcessedHeight

func GetProcessedHeight(clientStore sdk.KVStore, height exported.Height) (exported.Height, bool)

GetProcessedHeight gets the height at which this chain received and processed a tendermint header. This is used to validate that a received packet has passed the block delay period.

func GetProcessedTime

func GetProcessedTime(clientStore sdk.KVStore, height exported.Height) (uint64, bool)

GetProcessedTime gets the time (in nanoseconds) at which this chain received and processed a tendermint header. This is used to validate that a received packet has passed the time delay period.

func ProcessedHeightKey

func ProcessedHeightKey(height exported.Height) []byte

ProcessedHeightKey returns the key under which the processed height will be stored in the client store.

func ProcessedTimeKey

func ProcessedTimeKey(height exported.Height) []byte

ProcessedTimeKey returns the key under which the processed time will be stored in the client store.

func RegisterInterfaces

func RegisterInterfaces(registry codectypes.InterfaceRegistry)

RegisterInterfaces register the ibc channel submodule interfaces to protobuf Any.

func SetProcessedHeight

func SetProcessedHeight(clientStore sdk.KVStore, consHeight, processedHeight exported.Height)

SetProcessedHeight stores the height at which a header was processed and the corresponding consensus state was created. This is useful when validating whether a packet has reached the specified block delay period in the tendermint client's verification functions

func SetProcessedTime

func SetProcessedTime(clientStore sdk.KVStore, height exported.Height, timeNs uint64)

SetProcessedTime stores the time at which a header was processed and the corresponding consensus state was created. This is useful when validating whether a packet has reached the time specified delay period in the tendermint client's verification functions

func VerifySignature

func VerifySignature(msg []byte, signature []byte, signer common.Address) error

func VerifySignatureWithSignBytes

func VerifySignatureWithSignBytes(signBytes []byte, signature []byte, expectedSigner common.Address) error

Types

type ClientState

type ClientState struct {
	LatestHeight  types.Height `protobuf:"bytes,1,opt,name=latest_height,json=latestHeight,proto3" json:"latest_height"`
	Mrenclave     []byte       `protobuf:"bytes,2,opt,name=mrenclave,proto3" json:"mrenclave,omitempty"`
	KeyExpiration uint64       `protobuf:"varint,3,opt,name=key_expiration,json=keyExpiration,proto3" json:"key_expiration,omitempty"`
	// e.g. SW_HARDENING_NEEDED, CONFIGURATION_AND_SW_HARDENING_NEEDED (except "OK")
	AllowedQuoteStatuses []string `protobuf:"bytes,4,rep,name=allowed_quote_statuses,json=allowedQuoteStatuses,proto3" json:"allowed_quote_statuses,omitempty"`
	// e.g. INTEL-SA-XXXXX
	AllowedAdvisoryIds []string `protobuf:"bytes,5,rep,name=allowed_advisory_ids,json=allowedAdvisoryIds,proto3" json:"allowed_advisory_ids,omitempty"`
}

func (ClientState) AddEnclaveKey added in v0.2.0

func (cs ClientState) AddEnclaveKey(clientStore sdk.KVStore, key common.Address, expiredAt time.Time)

func (ClientState) CheckForMisbehaviour added in v0.1.6

func (cs ClientState) CheckForMisbehaviour(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, msg exported.ClientMessage) bool

func (ClientState) CheckSubstituteAndUpdateState

func (cs ClientState) CheckSubstituteAndUpdateState(
	ctx sdk.Context, cdc codec.BinaryCodec, subjectClientStore,
	substituteClientStore sdk.KVStore, substituteClient exported.ClientState,
) error

func (ClientState) ClientType

func (cs ClientState) ClientType() string

func (ClientState) Contains

func (cs ClientState) Contains(clientStore sdk.KVStore, key common.Address) bool

func (*ClientState) Descriptor

func (*ClientState) Descriptor() ([]byte, []int)

func (ClientState) ExportMetadata

func (cs ClientState) ExportMetadata(_ sdk.KVStore) []exported.GenesisMetadata

Genesis function

func (ClientState) GetLatestHeight

func (cs ClientState) GetLatestHeight() exported.Height

func (ClientState) GetTimestampAtHeight added in v0.1.6

func (cs ClientState) GetTimestampAtHeight(
	ctx sdk.Context,
	clientStore sdk.KVStore,
	cdc codec.BinaryCodec,
	height exported.Height,
) (uint64, error)

func (ClientState) Initialize

func (cs ClientState) Initialize(_ sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, consensusState exported.ConsensusState) error

Initialization function Clients must validate the initial consensus state, and may store any client-specific metadata necessary for correct light client operation

func (ClientState) IsActiveKey

func (cs ClientState) IsActiveKey(blockTime time.Time, clientStore sdk.KVStore, key common.Address) bool

func (*ClientState) Marshal

func (m *ClientState) Marshal() (dAtA []byte, err error)

func (*ClientState) MarshalTo

func (m *ClientState) MarshalTo(dAtA []byte) (int, error)

func (*ClientState) MarshalToSizedBuffer

func (m *ClientState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ClientState) ProtoMessage

func (*ClientState) ProtoMessage()

func (*ClientState) Reset

func (m *ClientState) Reset()

func (*ClientState) Size

func (m *ClientState) Size() (n int)

func (ClientState) Status

func (cs ClientState) Status(ctx sdk.Context, clientStore sdk.KVStore, cdc codec.BinaryCodec) exported.Status

Status function Clients must return their status. Only Active clients are allowed to process packets.

func (*ClientState) String

func (m *ClientState) String() string

func (*ClientState) Unmarshal

func (m *ClientState) Unmarshal(dAtA []byte) error

func (ClientState) UpdateState added in v0.1.6

func (cs ClientState) UpdateState(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, clientMsg exported.ClientMessage) []exported.Height

func (ClientState) UpdateStateOnMisbehaviour added in v0.1.6

func (cs ClientState) UpdateStateOnMisbehaviour(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, _ exported.ClientMessage)

func (ClientState) Validate

func (cs ClientState) Validate() error

func (ClientState) VerifyClientMessage added in v0.1.6

func (cs ClientState) VerifyClientMessage(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, clientMsg exported.ClientMessage) error

func (ClientState) VerifyMembership

func (cs ClientState) VerifyMembership(
	ctx sdk.Context,
	clientStore sdk.KVStore,
	cdc codec.BinaryCodec,
	height exported.Height,
	delayTimePeriod uint64,
	delayBlockPeriod uint64,
	proof []byte,
	path exported.Path,
	value []byte,
) error

func (ClientState) VerifyNonMembership

func (cs ClientState) VerifyNonMembership(
	ctx sdk.Context,
	clientStore sdk.KVStore,
	cdc codec.BinaryCodec,
	height exported.Height,
	delayTimePeriod uint64,
	delayBlockPeriod uint64,
	proof []byte,
	path exported.Path,
) error

VerifyNonMembership is a generic proof verification method which verifies the absence of a given CommitmentPath at a specified height. The caller is expected to construct the full CommitmentPath from a CommitmentPrefix and a standardized path (as defined in ICS 24).

func (ClientState) VerifyUpgradeAndUpdateState

func (cs ClientState) VerifyUpgradeAndUpdateState(
	ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore,
	upgradedClient exported.ClientState, upgradedConsState exported.ConsensusState,
	proofUpgradeClient, proofUpgradeConsState []byte,
) error

func (*ClientState) XXX_DiscardUnknown

func (m *ClientState) XXX_DiscardUnknown()

func (*ClientState) XXX_Marshal

func (m *ClientState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ClientState) XXX_Merge

func (m *ClientState) XXX_Merge(src proto.Message)

func (*ClientState) XXX_Size

func (m *ClientState) XXX_Size() int

func (*ClientState) XXX_Unmarshal

func (m *ClientState) XXX_Unmarshal(b []byte) error

func (ClientState) ZeroCustomFields

func (cs ClientState) ZeroCustomFields() exported.ClientState

Utility function that zeroes out any client customizable fields in client state Ledger enforced fields are maintained while all custom fields are zero values Used to verify upgrades

type CommitmentContext added in v0.2.1

type CommitmentContext interface {
	Validate(time.Time) error
}

CommitmentContext is the interface for the context of a commitment.

func EthABIDecodeCommitmentContext added in v0.2.1

func EthABIDecodeCommitmentContext(bz []byte) (CommitmentContext, error)

type CommitmentProof added in v0.2.0

type CommitmentProof struct {
	CommitmentBytes []byte
	Signer          common.Address
	Signature       []byte
}

func EthABIDecodeCommitmentProof added in v0.2.0

func EthABIDecodeCommitmentProof(bz []byte) (*CommitmentProof, error)

func (CommitmentProof) GetCommitment added in v0.2.0

func (p CommitmentProof) GetCommitment() (*HeaderedCommitment, error)

type ConsensusState

type ConsensusState struct {
	StateId []byte `protobuf:"bytes,1,opt,name=state_id,json=stateId,proto3" json:"state_id,omitempty"`
	// unix timestamp in seconds
	Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

func GetConsensusState

func GetConsensusState(store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height) (*ConsensusState, error)

GetConsensusState retrieves the consensus state from the client prefixed store. An error is returned if the consensus state does not exist.

func (ConsensusState) ClientType

func (cs ConsensusState) ClientType() string

func (*ConsensusState) Descriptor

func (*ConsensusState) Descriptor() ([]byte, []int)

func (ConsensusState) GetTimestamp

func (cs ConsensusState) GetTimestamp() uint64

GetTimestamp returns the timestamp (in nanoseconds) of the consensus state

func (*ConsensusState) Marshal

func (m *ConsensusState) Marshal() (dAtA []byte, err error)

func (*ConsensusState) MarshalTo

func (m *ConsensusState) MarshalTo(dAtA []byte) (int, error)

func (*ConsensusState) MarshalToSizedBuffer

func (m *ConsensusState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ConsensusState) ProtoMessage

func (*ConsensusState) ProtoMessage()

func (*ConsensusState) Reset

func (m *ConsensusState) Reset()

func (*ConsensusState) Size

func (m *ConsensusState) Size() (n int)

func (*ConsensusState) String

func (m *ConsensusState) String() string

func (*ConsensusState) Unmarshal

func (m *ConsensusState) Unmarshal(dAtA []byte) error

func (ConsensusState) ValidateBasic

func (cs ConsensusState) ValidateBasic() error

func (*ConsensusState) XXX_DiscardUnknown

func (m *ConsensusState) XXX_DiscardUnknown()

func (*ConsensusState) XXX_Marshal

func (m *ConsensusState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ConsensusState) XXX_Merge

func (m *ConsensusState) XXX_Merge(src proto.Message)

func (*ConsensusState) XXX_Size

func (m *ConsensusState) XXX_Size() int

func (*ConsensusState) XXX_Unmarshal

func (m *ConsensusState) XXX_Unmarshal(b []byte) error

type HeaderedCommitment added in v0.2.0

type HeaderedCommitment struct {
	Version    uint16
	Type       uint16
	Commitment []byte
}

func EthABIDecodeHeaderedCommitment added in v0.2.0

func EthABIDecodeHeaderedCommitment(bz []byte) (*HeaderedCommitment, error)

func (HeaderedCommitment) GetStateCommitment added in v0.2.0

func (c HeaderedCommitment) GetStateCommitment() (*StateCommitment, error)

func (HeaderedCommitment) GetUpdateClientCommitment added in v0.2.0

func (c HeaderedCommitment) GetUpdateClientCommitment() (*UpdateClientCommitment, error)

type NoneCommitmentContext added in v0.2.1

type NoneCommitmentContext struct{}

NoneCommitmentContext is the commitment context for a commitment that does not require any validation.

func (NoneCommitmentContext) Validate added in v0.2.1

type RegisterEnclaveKeyMessage added in v0.2.0

type RegisterEnclaveKeyMessage struct {
	Report      string `protobuf:"bytes,1,opt,name=report,proto3" json:"report,omitempty"`
	Signature   []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
	SigningCert []byte `protobuf:"bytes,3,opt,name=signing_cert,json=signingCert,proto3" json:"signing_cert,omitempty"`
}

func (RegisterEnclaveKeyMessage) ClientType added in v0.2.0

func (RegisterEnclaveKeyMessage) ClientType() string

func (*RegisterEnclaveKeyMessage) Descriptor added in v0.2.0

func (*RegisterEnclaveKeyMessage) Descriptor() ([]byte, []int)

func (RegisterEnclaveKeyMessage) GetHeight added in v0.2.0

func (*RegisterEnclaveKeyMessage) Marshal added in v0.2.0

func (m *RegisterEnclaveKeyMessage) Marshal() (dAtA []byte, err error)

func (*RegisterEnclaveKeyMessage) MarshalTo added in v0.2.0

func (m *RegisterEnclaveKeyMessage) MarshalTo(dAtA []byte) (int, error)

func (*RegisterEnclaveKeyMessage) MarshalToSizedBuffer added in v0.2.0

func (m *RegisterEnclaveKeyMessage) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*RegisterEnclaveKeyMessage) ProtoMessage added in v0.2.0

func (*RegisterEnclaveKeyMessage) ProtoMessage()

func (*RegisterEnclaveKeyMessage) Reset added in v0.2.0

func (m *RegisterEnclaveKeyMessage) Reset()

func (*RegisterEnclaveKeyMessage) Size added in v0.2.0

func (m *RegisterEnclaveKeyMessage) Size() (n int)

func (*RegisterEnclaveKeyMessage) String added in v0.2.0

func (m *RegisterEnclaveKeyMessage) String() string

func (*RegisterEnclaveKeyMessage) Unmarshal added in v0.2.0

func (m *RegisterEnclaveKeyMessage) Unmarshal(dAtA []byte) error

func (RegisterEnclaveKeyMessage) ValidateBasic added in v0.2.0

func (RegisterEnclaveKeyMessage) ValidateBasic() error

func (*RegisterEnclaveKeyMessage) XXX_DiscardUnknown added in v0.2.0

func (m *RegisterEnclaveKeyMessage) XXX_DiscardUnknown()

func (*RegisterEnclaveKeyMessage) XXX_Marshal added in v0.2.0

func (m *RegisterEnclaveKeyMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RegisterEnclaveKeyMessage) XXX_Merge added in v0.2.0

func (m *RegisterEnclaveKeyMessage) XXX_Merge(src proto.Message)

func (*RegisterEnclaveKeyMessage) XXX_Size added in v0.2.0

func (m *RegisterEnclaveKeyMessage) XXX_Size() int

func (*RegisterEnclaveKeyMessage) XXX_Unmarshal added in v0.2.0

func (m *RegisterEnclaveKeyMessage) XXX_Unmarshal(b []byte) error

type StateCommitment

type StateCommitment struct {
	Prefix  []byte
	Path    []byte
	Value   [32]byte
	Height  clienttypes.Height
	StateID StateID
}

func EthABIDecodeStateCommitment added in v0.2.0

func EthABIDecodeStateCommitment(bz []byte) (*StateCommitment, error)

type StateID

type StateID [32]byte

func (StateID) EqualBytes

func (id StateID) EqualBytes(bz []byte) bool

type TrustingPeriodCommitmentContext added in v0.2.1

type TrustingPeriodCommitmentContext struct {
	UntrustedHeaderTimestamp time.Time
	TrustedStateTimestamp    time.Time
	TrustingPeriod           big.Int
	ClockDrift               big.Int
}

TrustingPeriodCommitmentContext is the commitment context for a commitment that requires the current time to be within the trusting period.

func DecodeTrustingPeriodCommitmentContext added in v0.2.1

func DecodeTrustingPeriodCommitmentContext(timestamps, params [32]byte) *TrustingPeriodCommitmentContext

func EthABIDecodeTrustingPeriodCommitmentContext added in v0.2.1

func EthABIDecodeTrustingPeriodCommitmentContext(bz []byte) (*TrustingPeriodCommitmentContext, error)

func (TrustingPeriodCommitmentContext) Validate added in v0.2.1

type UpdateClientCommitment

type UpdateClientCommitment struct {
	PrevStateID *StateID
	NewStateID  StateID
	NewState    []byte
	PrevHeight  *clienttypes.Height
	NewHeight   clienttypes.Height
	Timestamp   *big.Int
	Context     CommitmentContext
}

func EthABIDecodeUpdateClientCommitment added in v0.2.0

func EthABIDecodeUpdateClientCommitment(bz []byte) (*UpdateClientCommitment, error)

type UpdateClientMessage added in v0.2.0

type UpdateClientMessage struct {
	Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"`
	Signer     []byte `protobuf:"bytes,2,opt,name=signer,proto3" json:"signer,omitempty"`
	Signature  []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"`
}

func (UpdateClientMessage) ClientType added in v0.2.0

func (UpdateClientMessage) ClientType() string

func (*UpdateClientMessage) Descriptor added in v0.2.0

func (*UpdateClientMessage) Descriptor() ([]byte, []int)

func (UpdateClientMessage) GetCommitment added in v0.2.0

func (h UpdateClientMessage) GetCommitment() (*UpdateClientCommitment, error)

func (UpdateClientMessage) GetHeight added in v0.2.0

func (m UpdateClientMessage) GetHeight() exported.Height

func (*UpdateClientMessage) Marshal added in v0.2.0

func (m *UpdateClientMessage) Marshal() (dAtA []byte, err error)

func (*UpdateClientMessage) MarshalTo added in v0.2.0

func (m *UpdateClientMessage) MarshalTo(dAtA []byte) (int, error)

func (*UpdateClientMessage) MarshalToSizedBuffer added in v0.2.0

func (m *UpdateClientMessage) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*UpdateClientMessage) ProtoMessage added in v0.2.0

func (*UpdateClientMessage) ProtoMessage()

func (*UpdateClientMessage) Reset added in v0.2.0

func (m *UpdateClientMessage) Reset()

func (*UpdateClientMessage) Size added in v0.2.0

func (m *UpdateClientMessage) Size() (n int)

func (*UpdateClientMessage) String added in v0.2.0

func (m *UpdateClientMessage) String() string

func (*UpdateClientMessage) Unmarshal added in v0.2.0

func (m *UpdateClientMessage) Unmarshal(dAtA []byte) error

func (UpdateClientMessage) ValidateBasic added in v0.2.0

func (m UpdateClientMessage) ValidateBasic() error

func (*UpdateClientMessage) XXX_DiscardUnknown added in v0.2.0

func (m *UpdateClientMessage) XXX_DiscardUnknown()

func (*UpdateClientMessage) XXX_Marshal added in v0.2.0

func (m *UpdateClientMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*UpdateClientMessage) XXX_Merge added in v0.2.0

func (m *UpdateClientMessage) XXX_Merge(src proto.Message)

func (*UpdateClientMessage) XXX_Size added in v0.2.0

func (m *UpdateClientMessage) XXX_Size() int

func (*UpdateClientMessage) XXX_Unmarshal added in v0.2.0

func (m *UpdateClientMessage) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL