gnark-plonky2-verifier/sha512/ch.go
sha512/ch.goRaw
1package sha512
2
3import (
4 "github.com/consensys/gnark/frontend"
5)
6
7func Ch_t512(api frontend.API, a, b, c []frontend.Variable) ([]frontend.Variable) {
8 n := len(a)
9 if len(a) != n { panic("bad length") }
10 if len(b) != n { panic("bad length") }
11 if len(c) != n { panic("bad length") }
12 out := make([]frontend.Variable, n)
13 for k := 0; k < n; k++ {
14 out[k] = api.Add(api.Mul(a[k], api.Sub(b[k], c[k])), c[k]);
15 }
16 return out
17}
18
19// template Ch_t512(n) {
20// signal input a[n];
21// signal input b[n];
22// signal input c[n];
23// signal output out[n];
24
25// for (var k=0; k<n; k++) {
26// out[k] <== a[k] * (b[k]-c[k]) + c[k];
27// }
28// }