protoutil

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: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BlockDataHash

func BlockDataHash(data *pbcommon.BlockData) []byte

func BlockHeaderBytes

func BlockHeaderBytes(bh *pbcommon.BlockHeader) []byte

func GetChannelIDFromBlock

func GetChannelIDFromBlock(block *pbcommon.Block) (string, error)

func GetEnvelopeFromBlock

func GetEnvelopeFromBlock(data []byte) (*pbcommon.Envelope, error)

GetEnvelopeFromBlock 区块的数据部分,每条数据都是 Envelope 的 protobuf 编码后的结果, 此方法就是通过反序列化将区块中的单条数据反序列化成一个 Envelope。

func MarshalOrPanic

func MarshalOrPanic(pb proto.Message) []byte

func UnmarshalChannelHeader

func UnmarshalChannelHeader(raw []byte) (*pbcommon.ChannelHeader, error)

func UnmarshalEnvelope

func UnmarshalEnvelope(raw []byte) (*pbcommon.Envelope, error)

func UnmarshalIdentifierHeader

func UnmarshalIdentifierHeader(raw []byte) (*pbcommon.IdentifierHeader, error)

func UnmarshalPayload

func UnmarshalPayload(raw []byte) (*pbcommon.Payload, error)

func UnmarshalSerializedIdentity

func UnmarshalSerializedIdentity(raw []byte) (*pbmsp.SerializedIdentity, error)

func UnmarshalSignatureHeader

func UnmarshalSignatureHeader(raw []byte) (*pbcommon.SignatureHeader, error)

Types

type BlockVerifierFunc

type BlockVerifierFunc func(header *pbcommon.BlockHeader, metadata *pbcommon.BlockMetadata) error

func BlockSignatureVerifier

func BlockSignatureVerifier(bftEnabled bool, consenters []*pbcommon.Consenter, policy policy) BlockVerifierFunc

BlockSignatureVerifier 方法返回一个函数 func(header *pbcommon.BlockHeader, metadata *pbcommon.BlockMetadata) error, 此函数接收两个参数:区块头和区块元数据,BlockSignatureVerifier 方法构造返回的函数的执行逻辑:我们首先提取区块元数据中的第一 条元数据,该条元数据里存储着所有签名者对区块的签名信息,我们需要做的是,根据元数据提供的信息,我们需要构造被签名的消息,被签名 的消息由以下三条消息拼接构成:元数据的值 metadata.Value || 签名者在共识组内的编号或者签名者的身份信息 || 区块头信息;其次,我 们需要找到签名者的身份信息(用 x509 证书表示的身份);最后逐一获取元数据里的签名 metadata.Signatures,并将每个签名和前面获取到 的签名消息和签名者构造成一个 SignedData 结构体,若干 SignedData 结构体实例作为 policy.EvaluateSignedData 方法的唯一入参,逐一 检查这些签名的合法性。

type SignedData

type SignedData struct {
	Data      []byte
	Identity  []byte // proto.Marshal(*pbmsp.SerializedIdentity)
	Signature []byte
}

SignedData 用于表示验证签名所需的常规三元组。这旨在跨加密方案通用, 而大多数加密方案将在数据中包含签名标识和随机数,这留给加密实现。

Jump to

Keyboard shortcuts

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