Documentation ¶
Index ¶
- func BlockDataHash(data *pbcommon.BlockData) []byte
- func BlockHeaderBytes(bh *pbcommon.BlockHeader) []byte
- func GetChannelIDFromBlock(block *pbcommon.Block) (string, error)
- func GetEnvelopeFromBlock(data []byte) (*pbcommon.Envelope, error)
- func MarshalOrPanic(pb proto.Message) []byte
- func UnmarshalChannelHeader(raw []byte) (*pbcommon.ChannelHeader, error)
- func UnmarshalEnvelope(raw []byte) (*pbcommon.Envelope, error)
- func UnmarshalIdentifierHeader(raw []byte) (*pbcommon.IdentifierHeader, error)
- func UnmarshalPayload(raw []byte) (*pbcommon.Payload, error)
- func UnmarshalSerializedIdentity(raw []byte) (*pbmsp.SerializedIdentity, error)
- func UnmarshalSignatureHeader(raw []byte) (*pbcommon.SignatureHeader, error)
- type BlockVerifierFunc
- type SignedData
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BlockDataHash ¶
func BlockHeaderBytes ¶
func BlockHeaderBytes(bh *pbcommon.BlockHeader) []byte
func GetEnvelopeFromBlock ¶
GetEnvelopeFromBlock 区块的数据部分,每条数据都是 Envelope 的 protobuf 编码后的结果, 此方法就是通过反序列化将区块中的单条数据反序列化成一个 Envelope。
func MarshalOrPanic ¶
func UnmarshalChannelHeader ¶
func UnmarshalChannelHeader(raw []byte) (*pbcommon.ChannelHeader, error)
func UnmarshalIdentifierHeader ¶
func UnmarshalIdentifierHeader(raw []byte) (*pbcommon.IdentifierHeader, 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 用于表示验证签名所需的常规三元组。这旨在跨加密方案通用, 而大多数加密方案将在数据中包含签名标识和随机数,这留给加密实现。