arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
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    inter := BinSum(api, sigma1, in7, sigma0, in16)
15    var out [64]frontend.Variable
16    for k := 0; k < 64; k++ {
17        out[k] = inter[k]
18    }
19    return out
20}
21
22
23// template SigmaPlus512() {
24//     signal input in2[64];
25//     signal input in7[64];
26//     signal input in15[64];
27//     signal input in16[64];
28//     signal output out[64];
29//     var k;
30
31//     component sigma1 = SmallSigma512(19,61,6);
32//     component sigma0 = SmallSigma512(1, 8, 7);
33//     for (k=0; k<64; k++) {
34//         sigma1.in[k] <== in2[k];
35//         sigma0.in[k] <== in15[k];
36//     }
37
38//     component sum = BinSum(64, 4);
39//     for (k=0; k<64; k++) {
40//         sum.in[0][k] <== sigma1.out[k];
41//         sum.in[1][k] <== in7[k];
42//         sum.in[2][k] <== sigma0.out[k];
43//         sum.in[3][k] <== in16[k];
44//     }
45
46//     for (k=0; k<64; k++) {
47//         out[k] <== sum.out[k];
48//     }
49// }