protoext

package
v0.0.0-...-e3e94bd Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AliveMessageToString

func AliveMessageToString(am *pbgossip.AliveMessage) string

func ConnEstablishToString

func ConnEstablishToString(ce *pbgossip.ConnEstablish) string

func DataDigestToString

func DataDigestToString(dd *pbgossip.DataDigest) string

func DataMessageToString

func DataMessageToString(ds *pbgossip.DataMessage) string

func DataRequestToString

func DataRequestToString(dataReq *pbgossip.DataRequest) string

func DataUpdateToString

func DataUpdateToString(du *pbgossip.DataUpdate) string

func GetPullMsgType

func GetPullMsgType(m *pbgossip.GossipMessage) pbgossip.PullMsgType

GetPullMsgType 属于 pull 机制的 GossipMessage,返回此类消息的 PullMsgType:BLOCK_MSG IDENTITY_MSG UNDEFINED。

func InternalEndpoint

func InternalEndpoint(se *pbgossip.SecretEnvelope) string

InternalEndpoint SecretEnvelope.Payload 存储的是基于 Secret 的 protobuf 编码数据,对其进行反序列化即可获得 Secret。

func IsChannelRestricted

func IsChannelRestricted(m *pbgossip.GossipMessage) bool

IsChannelRestricted 判断给定的消息是否只在其通道 channel 内路由:

  • GossipMessage_CHAN_AND_ORG
  • GossipMessage_CHAN_ONLY
  • GossipMessage_CHAN_OR_ORG

func IsOrgRestricted

func IsOrgRestricted(m *pbgossip.GossipMessage) bool

IsOrgRestricted 判断给定的消息是否只在其组织 org 内被路由:

  • GossipMessage_CHAN_AND_ORG
  • GossipMessage_ORG_ONLY

func IsPullMsg

func IsPullMsg(m *pbgossip.GossipMessage) bool

IsPullMsg 判断给定的消息是否是以下四种消息的一种:

  • GossipHello
  • DataRequest
  • DataUpdate
  • DataDigest

func IsTagLegal

func IsTagLegal(m *pbgossip.GossipMessage) error

func LeadershipMessageToString

func LeadershipMessageToString(lm *pbgossip.LeadershipMessage) string

func MemberToString

func MemberToString(m *pbgossip.Membership) string

func MembershipRequestToString

func MembershipRequestToString(mr *pbgossip.MembershipRequest) string

func MembershipResponseToString

func MembershipResponseToString(mr *pbgossip.MembershipResponse) string

func NewGossipMessageComparator

func NewGossipMessageComparator(dataBlockStorageSize int) common.MessageReplacingPolicy

NewGossipMessageComparator 返回的不是一个结构体,而是一个函数,用于比较两个 gossip 消息。

func PayloadToString

func PayloadToString(payload *pbgossip.Payload) string

func RemotePvtDataResponseToString

func RemotePvtDataResponseToString(res *pbgossip.RemotePvtDataResponse) string

func SignSecret

func SignSecret(envelope *pbgossip.Envelope, signer SignerFunc, secret *pbgossip.Secret) error

SignSecret 对秘密消息 Secret 进行签名,并将签名结果填充到 Envelope 的 SecretEnvelope 里。

func StateInfoPullRequestToString

func StateInfoPullRequestToString(sipr *pbgossip.StateInfoPullRequest) string

func StateInfoSnapshotToString

func StateInfoSnapshotToString(sis *pbgossip.StateInfoSnapshot) string

func StateInfoToString

func StateInfoToString(si *pbgossip.StateInfo) string

Types

type AuthInfo

type AuthInfo struct {
	SignedData []byte
	Signature  []byte
}

AuthInfo 用签名作为认证数据,包括被签署的消息和签名。

type ConnectionInfo

type ConnectionInfo struct {
	PKIid    common.PKIid
	Auth     *AuthInfo
	Identity api.PeerIdentity
	Endpoint string
}

ConnectionInfo 表示发送消息的 peer 节点的信息。

func (*ConnectionInfo) String

func (c *ConnectionInfo) String() string

type ReceivedMessage

type ReceivedMessage interface {
	// Respond 给发送消息的节点回复消息。
	Respond(msg *pbgossip.GossipMessage)

	GetSignedGossipMessage() *SignedGossipMessage

	GetEnvelope() *pbgossip.Envelope

	GetConnectionInfo() *ConnectionInfo

	// 给发送消息的节点一个响应。
	Ack(err error)
}

ReceivedMessage 是一种对 GossipMessage 的包装器,该包装器可以让用户向发送消息的节点回复消息, 同时它允许用户获晓发送方节点的信息。

type SignedGossipMessage

type SignedGossipMessage struct {
	Envelope      *pbgossip.Envelope
	GossipMessage *pbgossip.GossipMessage
}

func EnvelopeToSignedGossipMessage

func EnvelopeToSignedGossipMessage(envelope *pbgossip.Envelope) (*SignedGossipMessage, error)

EnvelopeToSignedGossipMessage Envelope.Payload 存储的是基于 GossipMessage 的 protobuf 编码数据,对其进行反序列化即可获得 GossipMessage。

func NoopSign

NoopSign 构建 SignedGossipMessage 结构体:

type SignedGossipMessage struct {
	Envelope      *pbgossip.Envelope
	GossipMessage *pbgossip.GossipMessage
}

所构建的结构体中,GossipMessage 就是 NoopSign 函数给定的 GossipMessage 参数,原封不动; 而 Envelope 则是通过实例化得来的,Envelope 结构体中定义了三个字段:Payload、Signature、SecretEnvelope, NoopSign 函数只会计算其中的 Payload 字段的值,即 proto.Marshal(给定的 GossipMessage),对于 Signature 和 SecretEnvelope 两个字段,则直接将其设置为空。

func (*SignedGossipMessage) IsSigned

func (sgm *SignedGossipMessage) IsSigned() bool

IsSigned 返回 SignedGossipMessage 里的 Envelope 是否有签名。

func (*SignedGossipMessage) Sign

func (sgm *SignedGossipMessage) Sign(signer SignerFunc) (*pbgossip.Envelope, error)

Sign:

  1. payload = proto.Marshal(sgm.GossipMessage)
  2. signature = signer(payload)
  3. 重组 Envelope:Envelope{payload, signature}

func (*SignedGossipMessage) String

func (sgm *SignedGossipMessage) String() string

func (*SignedGossipMessage) Verify

func (sgm *SignedGossipMessage) Verify(peerIdentity []byte, verify VerifierFunc) error

type SignerFunc

type SignerFunc func(msg []byte) ([]byte, error)

SignerFunc 给定一个消息 msg,对其进行签名,得到签名。

type VerifierFunc

type VerifierFunc func(peerIdentity api.PeerIdentity, signature []byte, message []byte) error

VerifierFunc 根据给定的 peer 身份验证签名的正确性。

Jump to

Keyboard shortcuts

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