arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
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}