protoutil

package
v0.0.0-...-579b097 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BlockDataHash

func BlockDataHash(b *cb.BlockData) ([]byte, error)

func BlockHeaderBytes

func BlockHeaderBytes(b *cb.BlockHeader) []byte

func BlockHeaderHash

func BlockHeaderHash(b *cb.BlockHeader) []byte

func ChannelHeader

func ChannelHeader(env *cb.Envelope) (*cb.ChannelHeader, error)

ChannelHeader returns the *cb.ChannelHeader for a given *cb.Envelope.

func ChannelID

func ChannelID(env *cb.Envelope) (string, error)

ChannelID returns the Channel ID for a given *cb.Envelope.

func CheckTxID

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

CheckTxID checks that txid is equal to the Hash computed over the concatenation of nonce and creator.

func ComputeBlockDataHash

func ComputeBlockDataHash(b *cb.BlockData) []byte

func ComputeTxID

func ComputeTxID(nonce, creator []byte) string

ComputeTxID computes TxID as the Hash computed over the concatenation of nonce and creator.

func CopyBlockMetadata

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

CopyBlockMetadata copies metadata from one block into another

func CreateChaincodeProposal

func CreateChaincodeProposal(typ common.HeaderType, channelID string, cis *peer.ChaincodeInvocationSpec, creator []byte) (*peer.Proposal, string, error)

CreateChaincodeProposal creates a proposal from given input. It returns the proposal and the transaction id associated to the proposal

func CreateChaincodeProposalWithTransient

func CreateChaincodeProposalWithTransient(typ common.HeaderType, channelID string, cis *peer.ChaincodeInvocationSpec, creator []byte, transientMap map[string][]byte) (*peer.Proposal, string, error)

CreateChaincodeProposalWithTransient creates a proposal from given input It returns the proposal and the transaction id associated to the proposal

func CreateChaincodeProposalWithTxIDAndTransient

func CreateChaincodeProposalWithTxIDAndTransient(typ common.HeaderType, channelID string, cis *peer.ChaincodeInvocationSpec, creator []byte, txid string, transientMap map[string][]byte) (*peer.Proposal, string, error)

CreateChaincodeProposalWithTxIDAndTransient creates a proposal from given input. It returns the proposal and the transaction id associated with the proposal

func CreateChaincodeProposalWithTxIDNonceAndTransient

func CreateChaincodeProposalWithTxIDNonceAndTransient(txid string, typ common.HeaderType, channelID string, cis *peer.ChaincodeInvocationSpec, nonce, creator []byte, transientMap map[string][]byte) (*peer.Proposal, string, error)

CreateChaincodeProposalWithTxIDNonceAndTransient creates a proposal from given input

func CreateDeployProposalFromCDS

func CreateDeployProposalFromCDS(
	channelID string,
	cds *peer.ChaincodeDeploymentSpec,
	creator []byte,
	policy []byte,
	escc []byte,
	vscc []byte,
	collectionConfig []byte) (*peer.Proposal, string, error)

CreateDeployProposalFromCDS returns a deploy proposal given a serialized identity and a ChaincodeDeploymentSpec

func CreateGetChaincodesProposal

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

CreateGetChaincodesProposal returns a GETCHAINCODES proposal given a serialized identity

func CreateGetInstalledChaincodesProposal

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

CreateGetInstalledChaincodesProposal returns a GETINSTALLEDCHAINCODES proposal given a serialized identity

func CreateInstallProposalFromCDS

func CreateInstallProposalFromCDS(ccpack proto.Message, creator []byte) (*peer.Proposal, string, error)

CreateInstallProposalFromCDS returns a install proposal given a serialized identity and a ChaincodeDeploymentSpec

func CreateNonce

func CreateNonce() ([]byte, error)

CreateNonce generates a nonce using the common/crypto package.

func CreateNonceOrPanic

func CreateNonceOrPanic() []byte

CreateNonceOrPanic generates a nonce using the common/crypto package and panics if this operation fails.

func CreateProposalFromCIS

func CreateProposalFromCIS(typ common.HeaderType, channelID string, cis *peer.ChaincodeInvocationSpec, creator []byte) (*peer.Proposal, string, error)

CreateProposalFromCIS returns a proposal given a serialized identity and a ChaincodeInvocationSpec

func CreateProposalFromCISAndTxid

func CreateProposalFromCISAndTxid(txid string, typ common.HeaderType, channelID string, cis *peer.ChaincodeInvocationSpec, creator []byte) (*peer.Proposal, string, error)

CreateProposalFromCISAndTxid returns a proposal given a serialized identity and a ChaincodeInvocationSpec

func CreateProposalResponse

func CreateProposalResponse(
	hdrbytes []byte,
	payl []byte,
	response *peer.Response,
	results []byte,
	events []byte,
	ccid *peer.ChaincodeID,
	signingEndorser Signer,
) (*peer.ProposalResponse, error)

CreateProposalResponse creates a proposal response.

func CreateProposalResponseFailure

func CreateProposalResponseFailure(
	hdrbytes []byte,
	payl []byte,
	response *peer.Response,
	results []byte,
	events []byte,
	chaincodeName string,
) (*peer.ProposalResponse, error)

CreateProposalResponseFailure creates a proposal response for cases where endorsement proposal fails either due to a endorsement failure or a chaincode failure (chaincode response status >= shim.ERRORTHRESHOLD)

func CreateSignedEnvelope

func CreateSignedEnvelope(
	txType common.HeaderType,
	channelID string,
	signer Signer,
	dataMsg proto.Message,
	msgVersion int32,
	epoch uint64,
) (*common.Envelope, error)

CreateSignedEnvelope creates a signed envelope of the desired type, with marshaled dataMsg and signs it

func CreateSignedEnvelopeWithTLSBinding

func CreateSignedEnvelopeWithTLSBinding(
	txType common.HeaderType,
	channelID string,
	signer Signer,
	dataMsg proto.Message,
	msgVersion int32,
	epoch uint64,
	tlsCertHash []byte,
) (*common.Envelope, error)

CreateSignedEnvelopeWithTLSBinding creates a signed envelope of the desired type, with marshaled dataMsg and signs it. It also includes a TLS cert hash into the channel header

func CreateSignedTx

func CreateSignedTx(
	spec *peer.ChaincodeSpec,
	proposal *peer.Proposal,
	signer Signer,
	resps ...*peer.ProposalResponse,
) (*common.Envelope, error)

CreateSignedTx assembles an Envelope message from proposal, endorsements, and a signer. This function should be called by a client when it has collected enough endorsements for a proposal to create a transaction and submit it to peers for ordering

func CreateUpgradeProposalFromCDS

func CreateUpgradeProposalFromCDS(
	channelID string,
	cds *peer.ChaincodeDeploymentSpec,
	creator []byte,
	policy []byte,
	escc []byte,
	vscc []byte,
	collectionConfig []byte) (*peer.Proposal, string, error)

CreateUpgradeProposalFromCDS returns a upgrade proposal given a serialized identity and a ChaincodeDeploymentSpec

func EnvelopeToConfigUpdate

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

EnvelopeToConfigUpdate is used to extract a ConfigUpdateEnvelope from an envelope of type CONFIG_UPDATE

func ExtractEnvelope

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

ExtractEnvelope retrieves the requested envelope from a given block and unmarshals it

func ExtractEnvelopeOrPanic

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

ExtractEnvelopeOrPanic retrieves the requested envelope from a given block and unmarshals it -- it panics if either of these operations fail

func GetActionFromEnvelope

func GetActionFromEnvelope(envBytes []byte) (*peer.ChaincodeAction, error)

GetActionFromEnvelope extracts a ChaincodeAction message from a serialized Envelope TODO: fix function name as per FAB-11831

func GetActionFromEnvelopeMsg

func GetActionFromEnvelopeMsg(env *common.Envelope) (*peer.ChaincodeAction, error)

func GetBytesChaincodeActionPayload

func GetBytesChaincodeActionPayload(cap *peer.ChaincodeActionPayload) ([]byte, error)

GetBytesChaincodeActionPayload get the bytes of ChaincodeActionPayload from the message

func GetBytesChaincodeEvent

func GetBytesChaincodeEvent(event *peer.ChaincodeEvent) ([]byte, error)

GetBytesChaincodeEvent gets the bytes of ChaincodeEvent

func GetBytesChaincodeProposalPayload

func GetBytesChaincodeProposalPayload(cpp *peer.ChaincodeProposalPayload) ([]byte, error)

GetBytesChaincodeProposalPayload gets the chaincode proposal payload

func GetBytesEnvelope

func GetBytesEnvelope(env *common.Envelope) ([]byte, error)

GetBytesEnvelope get the bytes of Envelope from the message

func GetBytesHeader

func GetBytesHeader(hdr *common.Header) ([]byte, error)

GetBytesHeader get the bytes of Header from the message

func GetBytesPayload

func GetBytesPayload(payl *common.Payload) ([]byte, error)

GetBytesPayload get the bytes of Payload from the message

func GetBytesProposalPayloadForTx

func GetBytesProposalPayloadForTx(
	payload *peer.ChaincodeProposalPayload,
) ([]byte, error)

GetBytesProposalPayloadForTx takes a ChaincodeProposalPayload and returns its serialized version according to the visibility field

func GetBytesProposalResponse

func GetBytesProposalResponse(pr *peer.ProposalResponse) ([]byte, error)

GetBytesProposalResponse gets proposal bytes response

func GetBytesProposalResponsePayload

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

GetBytesProposalResponsePayload gets proposal response payload

func GetBytesResponse

func GetBytesResponse(res *peer.Response) ([]byte, error)

GetBytesResponse gets the bytes of Response

func GetBytesSignatureHeader

func GetBytesSignatureHeader(hdr *common.SignatureHeader) ([]byte, error)

GetBytesSignatureHeader get the bytes of SignatureHeader from the message

func GetBytesTransaction

func GetBytesTransaction(tx *peer.Transaction) ([]byte, error)

GetBytesTransaction get the bytes of Transaction from the message

func GetChannelIDFromBlock

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

GetChannelIDFromBlock returns channel ID in the block

func GetChannelIDFromBlockBytes

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

GetChannelIDFromBlockBytes returns channel ID given byte array which represents the block

func GetConsenterMetadataFromBlock

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

GetConsenterMetadataFromBlock attempts to retrieve consenter metadata from the value stored in block metadata at index SIGNATURES (first field). If no consenter metadata is found there, it falls back to index ORDERER (third field).

func GetEnvelopeFromBlock

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

GetEnvelopeFromBlock gets an envelope from a block's Data field.

func GetLastConfigIndexFromBlock

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

GetLastConfigIndexFromBlock retrieves the index of the last config block as encoded in the block metadata

func GetLastConfigIndexFromBlockOrPanic

func GetLastConfigIndexFromBlockOrPanic(block *cb.Block) uint64

GetLastConfigIndexFromBlockOrPanic retrieves the index of the last config block as encoded in the block metadata, or panics on error

func GetMetadataFromBlock

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

GetMetadataFromBlock retrieves metadata at the specified index.

func GetMetadataFromBlockOrPanic

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

GetMetadataFromBlockOrPanic retrieves metadata at the specified index, or panics on error

func GetOrComputeTxIDFromEnvelope

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

GetOrComputeTxIDFromEnvelope gets the txID present in a given transaction envelope. If the txID is empty, it constructs the txID from nonce and creator fields in the envelope.

func GetPayloads

GetPayloads gets the underlying payload objects in a TransactionAction

func GetProposalHash1

func GetProposalHash1(header *common.Header, ccPropPayl []byte) ([]byte, error)

GetProposalHash1 gets the proposal hash bytes after sanitizing the chaincode proposal payload according to the rules of visibility

func GetProposalHash2

func GetProposalHash2(header *common.Header, ccPropPayl []byte) ([]byte, error)

GetProposalHash2 gets the proposal hash - this version is called by the committer where the visibility policy has already been enforced and so we already get what we have to get in ccPropPayl

func GetSignedProposal

func GetSignedProposal(prop *peer.Proposal, signer Signer) (*peer.SignedProposal, error)

GetSignedProposal returns a signed proposal given a Proposal message and a signing identity

func HasConfigTx

func HasConfigTx(blockdata *cb.BlockData) bool

func InitBlockMetadata

func InitBlockMetadata(block *cb.Block)

InitBlockMetadata initializes metadata structure

func InvokedChaincodeName

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

InvokedChaincodeName takes the proposal bytes of a SignedProposal, and unpacks it all the way down, until either an error is encountered, or the chaincode name is found. This is useful primarily for chaincodes which wish to know the chaincode name originally invoked, in order to deny cc2cc invocations (or, perhaps to deny direct invocations and require cc2cc).

func IsConfigBlock

func IsConfigBlock(block *cb.Block) bool

IsConfigBlock validates whenever given block contains configuration update transaction

func IsConfigTransaction

func IsConfigTransaction(envelope *cb.Envelope) bool

func LogMessageForSerializedIdentities

func LogMessageForSerializedIdentities(signedData []*SignedData) (logMsg string)

func LogMessageForSerializedIdentity

func LogMessageForSerializedIdentity(serializedIdentity []byte) string

LogMessageForSerializedIdentity returns a string with seriealized identity information, or a string indicating why the serialized identity information cannot be returned. Any errors are intentially returned in the return strings so that the function can be used in single-line log messages with minimal clutter.

func MakeChannelHeader

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

MakeChannelHeader creates a ChannelHeader.

func MakePayloadHeader

func MakePayloadHeader(ch *cb.ChannelHeader, sh *cb.SignatureHeader) *cb.Header

MakePayloadHeader creates a Payload Header.

func MakeSignatureHeader

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

MakeSignatureHeader creates a SignatureHeader.

func Marshal

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

Marshal serializes a protobuf message.

func MarshalOrPanic

func MarshalOrPanic(pb proto.Message) []byte

MarshalOrPanic serializes a protobuf message and panics if this operation fails

func MockSignedEndorserProposal2OrPanic

func MockSignedEndorserProposal2OrPanic(
	channelID string,
	cs *peer.ChaincodeSpec,
	signer Signer,
) (*peer.SignedProposal, *peer.Proposal)

func MockSignedEndorserProposalOrPanic

func MockSignedEndorserProposalOrPanic(
	channelID string,
	cs *peer.ChaincodeSpec,
	creator,
	signature []byte,
) (*peer.SignedProposal, *peer.Proposal)

MockSignedEndorserProposalOrPanic creates a SignedProposal with the passed arguments

func NewBlock

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

NewBlock constructs a block with no data and no metadata.

func NewConfigGroup

func NewConfigGroup() *common.ConfigGroup

func NewSignatureHeader

func NewSignatureHeader(id identity.Serializer) (*cb.SignatureHeader, error)

NewSignatureHeader returns a SignatureHeader with a valid nonce.

func NewSignatureHeaderOrPanic

func NewSignatureHeaderOrPanic(id identity.Serializer) *cb.SignatureHeader

NewSignatureHeaderOrPanic returns a signature header and panics on error.

func SetTxID

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

SetTxID generates a transaction id based on the provided signature header and sets the TxId field in the channel header

func SignOrPanic

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

SignOrPanic signs a message and panics on error.

func UnmarshalBlock

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

UnmarshalBlock unmarshals bytes to a Block

func UnmarshalBlockOrPanic

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

UnmarshalBlockOrPanic unmarshals bytes to an Block or panics on error

func UnmarshalChaincodeAction

func UnmarshalChaincodeAction(caBytes []byte) (*peer.ChaincodeAction, error)

UnmarshalChaincodeAction unmarshals bytes to a ChaincodeAction

func UnmarshalChaincodeActionPayload

func UnmarshalChaincodeActionPayload(capBytes []byte) (*peer.ChaincodeActionPayload, error)

UnmarshalChaincodeActionPayload unmarshals bytes to a ChaincodeActionPayload

func UnmarshalChaincodeDeploymentSpec

func UnmarshalChaincodeDeploymentSpec(code []byte) (*peer.ChaincodeDeploymentSpec, error)

UnmarshalChaincodeDeploymentSpec unmarshals bytes to a ChaincodeDeploymentSpec

func UnmarshalChaincodeEvents

func UnmarshalChaincodeEvents(eBytes []byte) (*peer.ChaincodeEvent, error)

UnmarshalChaincodeEvents unmarshals bytes to a ChaincodeEvent

func UnmarshalChaincodeHeaderExtension

func UnmarshalChaincodeHeaderExtension(hdrExtension []byte) (*peer.ChaincodeHeaderExtension, error)

UnmarshalChaincodeHeaderExtension unmarshals bytes to a ChaincodeHeaderExtension

func UnmarshalChaincodeID

func UnmarshalChaincodeID(bytes []byte) (*peer.ChaincodeID, error)

UnmarshalChaincodeID unmarshals bytes to a ChaincodeID

func UnmarshalChaincodeInvocationSpec

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

UnmarshalChaincodeInvocationSpec unmarshals bytes to a ChaincodeInvocationSpec

func UnmarshalChaincodeProposalPayload

func UnmarshalChaincodeProposalPayload(bytes []byte) (*peer.ChaincodeProposalPayload, error)

UnmarshalChaincodeProposalPayload unmarshals bytes to a ChaincodeProposalPayload

func UnmarshalChannelHeader

func UnmarshalChannelHeader(bytes []byte) (*common.ChannelHeader, error)

UnmarshalChannelHeader unmarshals bytes to a ChannelHeader

func UnmarshalChannelHeaderOrPanic

func UnmarshalChannelHeaderOrPanic(bytes []byte) *common.ChannelHeader

UnmarshalChannelHeaderOrPanic unmarshals bytes to a ChannelHeader or panics on error

func UnmarshalConfigEnvelope

func UnmarshalConfigEnvelope(bytes []byte) (*common.ConfigEnvelope, error)

UnmarshalConfigEnvelope unmarshals bytes to a ConfigEnvelope

func UnmarshalEnvelope

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

UnmarshalEnvelope unmarshals bytes to a Envelope

func UnmarshalEnvelopeOfType

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

UnmarshalEnvelopeOfType unmarshals an envelope of the specified type, including unmarshalling the payload data

func UnmarshalEnvelopeOrPanic

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

UnmarshalEnvelopeOrPanic unmarshals bytes to an Envelope structure or panics on error

func UnmarshalHashedRWSet

func UnmarshalHashedRWSet(bytes []byte) (*kvrwset.HashedRWSet, error)

UnmarshalHashedRWSet unmarshals bytes to a HashedRWSet

func UnmarshalHeader

func UnmarshalHeader(bytes []byte) (*common.Header, error)

UnmarshalHeader unmarshals bytes to a Header

func UnmarshalIdentifierHeader

func UnmarshalIdentifierHeader(bytes []byte) (*common.IdentifierHeader, error)

UnmarshalIdentifierHeader unmarshals bytes to an IdentifierHeader

func UnmarshalKVRWSet

func UnmarshalKVRWSet(bytes []byte) (*kvrwset.KVRWSet, error)

UnmarshalKVRWSet unmarshals bytes to a KVRWSet

func UnmarshalPayload

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

UnmarshalPayload unmarshals bytes to a Payload

func UnmarshalPayloadOrPanic

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

UnmarshalPayloadOrPanic unmarshals bytes to a Payload structure or panics on error

func UnmarshalProposal

func UnmarshalProposal(propBytes []byte) (*peer.Proposal, error)

UnmarshalProposal unmarshals bytes to a Proposal

func UnmarshalProposalResponse

func UnmarshalProposalResponse(prBytes []byte) (*peer.ProposalResponse, error)

UnmarshalProposalResponse unmarshals bytes to a ProposalResponse

func UnmarshalProposalResponsePayload

func UnmarshalProposalResponsePayload(prpBytes []byte) (*peer.ProposalResponsePayload, error)

UnmarshalProposalResponsePayload unmarshals bytes to a ProposalResponsePayload

func UnmarshalResponse

func UnmarshalResponse(resBytes []byte) (*peer.Response, error)

UnmarshalResponse unmarshals bytes to a Response

func UnmarshalSerializedIdentity

func UnmarshalSerializedIdentity(bytes []byte) (*msp.SerializedIdentity, error)

func UnmarshalSignatureHeader

func UnmarshalSignatureHeader(bytes []byte) (*common.SignatureHeader, error)

UnmarshalSignatureHeader unmarshals bytes to a SignatureHeader

func UnmarshalSignatureHeaderOrPanic

func UnmarshalSignatureHeaderOrPanic(bytes []byte) *common.SignatureHeader

UnmarshalSignatureHeaderOrPanic unmarshals bytes to a SignatureHeader or panics on error

func UnmarshalSignaturePolicy

func UnmarshalSignaturePolicy(bytes []byte) (*common.SignaturePolicyEnvelope, error)

UnmarshalSignaturePolicy unmarshals bytes to a SignaturePolicyEnvelope

func UnmarshalTransaction

func UnmarshalTransaction(txBytes []byte) (*peer.Transaction, error)

UnmarshalTransaction unmarshals bytes to a Transaction

func UnmarshalTxReadWriteSet

func UnmarshalTxReadWriteSet(bytes []byte) (*rwset.TxReadWriteSet, error)

UnmarshalTxReadWriteSet unmarshals bytes to a TxReadWriteSet

func VerifyTransactionsAreWellFormed

func VerifyTransactionsAreWellFormed(bd *cb.BlockData) error

Types

type BlockVerifierFunc

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

func BlockSignatureVerifier

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

type FAME

type FAME struct {
	P *big.Int // order of the elliptic curve
}

FAME represents a FAME scheme.

func NewFAME

func NewFAME() *FAME

NewFAME configures a new instance of the scheme.

func (FAME) Adapt

func (a FAME) Adapt(cipher *FAMECipher, key *FAMEAttribKeys, pk *FAMEPubKey)

func (*FAME) Decrypt

func (a *FAME) Decrypt(cipher *FAMECipher, key *FAMEAttribKeys) (*big.Int, error)

Decrypt takes as an input a cipher and an FAMEAttribKeys and tries to decrypt the cipher. This is possible only if the set of possessed attributes (and corresponding keys FAMEAttribKeys) suffices the encryption policy of the cipher. If this is not possible, an error is returned.

func (*FAME) Encrypt

func (a *FAME) Encrypt(R *big.Int, msp *abe.MSP, pk *FAMEPubKey) (*FAMECipher, error)

Encrypt takes as an input a message msg represented as an element of an elliptic curve, a MSP struct representing the decryption policy, and a public key pk. It returns an encryption of the message. In case of a failed procedure an error is returned. Note that safety of the encryption is only proved if the mapping msp.RowToAttrib from the rows of msp.Mat to attributes is injective.

func (*FAME) GenerateMasterKeys

func (a *FAME) GenerateMasterKeys() (*FAMEPubKey, *FAMESecKey, error)

GenerateMasterKeys generates a new set of public keys, needed for encrypting data, and master secret keys needed for generating keys for decrypting.

func (*FAME) Hash

func (a *FAME) Hash(msp *abe.MSP, pk *FAMEPubKey) (*FAMECipher, error)

func (*FAME) KeyGen

func (a *FAME) KeyGen(gamma []string, sk *FAMESecKey) (*FAMEAttribKeys, error)

GenerateAttribKeys given a set of attributes gamma and the master secret key generates keys that can be used for the decryption of any ciphertext encoded with a policy for which attributes gamma are sufficient.

type FAMEAttribKeys

type FAMEAttribKeys struct {
	K0        [3]*bn256.G2
	K         [][3]*bn256.G1
	KPrime    [3]*bn256.G1
	AttribToI map[string]int
	SkCH      *big.Int
}

FAMEAttribKeys represents keys corresponding to attributes possessed by an entity and used for decrypting in a FAME scheme.

type FAMECipher

type FAMECipher struct {
	Ct0     [3]*bn256.G2
	Ct      [][3]*bn256.G1
	CtPrime *bn256.GT
	Msp     *abe.MSP
	Msg     *big.Int
	Hash    *bn256.G2
	RandomR *RandomHashR
}

FAMECipher represents a ciphertext of a FAME scheme.

type FAMEPubKey

type FAMEPubKey struct {
	PartG2 [2]*bn256.G2
	PartGT [2]*bn256.GT
	PkCH   *bn256.G2
}

FAMEPubKey represents a public key of a FAME scheme.

type FAMESecKey

type FAMESecKey struct {
	PartInt [4]*big.Int
	PartG1  [3]*bn256.G1
	SkCH    *big.Int
}

FAMESecKey represents a master secret key of a FAME scheme.

type RandomHashR

type RandomHashR struct {
	Quotient  *big.Int
	Remainder *big.Int
}

type SignedData

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

SignedData is used to represent the general triplet required to verify a signature This is intended to be generic across crypto schemes, while most crypto schemes will include the signing identity and a nonce within the Data, this is left to the crypto implementation.

func ConfigUpdateEnvelopeAsSignedData

func ConfigUpdateEnvelopeAsSignedData(ce *common.ConfigUpdateEnvelope) ([]*SignedData, error)

ConfigUpdateEnvelopeAsSignedData returns the set of signatures for the ConfigUpdateEnvelope as SignedData or an error indicating why this was not possible.

func EnvelopeAsSignedData

func EnvelopeAsSignedData(env *common.Envelope) ([]*SignedData, error)

EnvelopeAsSignedData returns the signatures for the Envelope as SignedData slice of length 1 or an error indicating why this was not possible.

type Signer

type Signer interface {
	Sign(msg []byte) ([]byte, error)
	Serialize() ([]byte, error)
}

Signer is the interface needed to sign a transaction

type VerifierBuilder

type VerifierBuilder func(block *cb.Block) BlockVerifierFunc

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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