1
0
Fork 0
mirror of synced 2025-09-23 12:18:44 +00:00
ZoKrates/zokrates_cli/examples/sha256/utils/32/extend.code
2018-08-21 13:05:17 +02:00

20 lines
No EOL
8.2 KiB
Text

// EXTEND
import "./ar7xar18xars3.code" as AR7XAR18XAR3
import "./ar17xar19xars10.code" as AR17XAR19XAR10
import "./add.code" as ADD
def ADD(field a31, field a30, field a29, field a28, field a27, field a26, field a25, field a24, field a23, field a22, field a21, field a20, field a19, field a18, field a17, field a16, field a15, field a14, field a13, field a12, field a11, field a10, field a9, field a8, field a7, field a6, field a5, field a4, field a3, field a2, field a1, field a0, field b31, field b30, field b29, field b28, field b27, field b26, field b25, field b24, field b23, field b22, field b21, field b20, field b19, field b18, field b17, field b16, field b15, field b14, field b13, field b12, field b11, field b10, field b9, field b8, field b7, field b6, field b5, field b4, field b3, field b2, field b1, field b0, field c31, field c30, field c29, field c28, field c27, field c26, field c25, field c24, field c23, field c22, field c21, field c20, field c19, field c18, field c17, field c16, field c15, field c14, field c13, field c12, field c11, field c10, field c9, field c8, field c7, field c6, field c5, field c4, field c3, field c2, field c1, field c0, field d31, field d30, field d29, field d28, field d27, field d26, field d25, field d24, field d23, field d22, field d21, field d20, field d19, field d18, field d17, field d16, field d15, field d14, field d13, field d12, field d11, field d10, field d9, field d8, field d7, field d6, field d5, field d4, field d3, field d2, field d1, field d0) -> (field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field):
ab31, ab30, ab29, ab28, ab27, ab26, ab25, ab24, ab23, ab22, ab21, ab20, ab19, ab18, ab17, ab16, ab15, ab14, ab13, ab12, ab11, ab10, ab9, ab8, ab7, ab6, ab5, ab4, ab3, ab2, ab1, ab0 = ADD(a31, a30, a29, a28, a27, a26, a25, a24, a23, a22, a21, a20, a19, a18, a17, a16, a15, a14, a13, a12, a11, a10, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0, b31, b30, b29, b28, b27, b26, b25, b24, b23, b22, b21, b20, b19, b18, b17, b16, b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0)
cd31, cd30, cd29, cd28, cd27, cd26, cd25, cd24, cd23, cd22, cd21, cd20, cd19, cd18, cd17, cd16, cd15, cd14, cd13, cd12, cd11, cd10, cd9, cd8, cd7, cd6, cd5, cd4, cd3, cd2, cd1, cd0 = ADD(c31, c30, c29, c28, c27, c26, c25, c24, c23, c22, c21, c20, c19, c18, c17, c16, c15, c14, c13, c12, c11, c10, c9, c8, c7, c6, c5, c4, c3, c2, c1, c0, d31, d30, d29, d28, d27, d26, d25, d24, d23, d22, d21, d20, d19, d18, d17, d16, d15, d14, d13, d12, d11, d10, d9, d8, d7, d6, d5, d4, d3, d2, d1, d0)
abcd31, abcd30, abcd29, abcd28, abcd27, abcd26, abcd25, abcd24, abcd23, abcd22, abcd21, abcd20, abcd19, abcd18, abcd17, abcd16, abcd15, abcd14, abcd13, abcd12, abcd11, abcd10, abcd9, abcd8, abcd7, abcd6, abcd5, abcd4, abcd3, abcd2, abcd1, abcd0 = ADD(ab31, ab30, ab29, ab28, ab27, ab26, ab25, ab24, ab23, ab22, ab21, ab20, ab19, ab18, ab17, ab16, ab15, ab14, ab13, ab12, ab11, ab10, ab9, ab8, ab7, ab6, ab5, ab4, ab3, ab2, ab1, ab0, cd31, cd30, cd29, cd28, cd27, cd26, cd25, cd24, cd23, cd22, cd21, cd20, cd19, cd18, cd17, cd16, cd15, cd14, cd13, cd12, cd11, cd10, cd9, cd8, cd7, cd6, cd5, cd4, cd3, cd2, cd1, cd0)
return abcd31, abcd30, abcd29, abcd28, abcd27, abcd26, abcd25, abcd24, abcd23, abcd22, abcd21, abcd20, abcd19, abcd18, abcd17, abcd16, abcd15, abcd14, abcd13, abcd12, abcd11, abcd10, abcd9, abcd8, abcd7, abcd6, abcd5, abcd4, abcd3, abcd2, abcd1, abcd0
def main(field wm15b31, field wm15b30, field wm15b29, field wm15b28, field wm15b27, field wm15b26, field wm15b25, field wm15b24, field wm15b23, field wm15b22, field wm15b21, field wm15b20, field wm15b19, field wm15b18, field wm15b17, field wm15b16, field wm15b15, field wm15b14, field wm15b13, field wm15b12, field wm15b11, field wm15b10, field wm15b9, field wm15b8, field wm15b7, field wm15b6, field wm15b5, field wm15b4, field wm15b3, field wm15b2, field wm15b1, field wm15b0, field wm2b31, field wm2b30, field wm2b29, field wm2b28, field wm2b27, field wm2b26, field wm2b25, field wm2b24, field wm2b23, field wm2b22, field wm2b21, field wm2b20, field wm2b19, field wm2b18, field wm2b17, field wm2b16, field wm2b15, field wm2b14, field wm2b13, field wm2b12, field wm2b11, field wm2b10, field wm2b9, field wm2b8, field wm2b7, field wm2b6, field wm2b5, field wm2b4, field wm2b3, field wm2b2, field wm2b1, field wm2b0, field wm16b31, field wm16b30, field wm16b29, field wm16b28, field wm16b27, field wm16b26, field wm16b25, field wm16b24, field wm16b23, field wm16b22, field wm16b21, field wm16b20, field wm16b19, field wm16b18, field wm16b17, field wm16b16, field wm16b15, field wm16b14, field wm16b13, field wm16b12, field wm16b11, field wm16b10, field wm16b9, field wm16b8, field wm16b7, field wm16b6, field wm16b5, field wm16b4, field wm16b3, field wm16b2, field wm16b1, field wm16b0, field wm7b31, field wm7b30, field wm7b29, field wm7b28, field wm7b27, field wm7b26, field wm7b25, field wm7b24, field wm7b23, field wm7b22, field wm7b21, field wm7b20, field wm7b19, field wm7b18, field wm7b17, field wm7b16, field wm7b15, field wm7b14, field wm7b13, field wm7b12, field wm7b11, field wm7b10, field wm7b9, field wm7b8, field wm7b7, field wm7b6, field wm7b5, field wm7b4, field wm7b3, field wm7b2, field wm7b1, field wm7b0) -> (field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field, field):
// s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3)
szero31, szero30, szero29, szero28, szero27, szero26, szero25, szero24, szero23, szero22, szero21, szero20, szero19, szero18, szero17, szero16, szero15, szero14, szero13, szero12, szero11, szero10, szero9, szero8, szero7, szero6, szero5, szero4, szero3, szero2, szero1, szero0 = AR7XAR18XAR3(wm15b31, wm15b30, wm15b29, wm15b28, wm15b27, wm15b26, wm15b25, wm15b24, wm15b23, wm15b22, wm15b21, wm15b20, wm15b19, wm15b18, wm15b17, wm15b16, wm15b15, wm15b14, wm15b13, wm15b12, wm15b11, wm15b10, wm15b9, wm15b8, wm15b7, wm15b6, wm15b5, wm15b4, wm15b3, wm15b2, wm15b1, wm15b0)
// s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10)
sone31, sone30, sone29, sone28, sone27, sone26, sone25, sone24, sone23, sone22, sone21, sone20, sone19, sone18, sone17, sone16, sone15, sone14, sone13, sone12, sone11, sone10, sone9, sone8, sone7, sone6, sone5, sone4, sone3, sone2, sone1, sone0 = AR17XAR19XAR10(wm2b31, wm2b30, wm2b29, wm2b28, wm2b27, wm2b26, wm2b25, wm2b24, wm2b23, wm2b22, wm2b21, wm2b20, wm2b19, wm2b18, wm2b17, wm2b16, wm2b15, wm2b14, wm2b13, wm2b12, wm2b11, wm2b10, wm2b9, wm2b8, wm2b7, wm2b6, wm2b5, wm2b4, wm2b3, wm2b2, wm2b1, wm2b0)
// w[i] := w[i-16] + s0 + w[i-7] + s1
wfb31, wfb30, wfb29, wfb28, wfb27, wfb26, wfb25, wfb24, wfb23, wfb22, wfb21, wfb20, wfb19, wfb18, wfb17, wfb16, wfb15, wfb14, wfb13, wfb12, wfb11, wfb10, wfb9, wfb8, wfb7, wfb6, wfb5, wfb4, wfb3, wfb2, wfb1, wfb0 = ADD(wm16b31, wm16b30, wm16b29, wm16b28, wm16b27, wm16b26, wm16b25, wm16b24, wm16b23, wm16b22, wm16b21, wm16b20, wm16b19, wm16b18, wm16b17, wm16b16, wm16b15, wm16b14, wm16b13, wm16b12, wm16b11, wm16b10, wm16b9, wm16b8, wm16b7, wm16b6, wm16b5, wm16b4, wm16b3, wm16b2, wm16b1, wm16b0, szero31, szero30, szero29, szero28, szero27, szero26, szero25, szero24, szero23, szero22, szero21, szero20, szero19, szero18, szero17, szero16, szero15, szero14, szero13, szero12, szero11, szero10, szero9, szero8, szero7, szero6, szero5, szero4, szero3, szero2, szero1, szero0, wm7b31, wm7b30, wm7b29, wm7b28, wm7b27, wm7b26, wm7b25, wm7b24, wm7b23, wm7b22, wm7b21, wm7b20, wm7b19, wm7b18, wm7b17, wm7b16, wm7b15, wm7b14, wm7b13, wm7b12, wm7b11, wm7b10, wm7b9, wm7b8, wm7b7, wm7b6, wm7b5, wm7b4, wm7b3, wm7b2, wm7b1, wm7b0, sone31, sone30, sone29, sone28, sone27, sone26, sone25, sone24, sone23, sone22, sone21, sone20, sone19, sone18, sone17, sone16, sone15, sone14, sone13, sone12, sone11, sone10, sone9, sone8, sone7, sone6, sone5, sone4, sone3, sone2, sone1, sone0)
return wfb31, wfb30, wfb29, wfb28, wfb27, wfb26, wfb25, wfb24, wfb23, wfb22, wfb21, wfb20, wfb19, wfb18, wfb17, wfb16, wfb15, wfb14, wfb13, wfb12, wfb11, wfb10, wfb9, wfb8, wfb7, wfb6, wfb5, wfb4, wfb3, wfb2, wfb1, wfb0