Package dleq
Package dleq provides zero-knowledge proofs of Discrete-Logarithm Equivalence (DLEQ).
This implementation is compatible with the one used for VOPRFs [1].
It supports batching proofs to amortize the cost of the proof generation and
verification.
References:
[1] draft-irtf-cfrg-voprf: https://datatracker.ietf.org/doc/draft-irtf-cfrg-voprf
- type Params
- type Proof
- func (p *Proof) MarshalBinary() ([]byte, error)
- func (p *Proof) UnmarshalBinary(g group.Group, data []byte) error
- type Prover
- func (p Prover) Prove(k group.Scalar, a, ka, b, kb group.Element, rnd io.Reader) (*Proof, error)
- func (p Prover) ProveBatch(k group.Scalar, a, ka group.Element, bi, kbi []group.Element, rnd io.Reader) (*Proof, error)
- func (p Prover) ProveBatchWithRandomness(k group.Scalar, a, ka group.Element, bi, kbi []group.Element, rnd group.Scalar) (*Proof, error)
- func (p Prover) ProveWithRandomness(k group.Scalar, a, ka, b, kb group.Element, rnd group.Scalar) (*Proof, error)
- type Verifier
- func (v Verifier) Verify(a, ka, b, kb group.Element, p *Proof) bool
- func (v Verifier) VerifyBatch(a, ka group.Element, bi, kbi []group.Element, p *Proof) bool
Package files
dleq.go
type Params struct {
G group.Group
H crypto.Hash
DST []byte
}
type Proof struct {
}
func (p *Proof) MarshalBinary() ([]byte, error)
func (p *Proof) UnmarshalBinary(g group.Group, data []byte) error
type Prover struct{ Params }
func (Prover) Prove
¶
func (p Prover) Prove(k group.Scalar, a, ka, b, kb group.Element, rnd io.Reader) (*Proof, error)
func (p Prover) ProveBatch(k group.Scalar, a, ka group.Element, bi, kbi []group.Element, rnd io.Reader) (*Proof, error)
func (p Prover) ProveBatchWithRandomness(
k group.Scalar,
a, ka group.Element,
bi, kbi []group.Element,
rnd group.Scalar,
) (*Proof, error)
func (p Prover) ProveWithRandomness(k group.Scalar, a, ka, b, kb group.Element, rnd group.Scalar) (*Proof, error)
type Verifier struct{ Params }
func (Verifier) Verify
¶
func (v Verifier) Verify(a, ka, b, kb group.Element, p *Proof) bool
func (v Verifier) VerifyBatch(a, ka group.Element, bi, kbi []group.Element, p *Proof) bool