arnaucube
arnaucube/circomPublic Self-hosted repository
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}