gnark-plonky2-verifier/plonky2_verifier/hash.go
plonky2_verifier/hash.goRaw
1package plonky2_verifier
2
3import (
4 "fmt"
5 . "gnark-ed25519/field"
6
7 "github.com/consensys/gnark/frontend"
8)
9
10func SelectHash(fieldAPI frontend.API, bit frontend.Variable, leftHash, rightHash Hash) Hash {
11 var returnHash Hash
12 for i := 0; i < 4; i++ {
13 returnHash[i] = fieldAPI.Select(bit, leftHash[i], rightHash[i]).(F)
14 }
15
16 return returnHash
17}
18
19func Lookup2Hash(fieldAPI frontend.API, b0 frontend.Variable, b1 frontend.Variable, h0, h1, h2, h3 Hash) Hash {
20 var returnHash Hash
21
22 for i := 0; i < 4; i++ {
23 returnHash[i] = fieldAPI.Lookup2(b0, b1, h0[i], h1[i], h2[i], h3[i]).(F)
24 }
25
26 return returnHash
27}
28
29func AssertIsEqualHash(fieldAPI frontend.API, h1, h2 Hash) {
30 for i := 0; i < 4; i++ {
31 fieldAPI.AssertIsEqual(h1[0], h2[0])
32 }
33}
34
35func PrintHash(f frontend.API, h Hash) {
36 for i := 0; i < 4; i++ {
37 fmt.Println("Hash Limb", i)
38 f.Println(h[i])
39 }
40}