protocol

package
v0.0.0-...-817dee4 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2024 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalculateNodeScore

func CalculateNodeScore(goodResponses, badResponses int) float64

func GenerateChallenge

func GenerateChallenge() []byte

func MarshalRegistryEntry

func MarshalRegistryEntry(pk []byte, data []byte, revision uint64) []byte

func MarshalSignedRegistryEntry

func MarshalSignedRegistryEntry(sre SignedRegistryEntry) []byte

func RegisterMessageType

func RegisterMessageType(messageType int, factoryFunc func() IncomingMessage)

func RegisterProtocols

func RegisterProtocols()

func RegisterSignedMessageType

func RegisterSignedMessageType(messageType int, factoryFunc func() IncomingMessageSigned)

func RegisterSignedProtocols

func RegisterSignedProtocols()

func VerifyRegistryEntry

func VerifyRegistryEntry(sre SignedRegistryEntry) bool

Types

type AnnouncePeers

type AnnouncePeers struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewAnnouncePeers

func NewAnnouncePeers() *AnnouncePeers

func NewAnnounceRequest

func NewAnnounceRequest(peer net.Peer, peersToSend []net.Peer) *AnnouncePeers

func (*AnnouncePeers) DecodeMessage

func (a *AnnouncePeers) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageDataSigned) error

func (AnnouncePeers) EncodeMsgpack

func (a AnnouncePeers) EncodeMsgpack(enc *msgpack.Encoder) error

func (AnnouncePeers) HandleMessage

func (a AnnouncePeers) HandleMessage(message IncomingMessageDataSigned) error

func (*AnnouncePeers) PeersToSend

func (a *AnnouncePeers) PeersToSend() []net.Peer

func (*AnnouncePeers) SetPeersToSend

func (a *AnnouncePeers) SetPeersToSend(peersToSend []net.Peer)

type EncodeableMessage

type EncodeableMessage interface {
	msgpack.CustomEncoder
}

type HandshakeDone

type HandshakeDone struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewHandshakeDone

func NewHandshakeDone() *HandshakeDone

func NewHandshakeDoneRequest

func NewHandshakeDoneRequest(handshake []byte, supportedFeatures int, connectionUris []*url.URL) *HandshakeDone

func (*HandshakeDone) DecodeMessage

func (h *HandshakeDone) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageDataSigned) error

func (HandshakeDone) EncodeMsgpack

func (m HandshakeDone) EncodeMsgpack(enc *msgpack.Encoder) error

func (HandshakeDone) HandleMessage

func (h HandshakeDone) HandleMessage(message IncomingMessageDataSigned) error

func (*HandshakeDone) SetChallenge

func (m *HandshakeDone) SetChallenge(challenge []byte)

func (*HandshakeDone) SetNetworkId

func (m *HandshakeDone) SetNetworkId(networkId string)

type HandshakeOpen

type HandshakeOpen struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewHandshakeOpen

func NewHandshakeOpen(challenge []byte, networkId string) *HandshakeOpen

func (HandshakeOpen) Challenge

func (h HandshakeOpen) Challenge() []byte

func (*HandshakeOpen) DecodeMessage

func (h *HandshakeOpen) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error

func (HandshakeOpen) EncodeMsgpack

func (h HandshakeOpen) EncodeMsgpack(enc *msgpack.Encoder) error

func (*HandshakeOpen) HandleMessage

func (h *HandshakeOpen) HandleMessage(message IncomingMessageData) error

func (HandshakeOpen) NetworkId

func (h HandshakeOpen) NetworkId() string

func (*HandshakeOpen) SetHandshake

func (h *HandshakeOpen) SetHandshake(handshake []byte)

type HandshakeRequirement

type HandshakeRequirement struct {
	// contains filtered or unexported fields
}

func (*HandshakeRequirement) RequiresHandshake

func (hr *HandshakeRequirement) RequiresHandshake() bool

func (*HandshakeRequirement) SetRequiresHandshake

func (hr *HandshakeRequirement) SetRequiresHandshake(value bool)

type HandshakeRequirer

type HandshakeRequirer interface {
	RequiresHandshake() bool
	SetRequiresHandshake(value bool)
}

type HashQuery

type HashQuery struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewHashQuery

func NewHashQuery() *HashQuery

func NewHashRequest

func NewHashRequest(hash *encoding.Multihash, kinds []types.StorageLocationType) *HashQuery

func (*HashQuery) DecodeMessage

func (h *HashQuery) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error

func (HashQuery) EncodeMsgpack

func (h HashQuery) EncodeMsgpack(enc *msgpack.Encoder) error

func (*HashQuery) HandleMessage

func (h *HashQuery) HandleMessage(message IncomingMessageData) error

func (HashQuery) Hash

func (h HashQuery) Hash() *encoding.Multihash

func (HashQuery) Kinds

func (h HashQuery) Kinds() []types.StorageLocationType

type IncomingMessage

type IncomingMessage interface {
	HandleMessage(message IncomingMessageData) error
	DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error
	HandshakeRequirer
}

func GetMessageType

func GetMessageType(kind int) (IncomingMessage, bool)

type IncomingMessageData

type IncomingMessageData struct {
	Original []byte
	Data     []byte
	Ctx      context.Context
	Logger   *zap.Logger
	Peer     net.Peer
	Config   *config.NodeConfig
	VerifyId bool
	Mediator Mediator
}

type IncomingMessageDataSigned

type IncomingMessageDataSigned struct {
	IncomingMessageData
	NodeId *encoding.NodeId
}

type IncomingMessageReader

type IncomingMessageReader struct {
	Kind int
	Data []byte
}

func (*IncomingMessageReader) DecodeMsgpack

func (i *IncomingMessageReader) DecodeMsgpack(dec *msgpack.Decoder) error

type IncomingMessageSigned

type IncomingMessageSigned interface {
	HandleMessage(message IncomingMessageDataSigned) error
	DecodeMessage(dec *msgpack.Decoder, message IncomingMessageDataSigned) error
	HandshakeRequirer
}

func GetSignedMessageType

func GetSignedMessageType(kind int) (IncomingMessageSigned, bool)

type Mediator

type Mediator interface {
	NetworkId() string
	NodeId() *encoding.NodeId
	SelfConnectionUris() []*url.URL
	SignMessageSimple(message []byte) ([]byte, error)
	GetCachedStorageLocations(hash *encoding.Multihash, kinds []types.StorageLocationType) (map[string]storage.StorageLocation, error)
	SortNodesByScore(nodes []*encoding.NodeId) ([]*encoding.NodeId, error)
	ProviderStore() storage.ProviderStore
	AddStorageLocation(hash *encoding.Multihash, nodeId *encoding.NodeId, location storage.StorageLocation, message []byte) error
	HashQueryRoutingTable() structs.Map
	Peers() structs.Map
	RegistrySet(sre SignedRegistryEntry, trusted bool, receivedFrom net.Peer) error
	RegistryGet(pk []byte) (SignedRegistryEntry, error)
	ConnectToNode(connectionUris []*url.URL, retried bool, fromPeer net.Peer) error
	ServicesStarted() bool
	AddPeer(peer net.Peer) error
	SendPublicPeersToPeer(peer net.Peer, peersToSend []net.Peer) error
}

type RegistryEntry

type RegistryEntry interface {
	Sign() SignedRegistryEntry
}

func NewRegistryEntry

func NewRegistryEntry(kp ed25519.KeyPairEd25519, data []byte, revision uint64) RegistryEntry

type RegistryEntryImpl

type RegistryEntryImpl struct {
	// contains filtered or unexported fields
}

func (*RegistryEntryImpl) Sign

type RegistryEntryRequest

type RegistryEntryRequest struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewEmptyRegistryEntryRequest

func NewEmptyRegistryEntryRequest() *RegistryEntryRequest

func NewRegistryEntryRequest

func NewRegistryEntryRequest(sre SignedRegistryEntry) *RegistryEntryRequest

func (*RegistryEntryRequest) DecodeMessage

func (s *RegistryEntryRequest) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error

func (*RegistryEntryRequest) EncodeMsgpack

func (s *RegistryEntryRequest) EncodeMsgpack(enc *msgpack.Encoder) error

func (*RegistryEntryRequest) HandleMessage

func (s *RegistryEntryRequest) HandleMessage(message IncomingMessageData) error

type RegistryQuery

type RegistryQuery struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewEmptyRegistryQuery

func NewEmptyRegistryQuery() *RegistryQuery

func NewRegistryQuery

func NewRegistryQuery(pk []byte) *RegistryQuery

func (*RegistryQuery) DecodeMessage

func (s *RegistryQuery) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error

func (*RegistryQuery) EncodeMsgpack

func (s *RegistryQuery) EncodeMsgpack(enc *msgpack.Encoder) error

func (*RegistryQuery) HandleMessage

func (s *RegistryQuery) HandleMessage(message IncomingMessageData) error

type SignedMessage

type SignedMessage struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewSignedMessage

func NewSignedMessage() *SignedMessage

func NewSignedMessageRequest

func NewSignedMessageRequest(message []byte) *SignedMessage

func (*SignedMessage) DecodeMessage

func (s *SignedMessage) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error

func (*SignedMessage) EncodeMsgpack

func (s *SignedMessage) EncodeMsgpack(enc *msgpack.Encoder) error

func (*SignedMessage) HandleMessage

func (s *SignedMessage) HandleMessage(message IncomingMessageData) error

func (*SignedMessage) NodeId

func (s *SignedMessage) NodeId() *encoding.NodeId

func (*SignedMessage) SetMessage

func (s *SignedMessage) SetMessage(message []byte)

func (*SignedMessage) SetNodeId

func (s *SignedMessage) SetNodeId(nodeId *encoding.NodeId)

func (*SignedMessage) SetSignature

func (s *SignedMessage) SetSignature(signature []byte)

func (*SignedMessage) Sign

func (s *SignedMessage) Sign(cfg *config.NodeConfig) error

type SignedRegistryEntry

type SignedRegistryEntry interface {
	PK() []byte
	Revision() uint64
	Data() []byte
	Signature() []byte
	SetPK(pk []byte)
	SetRevision(revision uint64)
	SetData(data []byte)
	SetSignature(signature []byte)
	Verify() bool
}

func NewSignedRegistryEntry

func NewSignedRegistryEntry(pk []byte, revision uint64, data []byte, signature []byte) SignedRegistryEntry

func SignRegistryEntry

func SignRegistryEntry(kp ed25519.KeyPairEd25519, data []byte, revision uint64) SignedRegistryEntry

func UnmarshalSignedRegistryEntry

func UnmarshalSignedRegistryEntry(event []byte) (sre SignedRegistryEntry, err error)

type SignedRegistryEntryImpl

type SignedRegistryEntryImpl struct {
	// contains filtered or unexported fields
}

func (*SignedRegistryEntryImpl) Data

func (s *SignedRegistryEntryImpl) Data() []byte

func (*SignedRegistryEntryImpl) PK

func (s *SignedRegistryEntryImpl) PK() []byte

func (*SignedRegistryEntryImpl) Revision

func (s *SignedRegistryEntryImpl) Revision() uint64

func (*SignedRegistryEntryImpl) SetData

func (s *SignedRegistryEntryImpl) SetData(data []byte)

func (*SignedRegistryEntryImpl) SetPK

func (s *SignedRegistryEntryImpl) SetPK(pk []byte)

func (*SignedRegistryEntryImpl) SetRevision

func (s *SignedRegistryEntryImpl) SetRevision(revision uint64)

func (*SignedRegistryEntryImpl) SetSignature

func (s *SignedRegistryEntryImpl) SetSignature(signature []byte)

func (*SignedRegistryEntryImpl) Signature

func (s *SignedRegistryEntryImpl) Signature() []byte

func (*SignedRegistryEntryImpl) Verify

func (s *SignedRegistryEntryImpl) Verify() bool

type StorageLocation

type StorageLocation struct {
	HandshakeRequirement
	// contains filtered or unexported fields
}

func NewStorageLocation

func NewStorageLocation() *StorageLocation

func (*StorageLocation) DecodeMessage

func (s *StorageLocation) DecodeMessage(dec *msgpack.Decoder, message IncomingMessageData) error

func (*StorageLocation) HandleMessage

func (s *StorageLocation) HandleMessage(message IncomingMessageData) error

Jump to

Keyboard shortcuts

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