types

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 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 (
	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 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 SetConsensusState

func SetConsensusState(clientStore sdk.KVStore, cdc codec.BinaryCodec, consensusState *ConsensusState, height exported.Height)

SetConsensusState stores the consensus state at the given height.

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"`
	Keys          [][]byte     `protobuf:"bytes,4,rep,name=keys,proto3" json:"keys,omitempty"`
	// unix timestamp in seconds
	AttestationTimes []uint64 `protobuf:"varint,5,rep,packed,name=attestation_times,json=attestationTimes,proto3" json:"attestation_times,omitempty"`
	// e.g. SW_HARDENING_NEEDED, CONFIGURATION_AND_SW_HARDENING_NEEDED (except "OK")
	AllowedQuoteStatuses []string `protobuf:"bytes,6,rep,name=allowed_quote_statuses,json=allowedQuoteStatuses,proto3" json:"allowed_quote_statuses,omitempty"`
	// e.g. INTEL-SA-XXXXX
	AllowedAdvisoryIds []string `protobuf:"bytes,7,rep,name=allowed_advisory_ids,json=allowedAdvisoryIds,proto3" json:"allowed_advisory_ids,omitempty"`
}

func (ClientState) CheckHeaderAndUpdateForRegisterEnclaveKey

func (cs ClientState) CheckHeaderAndUpdateForRegisterEnclaveKey(ctx sdk.Context, cdc codec.BinaryCodec, store sdk.KVStore, header *RegisterEnclaveKeyHeader) (exported.ClientState, exported.ConsensusState, error)

func (ClientState) CheckHeaderAndUpdateForUpdateClient

func (cs ClientState) CheckHeaderAndUpdateForUpdateClient(ctx sdk.Context, cdc codec.BinaryCodec, store sdk.KVStore, header *UpdateClientHeader) (exported.ClientState, exported.ConsensusState, error)

func (ClientState) CheckHeaderAndUpdateState

func (cs ClientState) CheckHeaderAndUpdateState(ctx sdk.Context, cdc codec.BinaryCodec, store sdk.KVStore, header exported.Header) (exported.ClientState, exported.ConsensusState, error)

Update and Misbehaviour functions

func (ClientState) CheckMisbehaviourAndUpdateState

func (cs ClientState) CheckMisbehaviourAndUpdateState(_ sdk.Context, _ codec.BinaryCodec, _ sdk.KVStore, _ exported.Misbehaviour) (exported.ClientState, error)

func (ClientState) CheckSubstituteAndUpdateState

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

func (ClientState) ClientType

func (cs ClientState) ClientType() string

func (ClientState) Contains

func (cs ClientState) Contains(signer []byte) 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) Initialize

func (cs ClientState) Initialize(_ sdk.Context, _ codec.BinaryCodec, _ 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(currentTime time.Time, signer 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) Validate

func (cs ClientState) Validate() error

func (ClientState) VerifyChannelState

func (cs ClientState) VerifyChannelState(store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, prefix exported.Prefix, proof []byte, portID string, channelID string, counterpartyChannel exported.ChannelI) error

func (ClientState) VerifyClientConsensusState

func (cs ClientState) VerifyClientConsensusState(store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, counterpartyClientIdentifier string, consensusHeight exported.Height, prefix exported.Prefix, proof []byte, consensusState exported.ConsensusState) error

func (ClientState) VerifyClientState

func (cs ClientState) VerifyClientState(store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, prefix exported.Prefix, counterpartyClientIdentifier string, proof []byte, clientState exported.ClientState) error

State verification functions

func (ClientState) VerifyConnectionState

func (cs ClientState) VerifyConnectionState(store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, prefix exported.Prefix, proof []byte, connectionID string, counterpartyConnection exported.ConnectionI) error

func (ClientState) VerifyMembership

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

func (ClientState) VerifyMembershipWithContext

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

func (ClientState) VerifyNextSequenceRecv

func (cs ClientState) VerifyNextSequenceRecv(ctx sdk.Context, store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, delayTimePeriod uint64, delayBlockPeriod uint64, prefix exported.Prefix, proof []byte, portID string, channelID string, nextSequenceRecv uint64) 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 []byte,
) 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) VerifyPacketAcknowledgement

func (cs ClientState) VerifyPacketAcknowledgement(ctx sdk.Context, store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, delayTimePeriod uint64, delayBlockPeriod uint64, prefix exported.Prefix, proof []byte, portID string, channelID string, sequence uint64, acknowledgement []byte) error

func (ClientState) VerifyPacketCommitment

func (cs ClientState) VerifyPacketCommitment(ctx sdk.Context, store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, delayTimePeriod uint64, delayBlockPeriod uint64, prefix exported.Prefix, proof []byte, portID string, channelID string, sequence uint64, commitmentBytes []byte) error

func (ClientState) VerifyPacketReceiptAbsence

func (cs ClientState) VerifyPacketReceiptAbsence(ctx sdk.Context, store sdk.KVStore, cdc codec.BinaryCodec, height exported.Height, delayTimePeriod uint64, delayBlockPeriod uint64, prefix exported.Prefix, proof []byte, portID string, channelID string, sequence uint64) error

func (ClientState) VerifyUpgradeAndUpdateState

func (cs ClientState) VerifyUpgradeAndUpdateState(ctx sdk.Context, cdc codec.BinaryCodec, store sdk.KVStore, newClient exported.ClientState, newConsState exported.ConsensusState, proofUpgradeClient []byte, proofUpgradeConsState []byte) (exported.ClientState, exported.ConsensusState, error)

Upgrade functions NOTE: proof heights are not included as upgrade to a new revision is expected to pass only on the last height committed by the current revision. Clients are responsible for ensuring that the planned last height of the current revision is somehow encoded in the proof verification process. This is to ensure that no premature upgrades occur, since upgrade plans committed to by the counterparty may be cancelled or modified before the last planned height.

func (ClientState) WithNewKey

func (cs ClientState) WithNewKey(signer common.Address, attestationTime time.Time) ClientState

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 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) GetRoot

func (cs ConsensusState) GetRoot() exported.Root

GetRoot returns the commitment root of the consensus state, which is used for key-value pair verification.

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 RLPUpdateClientCommitment

type RLPUpdateClientCommitment struct {
	PrevStateID      []byte
	NewStateID       [32]byte
	NewState         []byte
	PrevHeight       []byte
	NewHeight        [16]byte
	Timestamp        [16]byte
	ValidationParams []byte
}

func (*RLPUpdateClientCommitment) ToUpdateClientCommitment

func (c *RLPUpdateClientCommitment) ToUpdateClientCommitment() (*UpdateClientCommitment, error)

type RegisterEnclaveKeyHeader

type RegisterEnclaveKeyHeader 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 (RegisterEnclaveKeyHeader) ClientType

func (h RegisterEnclaveKeyHeader) ClientType() string

func (*RegisterEnclaveKeyHeader) Descriptor

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

func (RegisterEnclaveKeyHeader) GetHeight

NOTE: `GetHeight` will be removed in the near feature

func (*RegisterEnclaveKeyHeader) Marshal

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

func (*RegisterEnclaveKeyHeader) MarshalTo

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

func (*RegisterEnclaveKeyHeader) MarshalToSizedBuffer

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

func (*RegisterEnclaveKeyHeader) ProtoMessage

func (*RegisterEnclaveKeyHeader) ProtoMessage()

func (*RegisterEnclaveKeyHeader) Reset

func (m *RegisterEnclaveKeyHeader) Reset()

func (*RegisterEnclaveKeyHeader) Size

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

func (*RegisterEnclaveKeyHeader) String

func (m *RegisterEnclaveKeyHeader) String() string

func (*RegisterEnclaveKeyHeader) Unmarshal

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

func (RegisterEnclaveKeyHeader) ValidateBasic

func (h RegisterEnclaveKeyHeader) ValidateBasic() error

func (*RegisterEnclaveKeyHeader) XXX_DiscardUnknown

func (m *RegisterEnclaveKeyHeader) XXX_DiscardUnknown()

func (*RegisterEnclaveKeyHeader) XXX_Marshal

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

func (*RegisterEnclaveKeyHeader) XXX_Merge

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

func (*RegisterEnclaveKeyHeader) XXX_Size

func (m *RegisterEnclaveKeyHeader) XXX_Size() int

func (*RegisterEnclaveKeyHeader) XXX_Unmarshal

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

type StateCommitment

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

func ParseStateCommitment

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

type StateCommitmentProof

type StateCommitmentProof struct {
	CommitmentBytes []byte
	Signer          []byte
	Signature       []byte
}

func NewStateCommitmentProof

func NewStateCommitmentProof(commitmentBytes, signer, signature []byte) StateCommitmentProof

func ParseStateCommitmentProof

func ParseStateCommitmentProof(bz []byte) (*StateCommitmentProof, error)

func (StateCommitmentProof) GetCommitment

func (p StateCommitmentProof) GetCommitment() (*StateCommitment, error)

func (StateCommitmentProof) ToRLPBytes

func (p StateCommitmentProof) ToRLPBytes() []byte

type StateID

type StateID [32]byte

func (StateID) EqualBytes

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

type UpdateClientCommitment

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

func ParseUpdateClientCommitment

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

type UpdateClientHeader

type UpdateClientHeader 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 (UpdateClientHeader) ClientType

func (h UpdateClientHeader) ClientType() string

func (*UpdateClientHeader) Descriptor

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

func (UpdateClientHeader) GetCommitment

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

func (UpdateClientHeader) GetHeight

func (h UpdateClientHeader) GetHeight() exported.Height

NOTE: `GetHeight` will be removed in the near feature

func (*UpdateClientHeader) Marshal

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

func (*UpdateClientHeader) MarshalTo

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

func (*UpdateClientHeader) MarshalToSizedBuffer

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

func (*UpdateClientHeader) ProtoMessage

func (*UpdateClientHeader) ProtoMessage()

func (*UpdateClientHeader) Reset

func (m *UpdateClientHeader) Reset()

func (*UpdateClientHeader) Size

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

func (*UpdateClientHeader) String

func (m *UpdateClientHeader) String() string

func (*UpdateClientHeader) Unmarshal

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

func (UpdateClientHeader) ValidateBasic

func (h UpdateClientHeader) ValidateBasic() error

func (*UpdateClientHeader) XXX_DiscardUnknown

func (m *UpdateClientHeader) XXX_DiscardUnknown()

func (*UpdateClientHeader) XXX_Marshal

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

func (*UpdateClientHeader) XXX_Merge

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

func (*UpdateClientHeader) XXX_Size

func (m *UpdateClientHeader) XXX_Size() int

func (*UpdateClientHeader) XXX_Unmarshal

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

Jump to

Keyboard shortcuts

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