types

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: Apache-2.0 Imports: 27 Imported by: 1

Documentation

Index

Constants

View Source
const (
	ModuleName    = "lcp"
	ClientTypeLCP = "lcp-client"
	MrenclaveSize = 32
)
View Source
const (
	EventTypeRegisteredEnclaveKey = "registered_enclave_key"

	AttributeKeyEnclaveKey = "enclave_key"
	AttributeExpiredAt     = "expired_at"
)
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"
)
View Source
const (
	LCPMessageVersion          = 1
	LCPMessageTypeUpdateState  = 1
	LCPMessageTypeState        = 2
	LCPMessageTypeMisbehaviour = 3
)
View Source
const (
	LCPMessageContextTypeEmpty          = 0
	LCPMessageContextTypeTrustingPeriod = 1
)

Variables

View Source
var (
	ErrInvalidStateCommitment      = errorsmod.Register(ModuleName, 1, "invalid state commitment")
	ErrInvalidStateCommitmentProof = errorsmod.Register(ModuleName, 2, "invalid state commitment proof")
	ErrExpiredEnclaveKey           = errorsmod.Register(ModuleName, 3, "enclave key has expired")
	ErrProcessedTimeNotFound       = errorsmod.Register(ModuleName, 4, "processed time not found")
	ErrProcessedHeightNotFound     = errorsmod.Register(ModuleName, 5, "processed height not found")
	ErrDelayPeriodNotPassed        = errorsmod.Register(ModuleName, 6, "packet-specified delay period has not been reached")
	ErrInvalidMisbehaviour         = errorsmod.Register(ModuleName, 7, "invalid misbehaviour")
)
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

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

func GetProcessedHeight

func GetProcessedHeight(clientStore storetypes.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 storetypes.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 storetypes.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 storetypes.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 {
	Mrenclave     []byte       `protobuf:"bytes,1,opt,name=mrenclave,proto3" json:"mrenclave,omitempty"`
	KeyExpiration uint64       `protobuf:"varint,2,opt,name=key_expiration,json=keyExpiration,proto3" json:"key_expiration,omitempty"`
	Frozen        bool         `protobuf:"varint,3,opt,name=frozen,proto3" json:"frozen,omitempty"`
	LatestHeight  types.Height `protobuf:"bytes,4,opt,name=latest_height,json=latestHeight,proto3" json:"latest_height"`
	// e.g. SW_HARDENING_NEEDED, CONFIGURATION_AND_SW_HARDENING_NEEDED (except "OK")
	AllowedQuoteStatuses []string `protobuf:"bytes,5,rep,name=allowed_quote_statuses,json=allowedQuoteStatuses,proto3" json:"allowed_quote_statuses,omitempty"`
	// e.g. INTEL-SA-XXXXX
	AllowedAdvisoryIds []string `protobuf:"bytes,6,rep,name=allowed_advisory_ids,json=allowedAdvisoryIds,proto3" json:"allowed_advisory_ids,omitempty"`
}

func (ClientState) AddEnclaveKey

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

func (ClientState) CheckForMisbehaviour

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

func (ClientState) CheckSubstituteAndUpdateState

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

func (ClientState) ClientType

func (cs ClientState) ClientType() string

func (ClientState) Contains

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

func (*ClientState) Descriptor

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

func (ClientState) ExportMetadata

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

Genesis function

func (ClientState) GetEnclaveKeyExpiredAt added in v0.1.6

func (cs ClientState) GetEnclaveKeyExpiredAt(clientStore storetypes.KVStore, key common.Address) (time.Time, bool)

func (ClientState) GetLatestHeight

func (cs ClientState) GetLatestHeight() exported.Height

func (ClientState) GetTimestampAtHeight

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

func (ClientState) Initialize

func (cs ClientState) Initialize(_ sdk.Context, cdc codec.BinaryCodec, clientStore storetypes.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 storetypes.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 storetypes.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

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

func (ClientState) UpdateStateOnMisbehaviour

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

func (ClientState) Validate

func (cs ClientState) Validate() error

func (ClientState) VerifyClientMessage

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

func (ClientState) VerifyMembership

func (cs ClientState) VerifyMembership(
	ctx sdk.Context,
	clientStore storetypes.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 storetypes.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 storetypes.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 CommitmentProof

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

func EthABIDecodeCommitmentProof

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

func (CommitmentProof) GetMessage added in v0.1.14

func (p CommitmentProof) GetMessage() (*HeaderedProxyMessage, 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 storetypes.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 ELCVerifyMembershipMessage added in v0.1.11

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

func EthABIDecodeVerifyMembershipProxyMessage added in v0.1.14

func EthABIDecodeVerifyMembershipProxyMessage(bz []byte) (*ELCVerifyMembershipMessage, error)

type EmittedState added in v0.1.11

type EmittedState struct {
	Height clienttypes.Height
	State  codectypes.Any
}

type EmptyValidationContext added in v0.1.11

type EmptyValidationContext struct{}

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

func (EmptyValidationContext) Validate added in v0.1.11

type HeaderedProxyMessage added in v0.1.14

type HeaderedProxyMessage struct {
	Version uint16
	Type    uint16
	Message []byte
}

func EthABIDecodeHeaderedProxyMessage added in v0.1.14

func EthABIDecodeHeaderedProxyMessage(bz []byte) (*HeaderedProxyMessage, error)

func (HeaderedProxyMessage) GetMisbehaviourProxyMessage added in v0.1.14

func (c HeaderedProxyMessage) GetMisbehaviourProxyMessage() (*MisbehaviourProxyMessage, error)

func (HeaderedProxyMessage) GetUpdateStateProxyMessage added in v0.1.14

func (c HeaderedProxyMessage) GetUpdateStateProxyMessage() (*UpdateStateProxyMessage, error)

func (HeaderedProxyMessage) GetVerifyMembershipProxyMessage added in v0.1.14

func (c HeaderedProxyMessage) GetVerifyMembershipProxyMessage() (*ELCVerifyMembershipMessage, error)

type MisbehaviourProxyMessage added in v0.1.14

type MisbehaviourProxyMessage struct {
	PrevStates []struct {
		Height  clienttypes.Height
		StateID StateID
	}
	Context       ValidationContext
	ClientMessage []byte
}

func EthABIDecodeMisbehaviourProxyMessage added in v0.1.14

func EthABIDecodeMisbehaviourProxyMessage(bz []byte) (*MisbehaviourProxyMessage, error)

type ProxyMessage added in v0.1.14

type ProxyMessage interface{}

type RegisterEnclaveKeyMessage

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

func (RegisterEnclaveKeyMessage) ClientType() string

func (*RegisterEnclaveKeyMessage) Descriptor

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

func (*RegisterEnclaveKeyMessage) Marshal

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

func (*RegisterEnclaveKeyMessage) MarshalTo

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

func (*RegisterEnclaveKeyMessage) MarshalToSizedBuffer

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

func (*RegisterEnclaveKeyMessage) ProtoMessage

func (*RegisterEnclaveKeyMessage) ProtoMessage()

func (*RegisterEnclaveKeyMessage) Reset

func (m *RegisterEnclaveKeyMessage) Reset()

func (*RegisterEnclaveKeyMessage) Size

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

func (*RegisterEnclaveKeyMessage) String

func (m *RegisterEnclaveKeyMessage) String() string

func (*RegisterEnclaveKeyMessage) Unmarshal

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

func (RegisterEnclaveKeyMessage) ValidateBasic

func (RegisterEnclaveKeyMessage) ValidateBasic() error

func (*RegisterEnclaveKeyMessage) XXX_DiscardUnknown

func (m *RegisterEnclaveKeyMessage) XXX_DiscardUnknown()

func (*RegisterEnclaveKeyMessage) XXX_Marshal

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

func (*RegisterEnclaveKeyMessage) XXX_Merge

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

func (*RegisterEnclaveKeyMessage) XXX_Size

func (m *RegisterEnclaveKeyMessage) XXX_Size() int

func (*RegisterEnclaveKeyMessage) XXX_Unmarshal

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

type StateID

type StateID [32]byte

func (StateID) EqualBytes

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

type TrustingPeriodValidationContext added in v0.1.11

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

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

func DecodeTrustingPeriodValidationContext added in v0.1.11

func DecodeTrustingPeriodValidationContext(timestamps, params [32]byte) *TrustingPeriodValidationContext

func EthABIDecodeTrustingPeriodValidationContext added in v0.1.11

func EthABIDecodeTrustingPeriodValidationContext(bz []byte) (*TrustingPeriodValidationContext, error)

func (TrustingPeriodValidationContext) Validate added in v0.1.11

type UpdateClientMessage

type UpdateClientMessage struct {
	ProxyMessage []byte `protobuf:"bytes,1,opt,name=proxy_message,json=proxyMessage,proto3" json:"proxy_message,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

func (UpdateClientMessage) ClientType() string

func (*UpdateClientMessage) Descriptor

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

func (UpdateClientMessage) GetHeight

func (ucm UpdateClientMessage) GetHeight() exported.Height

func (UpdateClientMessage) GetProxyMessage added in v0.1.14

func (ucm UpdateClientMessage) GetProxyMessage() (ProxyMessage, error)

func (*UpdateClientMessage) Marshal

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

func (*UpdateClientMessage) MarshalTo

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

func (*UpdateClientMessage) MarshalToSizedBuffer

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

func (*UpdateClientMessage) ProtoMessage

func (*UpdateClientMessage) ProtoMessage()

func (*UpdateClientMessage) Reset

func (m *UpdateClientMessage) Reset()

func (*UpdateClientMessage) Size

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

func (*UpdateClientMessage) String

func (m *UpdateClientMessage) String() string

func (*UpdateClientMessage) Unmarshal

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

func (UpdateClientMessage) ValidateBasic

func (ucm UpdateClientMessage) ValidateBasic() error

func (*UpdateClientMessage) XXX_DiscardUnknown

func (m *UpdateClientMessage) XXX_DiscardUnknown()

func (*UpdateClientMessage) XXX_Marshal

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

func (*UpdateClientMessage) XXX_Merge

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

func (*UpdateClientMessage) XXX_Size

func (m *UpdateClientMessage) XXX_Size() int

func (*UpdateClientMessage) XXX_Unmarshal

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

type UpdateStateProxyMessage added in v0.1.14

type UpdateStateProxyMessage struct {
	PrevHeight    *clienttypes.Height
	PrevStateID   *StateID
	PostHeight    clienttypes.Height
	PostStateID   StateID
	Timestamp     *big.Int
	Context       ValidationContext
	EmittedStates []EmittedState
}

func EthABIDecodeUpdateStateProxyMessage added in v0.1.14

func EthABIDecodeUpdateStateProxyMessage(bz []byte) (*UpdateStateProxyMessage, error)

type ValidationContext added in v0.1.11

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

ValidationContext is the interface of validation context.

func EthABIDecodeValidationContext added in v0.1.11

func EthABIDecodeValidationContext(bz []byte) (ValidationContext, error)

Jump to

Keyboard shortcuts

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