Skip to content

A rough implementation of four typical SigmaProtocol

Notifications You must be signed in to change notification settings

rainbowwx/SigmaProtocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 21, 2023
e6ffe3e · Mar 21, 2023

History

17 Commits
Mar 21, 2023
Mar 1, 2023
Mar 21, 2023

Repository files navigation

Introduction

This resource implements an improved SigmaProtocol——UGZK protocol():let n be a positive integer and let i [ 1 , n ] . For a given vector ${Z_i}{i \in [1,n]}$, the protocol is a proof of knowledge of a vector ${[x_i]}{i \in[1,n]}$ such that Z i = [ x i ] , where [ x i ] = O n e W a y H o m o m o r p h i s m F u n ( x )

The resource implements the struct of Non-interactive Sigma Protocol in SigmaProtocol.h, which includes five main part:

  • SigmaProtocolCommonInput: consists of public parameters used in the protocol

  • SigmaProtocolResponseMsgShort & SigmaProtocolResponseMsgBatch: the two correspond to two different implementation ways of sigma protocol

  • SigmaProtocolProver: SigmaProtocolProverShort & SigmaProtocolProverBatch

  • SigmaProtocolVerifier: SigmaProtocolVerifierShort & SigmaProtocolVerifierBatch

  • function SigmaProtocolGetchallenge: used to compute the challenge message in SigmaProtocol

The resource implements four sigma protocols:

  • Schnorr protocol: proving knowledge of the discrete logarithm w of a point Y in base G
  • DlogEquality protocol: proving equality of the known discrete logarithm w of Y 1 in base G and Y 2
  • PedersenCommitmentOpen: proving knowledge of a valid opening of a Pedersen commitment
  • Diffie-Hellman triple Protocol: proving knowledge of the exponents of a valid Diffie-Hellman triple

About

A rough implementation of four typical SigmaProtocol

Resources

Stars

Watchers

Forks

Packages

No packages published