protoutil

package
v0.0.0-...-66d7059 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BlockDataHash

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

BlockDataHash 计算区块内每个交易的哈希值。

func BlockHeaderBytes

func BlockHeaderBytes(blockHeader *pcommon.BlockHeader) []byte

BlockHeaderBytes

fabric 将区块头中区块编号、区块交易哈希和上一个区块的哈希值组装到 asn1Header 结构体中, 然后对其进行 asn.1 编码,编码后得到的字节数组作为区块头的字节表示形式。

mayy 直接计算区块头的 protobuf 编码值,弃用 fabric 的做法。

func BlockHeaderHash

func BlockHeaderHash(blockHeader *pcommon.BlockHeader) []byte

BlockHeaderHash 计算区块头的 sha256 哈希值。

func CheckTxID

func CheckTxID(txid string, nonce, creator []byte) error

func ComputeTxID

func ComputeTxID(nonce, creator []byte) string

ComputeTxID 根据给定的随机 nonce 值以及创造者的身份 creator 计算 txID。

func CopyBlockMetadata

func CopyBlockMetadata(src *pcommon.Block, dst *pcommon.Block)

CopyBlockMetadata 将区块中的元数据拷贝到目标区块中。

func CreateChaincodeProposal

func CreateChaincodeProposal(headerType pcommon.HeaderType, channelID string,
	chaincodeInvocationSpec *ppeer.ChaincodeInvocationSpec, creator []byte) (*ppeer.Proposal, string, error)

func CreateChaincodeProposalWithTransient

func CreateChaincodeProposalWithTransient(headerType pcommon.HeaderType, channelID string, chaincodeInvocationSpec *ppeer.ChaincodeInvocationSpec,
	creator []byte, transientMap map[string][]byte) (*ppeer.Proposal, string, error)

func CreateChaincodeProposalWithTxIDAndTransient

func CreateChaincodeProposalWithTxIDAndTransient(headerType pcommon.HeaderType, channelID, txid string,
	chaincodeInvocationSpec *ppeer.ChaincodeInvocationSpec, creator []byte, transientMap map[string][]byte) (*ppeer.Proposal, string, error)

func CreateChaincodeProposalWithTxIDNonceAndTransient

func CreateChaincodeProposalWithTxIDNonceAndTransient(txid string, headerType pcommon.HeaderType, channelID string,
	chaincodeInvocationSpec *ppeer.ChaincodeInvocationSpec, nonce, creator []byte, transientMap map[string][]byte) (*ppeer.Proposal, string, error)

func CreateDeployProposalFromChaincodeDeploymentSpec

func CreateDeployProposalFromChaincodeDeploymentSpec(channelID string, chaincodeDeploymentSpec *ppeer.ChaincodeDeploymentSpec,
	creator, policy, escc, vscc, collectionConfig []byte) (*ppeer.Proposal, string, error)

func CreateGetChaincodesProposal

func CreateGetChaincodesProposal(channelID string, creator []byte) (*ppeer.Proposal, string, error)

func CreateGetInstalledChaincodesProposal

func CreateGetInstalledChaincodesProposal(creator []byte) (*ppeer.Proposal, string, error)

func CreateInstallProposalFromChaincodeDeploymentSpec

func CreateInstallProposalFromChaincodeDeploymentSpec(chaincodePackage proto.Message, creator []byte) (*ppeer.Proposal, string, error)

func CreateNonce

func CreateNonce() ([]byte, error)

CreateNonce 产生一个 24 字节长度伪随机字节数组,当产生的数组长度不为 24 时,或者产生其他错误时,该方法会返回一个错误。

func CreateNonceOrPanic

func CreateNonceOrPanic() []byte

CreateNonceOrPanic 产生一个 24 字节长度伪随机字节数组,当产生的数组长度不为 24 时,或者产生其他错误时, 该方法会 panic。

func CreateProposalFromChaincodeInvocationSpec

func CreateProposalFromChaincodeInvocationSpec(headerType pcommon.HeaderType, channelID string,
	chaincodeInvocationSpec *ppeer.ChaincodeInvocationSpec, creator []byte) (*ppeer.Proposal, string, error)

func CreateProposalFromChaincodeInvocationSpecAndTxid

func CreateProposalFromChaincodeInvocationSpecAndTxid(txid, channelID string, headerType pcommon.HeaderType,
	chaincodeInvocationSpec *ppeer.ChaincodeInvocationSpec, creator []byte) (*ppeer.Proposal, string, error)

func CreateProposalResponse

func CreateProposalResponse(headerBytes, chaincodeProposalBytes, result, event []byte,
	response *ppeer.Response, chaincodeId *ppeer.ChaincodeID, signer Signer) (*ppeer.ProposalResponse, error)

func CreateProposalResponseFailure

func CreateProposalResponseFailure(headerBytes, chaincodeProposalBytes, result, event []byte, chaincodeName string, response *ppeer.Response) (*ppeer.ProposalResponse, error)

func CreateSignedEnvelope

func CreateSignedEnvelope(headerType pcommon.HeaderType, channelID string, signer Signer,
	message proto.Message, version int32, epoch uint64) (*pcommon.Envelope, error)

func CreateSignedEnvelopeWithTLSBinding

func CreateSignedEnvelopeWithTLSBinding(headerType pcommon.HeaderType, channelID string, signer Signer,
	message proto.Message, version int32, epoch uint64, tlsCertHash []byte) (*pcommon.Envelope, error)

func CreateSignedTx

func CreateSignedTx(proposal *ppeer.Proposal, signer Signer, proposalResponses ...*ppeer.ProposalResponse) (*pcommon.Envelope, error)

func CreateUpgradeProposalFromChaincodeDeploymentSpec

func CreateUpgradeProposalFromChaincodeDeploymentSpec(channelID string, chaincodeDeploymentSpec *ppeer.ChaincodeDeploymentSpec,
	creator, policy, escc, vscc, collectionConfig []byte) (*ppeer.Proposal, string, error)

func EnvelopeToConfigUpdate

func EnvelopeToConfigUpdate(configtx *pcommon.Envelope) (*pcommon.ConfigUpdateEnvelope, error)

EnvelopeToConfigUpdate 将 Envelope 中的负载 Payload 反序列化得到 ConfigUpdateEnvelope 结构体消息。

func ExtractChannelHeaderFromEnvelope

func ExtractChannelHeaderFromEnvelope(envelope *pcommon.Envelope) (*pcommon.ChannelHeader, error)

ExtractChannelHeaderFromEnvelope 从 Envelope 的负载 Payload 的头部中提取出 ChannelHeader。

func ExtractChannelIDFromEnvelope

func ExtractChannelIDFromEnvelope(envelope *pcommon.Envelope) (string, error)

ExtractChannelIDFromEnvelope 从 Envelope 的负载 Payload 的头部中提取出链 ID。

func ExtractEnvelope

func ExtractEnvelope(block *pcommon.Block, index int) (*pcommon.Envelope, error)

ExtractEnvelope 给定一个区块和某个交易数据的索引,将交易数据的原始字节数组反编译成 Envelope 结构体并返回。 交易数据在区块中的索引号必须是合法的,不然会返回错误。

func ExtractEnvelopeOrPanic

func ExtractEnvelopeOrPanic(block *pcommon.Block, index int) *pcommon.Envelope

ExtractEnvelopeOrPanic 给定一个区块和某个交易数据的索引,将交易数据的原始字节数组反编译成 Envelope 结构体并返回, 如果反序列化失败,则会直接 panic。

func GetActionFromEnvelope

func GetActionFromEnvelope(encodedEnvelope []byte) (*ppeer.ChaincodeAction, error)

func GetActionFromEnvelopeMsg

func GetActionFromEnvelopeMsg(envelope *pcommon.Envelope) (*ppeer.ChaincodeAction, error)

func GetBytesChaincodeActionPayload

func GetBytesChaincodeActionPayload(chaincodeActionPayload *ppeer.ChaincodeActionPayload) ([]byte, error)

GetBytesChaincodeActionPayload 计算给定的 ChaincodeActionPayload 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesChaincodeEvent

func GetBytesChaincodeEvent(chaincodeEvent *ppeer.ChaincodeEvent) ([]byte, error)

GetBytesChaincodeEvent 计算给定的 ChaincodeEvent 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesChaincodeProposalPayload

func GetBytesChaincodeProposalPayload(chaincodeProposalPayload *ppeer.ChaincodeProposalPayload) ([]byte, error)

GetBytesChaincodeProposalPayload 计算给定的 ChaincodeProposalPayload 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesEnvelope

func GetBytesEnvelope(envelope *pcommon.Envelope) ([]byte, error)

GetBytesEnvelope 计算给定的 Envelope 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesHeader

func GetBytesHeader(header *pcommon.Header) ([]byte, error)

GetBytesHeader 计算给定的 Header 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesPayload

func GetBytesPayload(payload *pcommon.Payload) ([]byte, error)

GetBytesPayload 计算给定的 Payload 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesProposalPayloadForTx

func GetBytesProposalPayloadForTx(chaincodeProposalPayload *ppeer.ChaincodeProposalPayload) ([]byte, error)

GetBytesProposalPayloadForTx 方法将 ChaincodeProposalPayload 消息结构体中的 TransientMap 设置成空, 然后对其进行序列化,将序列化结果进行返回。

func GetBytesProposalResponse

func GetBytesProposalResponse(proposalResponse *ppeer.ProposalResponse) ([]byte, error)

GetBytesProposalResponse 计算给定的 ProposalResponse 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesProposalResponsePayload

func GetBytesProposalResponsePayload(hash, result, event []byte, response *ppeer.Response, chaincodeId *ppeer.ChaincodeID) ([]byte, error)

GetBytesProposalResponsePayload 给定链码执行结果 result、 事件 event、响应 response 和 链码 id,组装出一个 ChaincodeAction 结构体消息,并对它进行序列化,得到字节数组,然后随给定的哈希值 hash,组装出一个 ProposalResponsePayload 结构体消息,最后返回对此结构体消息进行序列化后的 protobuf 字节数组。

func GetBytesResponse

func GetBytesResponse(response *ppeer.Response) ([]byte, error)

GetBytesResponse 计算给定的 Response 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesSignatureHeader

func GetBytesSignatureHeader(signatureHeader *pcommon.SignatureHeader) ([]byte, error)

GetBytesSignatureHeader 计算给定的 SignatureHeader 结构体消息经序列化后的 protobuf 字节数组。

func GetBytesTransaction

func GetBytesTransaction(transaction *ppeer.Transaction) ([]byte, error)

GetBytesTransaction 计算给定的 Transaction 结构体消息经序列化后的 protobuf 字节数组。

func GetChannelIDFromBlock

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

GetChannelIDFromBlock 提取给定的区块中的第一条交易数据,交易数据中含有通道信息, 进而可以提取出通道 ID。

func GetChannelIDFromBlockBytes

func GetChannelIDFromBlockBytes(encoded []byte) (string, error)

GetChannelIDFromBlockBytes 提取给定的区块中的第一条交易数据,交易数据中含有通道信息, 进而可以提取出通道 ID。

func GetConsenterMetadataFromBlock

func GetConsenterMetadataFromBlock(block *pcommon.Block) (*pcommon.Metadata, error)

GetConsenterMetadataFromBlock 区块元数据中的第一条元数据,即签名背书数据中含有共识者的元数据。

  1. Block.Metadata.Metadata[0] -> Metadata;
  2. Metadata.Value -> OrdererBlockMetadata;
  3. OrdererMetadata.ConsenterMetadata -> Metadata

func GetLastConfigIndexFromBlock

func GetLastConfigIndexFromBlock(block *pcommon.Block) (uint64, error)

GetLastConfigIndexFromBlock 区块元数据中的第一条数据,即签名背书数据中含有排序节点的元数据, 在此元数据中存有最后一个配置区块的索引位置。

  1. Block.Metadata.Metadata[0] -> Metadata;
  2. Metadata.Value -> OrdererBlockMetadata.LastConfig.Index

LastConfig block 是指最新产生的配置区块,它记录了最近一次的网络配置更改。网络配置包括了参与 网络的组织、节点、通道和链代码等信息。当网络的配置发生变化时(例如添加或删除组织、节点或通道), 会生成一个配置交易,该交易被打包成一个 config 区块并广播到网络中。网络的参与者可以通过查询 LastConfig block 获取最新的网络配置信息,从而了解网络的状态和拓扑结构。当新的节点加入网络或 者网络配置发生变化时,其他节点可以通过检查 LastConfig block 来同步最新的配置信息,确保网络的 一致性和正确性。

func GetLastConfigIndexFromBlockOrPanic

func GetLastConfigIndexFromBlockOrPanic(block *pcommon.Block) uint64

GetLastConfigIndexFromBlockOrPanic 区块元数据中的第一条数据,即签名背书数据中含有排序节点的元数据, 在此元数据中存有最后一个配置区块的索引位置。

  1. Block.Metadata.Metadata[0] -> Metadata;
  2. Metadata.Value -> OrdererBlockMetadata.LastConfig.Index

LastConfig block 是指最新产生的配置区块,它记录了最近一次的网络配置更改。网络配置包括了参与 网络的组织、节点、通道和链代码等信息。当网络的配置发生变化时(例如添加或删除组织、节点或通道), 会生成一个配置交易,该交易被打包成一个 config 区块并广播到网络中。网络的参与者可以通过查询 LastConfig block 获取最新的网络配置信息,从而了解网络的状态和拓扑结构。当新的节点加入网络或 者网络配置发生变化时,其他节点可以通过检查 LastConfig block 来同步最新的配置信息,确保网络的 一致性和正确性。

func GetMetadataFromBlock

func GetMetadataFromBlock(block *pcommon.Block, index pcommon.BlockMetadataIndex) (*pcommon.Metadata, error)

GetMetadataFromBlock 根据给定的元数据索引位置,从给定的区块中获取对应的元数据。

func GetMetadataFromBlockOrPanic

func GetMetadataFromBlockOrPanic(block *pcommon.Block, index pcommon.BlockMetadataIndex) *pcommon.Metadata

GetMetadataFromBlockOrPanic 根据给定的元数据索引位置,从给定的区块中获取对应的元数据,如果出错,则会 panic。

func GetOrComputeTxIDFromEnvelope

func GetOrComputeTxIDFromEnvelope(envelopeBytes []byte) (string, error)

func GetPayloads

func GetPayloads(transactionAction *ppeer.TransactionAction) (*ppeer.ChaincodeActionPayload, *ppeer.ChaincodeAction, error)

func GetProposalHash1

func GetProposalHash1(header *pcommon.Header, chaincodeProposalPayloadBytes []byte) ([]byte, error)

func GetProposalHash2

func GetProposalHash2(header *pcommon.Header, chaincodeProposalPayloadBytes []byte) ([]byte, error)

func GetSignedProposal

func GetSignedProposal(proposal *ppeer.Proposal, signer Signer) (*ppeer.SignedProposal, error)

func InitBlockMetadata

func InitBlockMetadata(block *pcommon.Block)

InitBlockMetadata 初始化区块的元数据字段,确保每种类型的元数据不为 nil,为 nil 的用 []byte{} 赋值。

包括以下类型的元数据:

  1. SIGNATURES
  2. TRANSACTIONS_FILTER
  3. COMMIT_HASH

func InvokedChaincodeName

func InvokedChaincodeName(proposalBytes []byte) (string, error)

InvokedChaincodeName 给定一个提案的 protobuf 序列化字节数组,对其进行反序列化,提取调用的链码名。

func IsConfigBlock

func IsConfigBlock(block *pcommon.Block) bool

IsConfigBlock 判断给定的区块是否是用来存储系统配置信息的区块。判断规则如下:

  1. 如果区块的数据内容是空的,则不是配置块;
  2. 如果区块中包含的交易条数不等于 1,则不是配置块;
  3. 如果区块中唯一的那条交易的负载的头部信息是空的,则不是配置块;
  4. 判断交易头中通道头的类型是否等于 HeaderType_CONFIG,如果等于,则是配置块,否则不是。

func IsConfigTransaction

func IsConfigTransaction(envelope *pcommon.Envelope) bool

IsConfigTransaction 判断给定的交易是否是用来存储系统配置信息的交易。判断规则如下:

  1. 如果交易的负载的头部信息是空的,则不是配置块;
  2. 判断交易头中通道头的类型是否等于 HeaderType_CONFIG 或 HeaderType_ORDERER_TRANSACTION,如果等于,则是配置块,否则不是。

func LogMessageForSerializedIdentities

func LogMessageForSerializedIdentities(signedData []*SignedData) string

func LogMessageForSerializedIdentity

func LogMessageForSerializedIdentity(encodedSerializedIdentity []byte) string

func MakeChannelHeader

func MakeChannelHeader(headerType pcommon.HeaderType, version int32, chainID string, epoch uint64) *pcommon.ChannelHeader

MakeChannelHeader 创建一个通道头。

func MakePayloadHeader

func MakePayloadHeader(channelHeader *pcommon.ChannelHeader, signatureHeader *pcommon.SignatureHeader) *pcommon.Header

MakePayloadHeader 创建负载 Payload 的头,负载的头由两部分组成,一个是通道头 ChannelHeader,另一个是签名头 SignatureHeader, 通道头与签名头分别是 ChannelHeader 和 SignatureHeader 两个结构体消息序列化后产生的字节数组。

func MakeSignatureHeader

func MakeSignatureHeader(serializedCreatorCertChain []byte, nonce []byte) *pcommon.SignatureHeader

MakeSignatureHeader 创建一个签名头。

func Marshal

func Marshal(message proto.Message) ([]byte, error)

Marshal 此方法直接调用 google.golang.org/protobuf/proto 包的 Marshal 方法,对 proto.Message 类型的消息结构体 进行序列化,得到一串字节数组,如果序列化失败,则会返回错误。

func MarshalOrPanic

func MarshalOrPanic(message proto.Message) []byte

MarshalOrPanic 此方法直接调用 google.golang.org/protobuf/proto 包的 Marshal 方法,对 proto.Message 类型的消 息结构体进行序列化,得到一串字节数组,如果序列化失败,则会 panic。

func MockSignedEndorserProposal1OrPanic

func MockSignedEndorserProposal1OrPanic(channelID string, chaincodeSpec *ppeer.ChaincodeSpec, creator, signature []byte) (*ppeer.SignedProposal, *ppeer.Proposal)

func MockSignedEndorserProposal2OrPanic

func MockSignedEndorserProposal2OrPanic(channelID string, chaincodeSpec *ppeer.ChaincodeSpec, signer Signer) (*ppeer.SignedProposal, *ppeer.Proposal)

func NewBlock

func NewBlock(seqNum uint64, previousHash []byte) *pcommon.Block

NewBlock 组装一个新区块,除了指定该区块的区块号和上一个区块的哈希值外,其余字段皆为空。

func NewConfigGroup

func NewConfigGroup() *pcommon.ConfigGroup

NewConfigGroup 创建一个配置组。

func NewSignatureHeader

func NewSignatureHeader(serializedIdentity []byte) (*pcommon.SignatureHeader, error)

NewSignatureHeader 此方法以一个能够代表“身份”信息的结构体消息序列化后产生的字节数组作为参数,然后 随机产生一个随机值 nonce,之后将身份结构体消息序列化后得到的字节数组和 nonce 组装成 SignatureHeader 结构体消息。

func NewSignatureHeaderOrPanic

func NewSignatureHeaderOrPanic(serializedIdentity []byte) *pcommon.SignatureHeader

NewSignatureHeaderOrPanic 此方法以一个能够代表“身份”信息的结构体消息序列化后产生的字节数组作为参数,然后 随机产生一个随机值 nonce,之后将身份结构体消息序列化后得到的字节数组和 nonce 组装成 SignatureHeader 结构 体消息。如果在产生随机值的时候出错了,则此方法会 panic。

func SetTxID

func SetTxID(channelHeader *pcommon.ChannelHeader, signatureHeader *pcommon.SignatureHeader)

SetTxID 根据给定的签名头中的随机值 nonce 和创造者 creator 计算交易的哈希值,并将其作为 通道头中的交易 id。

func SignOrPanic

func SignOrPanic(signer Signer, msg []byte) []byte

func Unmarshal

func Unmarshal(encoded []byte, message proto.Message) error

Unmarshal 此方法直接调用 google.golang.org/protobuf/proto 包的 Unmarshal 方法,对给定的经过序列化后的字节数组 进行反序列化,得到一个结构体消息,如果反序列化失败,则会返回错误。

func UnmarshalBlock

func UnmarshalBlock(encoded []byte) (*pcommon.Block, error)

func UnmarshalBlockOrPanic

func UnmarshalBlockOrPanic(encoded []byte) *pcommon.Block

func UnmarshalChaincodeAction

func UnmarshalChaincodeAction(encoded []byte) (*ppeer.ChaincodeAction, error)

func UnmarshalChaincodeActionPayload

func UnmarshalChaincodeActionPayload(encoded []byte) (*ppeer.ChaincodeActionPayload, error)

func UnmarshalChaincodeDeploymentSpec

func UnmarshalChaincodeDeploymentSpec(encoded []byte) (*ppeer.ChaincodeDeploymentSpec, error)

func UnmarshalChaincodeEvent

func UnmarshalChaincodeEvent(encoded []byte) (*ppeer.ChaincodeEvent, error)

func UnmarshalChaincodeHeaderExtension

func UnmarshalChaincodeHeaderExtension(encoded []byte) (*ppeer.ChaincodeHeaderExtension, error)

func UnmarshalChaincodeID

func UnmarshalChaincodeID(encoded []byte) (*ppeer.ChaincodeID, error)

func UnmarshalChaincodeInvocationSpec

func UnmarshalChaincodeInvocationSpec(encoded []byte) (*ppeer.ChaincodeInvocationSpec, error)

func UnmarshalChaincodeProposalPayload

func UnmarshalChaincodeProposalPayload(encoded []byte) (*ppeer.ChaincodeProposalPayload, error)

func UnmarshalChannelHeader

func UnmarshalChannelHeader(encoded []byte) (*pcommon.ChannelHeader, error)

func UnmarshalEnvelope

func UnmarshalEnvelope(encoded []byte) (*pcommon.Envelope, error)

func UnmarshalEnvelopeOfType

func UnmarshalEnvelopeOfType(envelope *pcommon.Envelope, headerType pcommon.HeaderType, message proto.Message) (*pcommon.ChannelHeader, error)

UnmarshalEnvelopeOfType 给定一个 Envelope,将其中的 Payload 字节数组反序列化成 Payload 结构体,如果得到的负载的通道头 ChannelHeader 的类型与给定的头类型(第二个参数)不一样,则返回错误,不然继续将 Payload 中的数据部分 Data 反序列化成另一 个结构体,并返回通道头的结构体消息。

func UnmarshalEnvelopeOrPanic

func UnmarshalEnvelopeOrPanic(encoded []byte) *pcommon.Envelope

func UnmarshalHeader

func UnmarshalHeader(encoded []byte) (*pcommon.Header, error)

func UnmarshalIdentifierHeader

func UnmarshalIdentifierHeader(encoded []byte) (*pcommon.IdentifierHeader, error)

func UnmarshalPayload

func UnmarshalPayload(encoded []byte) (*pcommon.Payload, error)

func UnmarshalPayloadOrPanic

func UnmarshalPayloadOrPanic(encoded []byte) *pcommon.Payload

func UnmarshalProposal

func UnmarshalProposal(encoded []byte) (*ppeer.Proposal, error)

func UnmarshalProposalResponse

func UnmarshalProposalResponse(encoded []byte) (*ppeer.ProposalResponse, error)

func UnmarshalProposalResponsePayload

func UnmarshalProposalResponsePayload(encoded []byte) (*ppeer.ProposalResponsePayload, error)

func UnmarshalResponse

func UnmarshalResponse(encoded []byte) (*ppeer.Response, error)

func UnmarshalSerializedIdentity

func UnmarshalSerializedIdentity(encoded []byte) (*pmsp.SerializedIdentity, error)

func UnmarshalSignatureHeader

func UnmarshalSignatureHeader(encoded []byte) (*pcommon.SignatureHeader, error)

func UnmarshalSignatureHeaderOrPanic

func UnmarshalSignatureHeaderOrPanic(encoded []byte) *pcommon.SignatureHeader

func UnmarshalTransaction

func UnmarshalTransaction(encoded []byte) (*ppeer.Transaction, error)

Types

type BlockVerifierFunc

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

func BlockSignatureVerifier

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

BlockSignatureVerifier 构造验证区块中签名的方法。

TODO:为什么要有这么一句判断:if bftEnabled && len(mdSignature.SignatureHeader) == 0 && len(mdSignature.IdentifierHeader) > 0 {...}

type SignedData

type SignedData struct {
	Data      []byte
	Identity  []byte
	Signature []byte
}

SignedData 结构体封装了用于验证签名的三元组:数据(Data)、身份(Identity)和签名(Signature)。 在大多数密码方案中,Data 通常包含签名者的身份和一个随机数。

func ConfigUpdateEnvelopeAsSignedData

func ConfigUpdateEnvelopeAsSignedData(configUpdateEnvelope *pcommon.ConfigUpdateEnvelope) ([]*SignedData, error)

func EnvelopeAsSignedData

func EnvelopeAsSignedData(envelope *pcommon.Envelope) ([]*SignedData, error)

type Signer

type Signer interface {
	Sign(msg []byte) ([]byte, error)
	// Serialize 将 x509 证书编码成 PEM 格式的字节数组。
	Serialize() ([]byte, error)
}

type VerifierBuilder

type VerifierBuilder func(block *pcommon.Block) BlockVerifierFunc

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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