Skip to content

Instantly share code, notes, and snippets.

@stefandeml
Created April 3, 2019 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stefandeml/23c3f92a722f7565a0be22616177a212 to your computer and use it in GitHub Desktop.
Save stefandeml/23c3f92a722f7565a0be22616177a212 to your computer and use it in GitHub Desktop.
import "ecc/babyjubjubParams.code" as context
import "ecc/proofOfOwnership.code" as proofOfOwnership
import "hashes/sha256/512bitPacked.code" as sha256packed
def proofOfKnowledge(private field i1, private field i2, private field i3, private field i4, field h0, field h1) -> (field):
digest = sha256packed([i1, i2, i3, i4])
digest[0] == h0
digest[1] == h1
return 1
def main(private field i1, private field i2, private field i3, private field i4, field h0, field h1, private field skA, field[2] pkA, private field skB, field[2] pkB) -> (field):
context = context()
field AhasKnowledge = proofOfKnowledge(i1, i2, i3, i4, h0, h1)
field AhasOwnership = proofOfOwnership(pkA, skA, context)
field BhasOwnership = proofOfOwnership(pkB, skB, context)
field isAwithKnowledge = if AhasKnowledge == 1 && AhasOwnership == 1 then 1 else 0 fi
field out = if isAwithKnowledge == 1 || BhasOwnership == 1 then 1 else 0 fi
return out
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment