circom/circuits/sha256/sha256_2.circom
circuits/sha256/sha256_2.circomRaw
1
2include "sha256compression.circom";
3include "bitify.circom"
4
5template Sha256_2() {
6 signal input a;
7 signal input b;
8 signal output out;
9
10 component bits2num = Bits2Num(216);
11 component num2bits[2];
12
13 num2bits[0] = Num2Bits(216);
14 num2bits[1] = Num2Bits(216);
15
16 num2bits[0].in <== a;
17 num2bits[1].in <== b;
18
19 component sha256compression = Sha256compression() ;
20
21 var i;
22
23 for (i=0; i<216; i++) {
24 sha256compression.inp[i] <== num2bits[0].out[215-i];
25 sha256compression.inp[i+216] <== num2bits[1].out[215-i];
26 }
27
28 sha256compression.inp[432] <== 1;
29
30 for (i=433; i<503; i++) {
31 sha256compression.inp[i] <== 0;
32 }
33
34 sha256compression.inp[503] <== 1;
35 sha256compression.inp[504] <== 1;
36 sha256compression.inp[505] <== 0;
37 sha256compression.inp[506] <== 1;
38 sha256compression.inp[507] <== 1;
39 sha256compression.inp[508] <== 0;
40 sha256compression.inp[509] <== 0;
41 sha256compression.inp[510] <== 0;
42 sha256compression.inp[511] <== 0;
43
44 for (i=0; i<216; i++) {
45 bits2num.in[i] <== sha256compression.out[255-i];
46 }
47
48 out <== bits2num.out;
49}