arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/sha512/t1.go
sha512/t1.goRaw
 1package sha512
 2
 3import (
 4    "github.com/consensys/gnark/frontend"
 5)
 6
 7
 8func T1_512(api frontend.API, h, e, f, g, k, w []frontend.Variable) ([]frontend.Variable) {
 9    if len(h) != 64 { panic("bad length") }
10    if len(e) != 64 { panic("bad length") }
11    if len(f) != 64 { panic("bad length") }
12    if len(g) != 64 { panic("bad length") }
13    if len(k) != 64 { panic("bad length") }
14    if len(w) != 64 { panic("bad length") }
15
16    ch := Ch_t512(e, f, g)
17    bigsigma1 := BigSigma512(e, 14, 18, 41)
18
19    return BinSum(h, bigsigma1, ch, k, w)
20}
21
22// template T1_512() {
23//     signal input h[64];
24//     signal input e[64];
25//     signal input f[64];
26//     signal input g[64];
27//     signal input k[64];
28//     signal input w[64];
29//     signal output out[64];
30
31//     var ki;
32
33//     component ch = Ch_t512(64);
34//     component bigsigma1 = BigSigma512(14, 18, 41);
35
36//     for (ki=0; ki<64; ki++) {
37//         bigsigma1.in[ki] <== e[ki];
38//         ch.a[ki] <== e[ki];
39//         ch.b[ki] <== f[ki];
40//         ch.c[ki] <== g[ki];
41//     }
42
43//     component sum = BinSum(64, 5);
44//     for (ki=0; ki<64; ki++) {
45//         sum.in[0][ki] <== h[ki];
46//         sum.in[1][ki] <== bigsigma1.out[ki];
47//         sum.in[2][ki] <== ch.out[ki];
48//         sum.in[3][ki] <== k[ki];
49//         sum.in[4][ki] <== w[ki];
50//     }
51
52//     for (ki=0; ki<64; ki++) {
53//         out[ki] <== sum.out[ki];
54//     }
55// }