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