1
0
Fork 0
mirror of synced 2025-09-24 04:40:05 +00:00
ZoKrates/zokrates_cli/examples/sha256/sha256tests.code

430 lines
No EOL
8.4 KiB
Text

import "./binary/not.code" as NOT
import "./binary/and.code" as AND
import "./binary/or.code" as OR
import "./binary/xor.code" as XOR
import "./binary/fulladd.code" as FULLADD
import "./bitwise/32/not.code" as NOT
import "./utils/32/ar6xar11xar25.code" as AR6XAR11XAR25
import "./utils/32/ar2xar13xar22.code" as AR2XAR13XAR22
import "./utils/32/ar7xar18xars3.code" as AR7XAR18XAR3
import "./utils/32/ar17xar19xars10.code" as AR17XAR19XAR10
import "./utils/32/add.code" as ADD
import "./bitwise/32/xor.code" as XOR
import "./bitwise/32/andxornotand.code" as ANDXORNOTAND
import "./bitwise/32/andxorandxorand.code" as ANDXORANDXORAND
import "./bitwise/32/copy.code" as COPY
import "./utils/32/extend.code" as EXTEND
def ANDtest() -> (field):
1 == AND(1, 1)
0 == AND(1, 0)
0 == AND(0, 1)
0 == AND(0, 0)
return 1
def ORtest() -> (field):
1 == OR(1, 0)
1 == OR(0, 1)
0 == OR(0, 0)
1 == OR(1, 1)
return 1
def XORtest() -> (field):
1 == XOR(1, 0)
0 == XOR(0, 0)
1 == XOR(0, 1)
0 == XOR(1, 1)
return 1
def NOTtest() -> (field):
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 = NOT(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
b18 == 1
b17 == 1
b16 == 1
b15 == 1
b14 == 1
b13 == 1
return 1
def FULLADDtest() -> (field):
a, b = FULLADD(0,0,0)
a == 0
b == 0
a, b = FULLADD(0,0,1)
a == 1
b == 0
a, b = FULLADD(0,1,0)
a == 1
b == 0
a, b = FULLADD(0,1,1)
a == 0
b == 1
a, b = FULLADD(1,0,0)
a == 1
b == 0
a, b = FULLADD(1,0,1)
a == 0
b == 1
a, b = FULLADD(1,1,0)
a == 0
b == 1
a, b = FULLADD(1,1,1)
a == 1
b == 1
return 1
def AR6XORAR11XORAR25test() -> (field):
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 = AR6XAR11XAR25(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1)
b31 == 1
b30 == 1
b29 == 0
b28 == 1
b27 == 0
b26 == 0
b25 == 1
b24 == 1
b23 == 1
b22 == 1
b21 == 1
b20 == 0
b19 == 1
b18 == 0
b17 == 1
b16 == 0
b15 == 1
b14 == 1
b13 == 1
b12 == 0
b11 == 0
b10 == 1
b9 == 0
b8 == 0
b7 == 1
b6 == 1
b5 == 1
b4 == 0
b3 == 0
b2 == 1
b1 == 1
b0 == 1
return 1
def AR2XORAR13XORAR22test() -> (field):
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 = AR2XAR13XAR22(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1)
b31 == 0
b30 == 0
b29 == 0
b28 == 1
b27 == 1
b26 == 1
b25 == 1
b24 == 0
b23 == 1
b22 == 1
b21 == 1
b20 == 1
b19 == 0
b18 == 1
b17 == 1
b16 == 0
b15 == 1
b14 == 0
b13 == 0
b12 == 1
b11 == 1
b10 == 1
b9 == 1
b8 == 1
b7 == 0
b6 == 1
b5 == 1
b4 == 1
b3 == 1
b2 == 0
b1 == 1
b0 == 1
return 1
def AR7XORAR18XORAR3test() -> (field):
// s0 of last digest message of empty message
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 = AR7XAR18XAR3(1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,0,0,1,1,0,0,1,0,1)
b31 == 0
b30 == 1
b29 == 1
b28 == 0
b27 == 0
b26 == 0
b25 == 1
b24 == 1
b23 == 1
b22 == 1
b21 == 1
b20 == 1
b19 == 1
b18 == 0
b17 == 1
b16 == 1
b15 == 0
b14 == 1
b13 == 0
b12 == 1
b11 == 0
b10 == 0
b9 == 1
b8 == 1
b7 == 1
b6 == 1
b5 == 1
b4 == 0
b3 == 1
b2 == 1
b1 == 1
b0 == 1
return 1
def AR17XORAR19XORAR10test() -> (field):
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 = AR17XAR19XAR10(1,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0)
b31 == 0
b30 == 1
b29 == 0
b28 == 1
b27 == 0
b26 == 1
b25 == 1
b24 == 0
b23 == 0
b22 == 1
b21 == 0
b20 == 0
b19 == 0
b18 == 1
b17 == 0
b16 == 1
b15 == 1
b14 == 1
b13 == 1
b12 == 1
b11 == 1
b10 == 0
b9 == 0
b8 == 1
b7 == 0
b6 == 1
b5 == 0
b4 == 1
b3 == 1
b2 == 1
b1 == 0
b0 == 0
return 1
// 00000101000010001001010101000010 -> 01011000000010000000000000000000 DOESN'T PASS
// 00100010000000000000100000000000 -> 00000101000010001001010101000010 PASSES
def AR17XORAR19XORAR10testnull() -> (field):
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 = AR17XAR19XAR10(0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0)
b31 == 0
b30 == 1
b29 == 0
b28 == 1
b27 == 1
b26 == 0
b25 == 0
b24 == 0
b23 == 0
b22 == 0
b21 == 0
b20 == 0
b19 == 1
b18 == 0
b17 == 0
b16 == 0
b15 == 0
b14 == 0
b13 == 0
b12 == 0
b11 == 0
b10 == 0
b9 == 0
b8 == 0
b7 == 0
b6 == 0
b5 == 0
b4 == 0
b3 == 0
b2 == 0
b1 == 0
b0 == 0
return 1
def ADDtest() -> (field):
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 = ADD(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1)
b31 == 1
b30 == 0
b29 == 1
b28 == 0
b27 == 1
b26 == 0
b25 == 0
b24 == 0
b23 == 1
b22 == 0
b21 == 1
b20 == 0
b19 == 1
b18 == 1
b17 == 0
b16 == 0
b15 == 0
b14 == 1
b13 == 0
b12 == 0
b11 == 0
b10 == 1
b9 == 0
b8 == 0
b7 == 1
b6 == 1
b5 == 0
b4 == 1
b3 == 1
b2 == 0
b1 == 1
b0 == 0
return 1
def COPYtest() -> (field):
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 = COPY(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0)
b18 == 0
b17 == 0
b16 == 1
b15 == 0
b14 == 0
b13 == 1
return 1
def ANDXORANDXORANDtest() -> (field):
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 = ANDXORANDXORAND(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1)
b31 == 0
b30 == 1
b29 == 0
b28 == 1
b27 == 0
b26 == 1
b25 == 0
b24 == 0
b23 == 0
b22 == 1
b21 == 0
b20 == 1
b19 == 0
b18 == 1
b17 == 1
b16 == 0
b15 == 0
b14 == 0
b13 == 1
b12 == 0
b11 == 0
b10 == 0
b9 == 1
b8 == 0
b7 == 0
b6 == 1
b5 == 1
b4 == 0
b3 == 1
b2 == 1
b1 == 0
b0 == 1
return 1
def ANDXORNOTANDtest() -> (field):
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 = ANDXORNOTAND(0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1)
b31 == 0
b30 == 1
b29 == 1
b28 == 1
b27 == 0
b26 == 1
b25 == 0
b24 == 1
b23 == 1
b22 == 1
b21 == 0
b20 == 1
b19 == 0
b18 == 1
b17 == 1
b16 == 1
b15 == 1
b14 == 1
b13 == 1
b12 == 0
b11 == 1
b10 == 1
b9 == 1
b8 == 1
b7 == 1
b6 == 1
b5 == 1
b4 == 1
b3 == 1
b2 == 1
b1 == 0
b0 == 1
return 1
def EXTENDtest() -> (field):
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 = EXTEND(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
wfb31 == 1
wfb30 == 0
wfb29 == 0
wfb28 == 0
wfb27 == 0
wfb26 == 0
wfb25 == 0
wfb24 == 0
wfb23 == 0
wfb22 == 0
wfb21 == 0
wfb20 == 0
wfb19 == 0
wfb18 == 0
wfb17 == 0
wfb16 == 0
wfb15 == 0
wfb14 == 0
wfb13 == 0
wfb12 == 0
wfb11 == 0
wfb10 == 0
wfb9 == 0
wfb8 == 0
wfb7 == 0
wfb6 == 0
wfb5 == 0
wfb4 == 0
wfb3 == 0
wfb2 == 0
wfb1 == 0
wfb0 == 0
return 1
def main() -> (field):
field a = ANDtest()
field b = ORtest()
field c = XORtest()
field d = NOTtest()
field e = FULLADDtest()
field h = AR6XORAR11XORAR25test()
field i = AR2XORAR13XORAR22test()
field j = AR7XORAR18XORAR3test()
field k = AR17XORAR19XORAR10testnull()
field l = ADDtest()
field m = COPYtest()
field n = ANDXORANDXORANDtest()
field o = ANDXORNOTANDtest()
field p = EXTENDtest()
return 1