1
0
Fork 0
mirror of synced 2025-09-23 12:18:44 +00:00
ZoKrates/zokrates_cli/examples/sha256/utils/32/extend.zok
2019-09-24 12:05:43 +02:00

20 lines
No EOL
669 B
Text

// EXTEND
import "./ar7xar18xars3" as AR7XAR18XAR3
import "./ar17xar19xars10" as AR17XAR19XAR10
import "./add" as ADD
def ADD(field[32] a, field[32] b, field[32] c, field[32] d) -> (field[32]):
ab = ADD(a, b)
cd = ADD(c, d)
abcd = ADD(ab, cd)
return abcd
def main(field[32] wm15, field[32] wm2, field[32] wm16, field[32] wm7) -> (field[32]):
// s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3)
szero = AR7XAR18XAR3(wm15)
// s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10)
sone = AR17XAR19XAR10(wm2)
// w[i] := w[i-16] + s0 + w[i-7] + s1
wfb = ADD(wm16, szero, wm7, sone)
return wfb