Documentation ¶
Overview ¶
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Index ¶
- func HashMessages(m []*math.Zr, c *math.Curve) (*math.Zr, error)
- type MembershipCommitment
- type MembershipProof
- type MembershipProver
- type MembershipRandomness
- type MembershipVerifier
- type MembershipWitness
- type POK
- type POKProver
- type POKRandomness
- type POKVerifier
- type POKWitness
- type SigCommitment
- type SigProof
- type SigProver
- type SigRandomness
- type SigVerifier
- type SigWitness
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type MembershipCommitment ¶
MembershipCommitment is commitment to randomness used to compute MembershipProof
type MembershipProof ¶
type MembershipProof struct { // Challenge is the challenge computed for the ZK proof Challenge *math.Zr // Obfuscated Pointcheval-Sanders Signature Signature *pssign.Signature // Proof of knowledge of committed value Value *math.Zr // Proof of knowledge of the blinding factor in the Pedersen commitment ComBlindingFactor *math.Zr // Proof of knowledge of the blinding factor used to obfuscate Pointcheval-Sanders signature SigBlindingFactor *math.Zr // Proof of knowledge of the hash signed in Pointcheval-Sanders signature Hash *math.Zr // Pedersen commitment to Value Commitment *math.G1 }
MembershipProof is a ZK proof that shows that a committed value is signed using Pointcheval-Sanders signature
func (*MembershipProof) Deserialize ¶
func (p *MembershipProof) Deserialize(raw []byte) error
Deserialize un-marshals MembershipProof
func (*MembershipProof) Serialize ¶
func (p *MembershipProof) Serialize() ([]byte, error)
Serialize marshals MembershipProof
type MembershipProver ¶
type MembershipProver struct { *MembershipVerifier // contains filtered or unexported fields }
MembershipProver is a ZK prover that shows that a committed value is signed with Pointcheval-Sanders signature
func NewMembershipProver ¶
func NewMembershipProver(witness *MembershipWitness, com, P *math.G1, Q *math.G2, PK []*math.G2, pp []*math.G1, curve *math.Curve) *MembershipProver
NewMembershipProver returns a MembershipWitnessProver for the passed MembershipWitness
func (*MembershipProver) Prove ¶
func (p *MembershipProver) Prove() (*MembershipProof, error)
Prove produces a MembershipProof
type MembershipRandomness ¶
type MembershipRandomness struct {
// contains filtered or unexported fields
}
MembershipRandomness is randomness used to compute MembershipProof
type MembershipVerifier ¶
type MembershipVerifier struct { *POKVerifier PedersenParams []*math.G1 CommitmentToValue *math.G1 }
MembershipVerifier verifies whether a committed value has been signed using Pointcheval-Sanders signature
func NewMembershipVerifier ¶
func NewMembershipVerifier(com, P *math.G1, Q *math.G2, PK []*math.G2, pp []*math.G1, curve *math.Curve) *MembershipVerifier
NewMembershipVerifier returns a MembershipVerifier for the passed commitment com The verifier checks if the committed value in com is signed using Pointcheval-Sanders and the signature verifies correctly relative to the passed public key PK
func (*MembershipVerifier) Verify ¶
func (v *MembershipVerifier) Verify(proof *MembershipProof) error
Verify checks the validity of a serialized MembershipProof Verify returns an error if the serialized MembershipProof is invalid
type MembershipWitness ¶
type MembershipWitness struct {
// contains filtered or unexported fields
}
MembershipWitness contains the information needed to generate a MembershipProof
func NewMembershipWitness ¶
NewMembershipWitness returns a MembershipWitness as a function of the passed arguments
type POK ¶
type POK struct { // Challenge is the challenge used in the proof Challenge *math.Zr // Signature is an obfuscated Pointcheval-Sanders signature Signature *pssign.Signature // Proof of signed messages Messages []*math.Zr // BlindingFactor is randomness used to obfuscate Pointcheval-Sadners signature BlindingFactor *math.Zr // Proof of hash (hash is computed as the hash of the signed messages) Hash *math.Zr }
POK is a zero-knowledge proof of knowledge of a Pointcheval-Sanders Signature
type POKProver ¶
type POKProver struct { *POKVerifier Witness *POKWitness // contains filtered or unexported fields }
POKProver produces a POK proof
type POKRandomness ¶
type POKRandomness struct {
// contains filtered or unexported fields
}
POKRandomness is the Randomness used during the POK proof
type POKVerifier ¶
type POKVerifier struct { // PK is the public key under which the signature should be valid PK []*math.G2 Q *math.G2 P *math.G1 Curve *math.Curve }
POKVerifier validates if a POK proof is valid
func (*POKVerifier) Verify ¶
func (v *POKVerifier) Verify(proof *POK) error
Verify checks if the passed POK is valid; if not, Verify returns an error
type POKWitness ¶
type POKWitness struct { // Messages corresponds to signed messages Messages []*math.Zr // Signature is Pointcheval-Sanders signature Signature *pssign.Signature // BlindingFactor is the randomness used to obfuscate Pointcheval-Sanders signature // for the POK proof BlindingFactor *math.Zr }
POKWitness encodes the witness of POK proof
type SigCommitment ¶
SigCommitment encodes the commitments to the randomness used in the SigProof
type SigProof ¶
type SigProof struct { // Challenge is the challenge used in the proof Challenge *math.Zr // Hidden is an array that contains proofs of knowledge of hidden messages Hidden []*math.Zr // Hash is the proof of knowledge of the hash signed in Pointcheval-Sanders signature // If hash is computed as a function of the signed messages, it should never be disclosed // Hash cannot be nil Hash *math.Zr // Signature is an obfuscated Pointcheval-Sanders signature Signature *pssign.Signature // SigBlindingFactor is the proof of knowledge of the randomness used to obfuscate // Pointcheval-Sanders signature SigBlindingFactor *math.Zr // ComBlindingFactor is a proof of knowledge of the randomness used to compute // the Pedersen commitment ComBlindingFactor *math.Zr // Commitment is a Pedersen commitment of to the hidden messages Commitment *math.G1 // for hidden values }
SigProof is a proof of knowledge of Pointcheval-Signature with partial message disclosure
type SigProver ¶
type SigProver struct { *SigVerifier Commitment *SigCommitment // contains filtered or unexported fields }
SigProver produces a proof of knowledge Pointcheval-Sanders signature with partial message disclosure
func NewSigProver ¶
func NewSigProver(hidden, disclosed []*math.Zr, signature *pssign.Signature, hash, bf *math.Zr, com *math.G1, hiddenindices, disclosedindices []int, P *math.G1, Q *math.G2, PK []*math.G2, pp []*math.G1, curve *math.Curve) *SigProver
NewSigProver returns a SigProver as a function of the passed arguments
type SigRandomness ¶
type SigRandomness struct {
// contains filtered or unexported fields
}
SigRandomness represents the randomness used in the SigProof
type SigVerifier ¶
type SigVerifier struct { *POKVerifier // indices of messages to be hidden in the signed vector HiddenIndices []int // indices of messages to be disclosed DisclosedIndices []int // Disclosed contains the content of the disclosed messages Disclosed []*math.Zr // PedersenParams corresponds to Pedersen commitment generators PedersenParams []*math.G1 // CommitmentToMessages is a Pedersen commitment to the signed messages CommitmentToMessages *math.G1 }
SigVerifier checks the validity of SigProof
func NewSigVerifier ¶
func NewSigVerifier(hidden, disclosed []int, disclosedInf []*math.Zr, com, P *math.G1, Q *math.G2, PK []*math.G2, pp []*math.G1, curve *math.Curve) *SigVerifier
NewSigVerifier returns a SigVerifier as a function of the passed arguments
func (*SigVerifier) Verify ¶
func (v *SigVerifier) Verify(p *SigProof) error
Verify returns an error if the passed SigProof is invalid
type SigWitness ¶
type SigWitness struct {
// contains filtered or unexported fields
}
SigWitness is the witness for SigProof
func NewSigWitness ¶
NewSigWitness instantiates a SigWitness with the passed arguments