gnark-plonky2-verifier/sha512/t2.go
sha512/t2.goRaw
1package sha512
2
3import (
4 "github.com/consensys/gnark/frontend"
5)
6
7
8func T2_512(api frontend.API, a, b, c []frontend.Variable) ([]frontend.Variable) {
9 if len(a) != 64 { panic("bad length") }
10 if len(b) != 64 { panic("bad length") }
11 if len(c) != 64 { panic("bad length") }
12
13 bigsigma0 := BigSigma512(a, 28, 34, 39)
14 maj := Maj_t512(a, b, c)
15
16 return BinSum(maj, bigsigma0)
17}
18
19// template T2_512() {
20// signal input a[64];
21// signal input b[64];
22// signal input c[64];
23// signal output out[64];
24// var k;
25
26// component bigsigma0 = BigSigma512(28, 34, 39);
27// component maj = Maj_t512(64);
28// for (k=0; k<64; k++) {
29// bigsigma0.in[k] <== a[k];
30// maj.a[k] <== a[k];
31// maj.b[k] <== b[k];
32// maj.c[k] <== c[k];
33// }
34
35// component sum = BinSum(64, 2);
36
37// for (k=0; k<64; k++) {
38// sum.in[0][k] <== bigsigma0.out[k];
39// sum.in[1][k] <== maj.out[k];
40// }
41
42// for (k=0; k<64; k++) {
43// out[k] <== sum.out[k];
44// }
45// }