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