diff --git a/zokrates_core_test/tests/tests/arrays/fun_spread.zok b/zokrates_core_test/tests/tests/arrays/fun_spread.zok index 861c05368..7a2ccd905 100644 --- a/zokrates_core_test/tests/tests/arrays/fun_spread.zok +++ b/zokrates_core_test/tests/tests/arrays/fun_spread.zok @@ -1,6 +1,6 @@ import "utils/pack/bool/nonStrictUnpack256.zok" as unpack256; def main(field[2] inputs) -> bool[512] { - bool[512] preimage512 = [...unpack256(inputs[0], 254), ...unpack256(inputs[1], 254)]; + bool[512] preimage512 = [...unpack256(inputs[0]), ...unpack256(inputs[1])]; return preimage512; } \ No newline at end of file diff --git a/zokrates_stdlib/stdlib/ecc/babyjubjub.zok b/zokrates_stdlib/stdlib/ecc/babyjubjub.zok index c7b97c3a6..85b469c0e 100644 --- a/zokrates_stdlib/stdlib/ecc/babyjubjub.zok +++ b/zokrates_stdlib/stdlib/ecc/babyjubjub.zok @@ -16,22 +16,21 @@ const field[2] G = [ 20819045374670962167435360035096875258406992893633759881276124905556507972311 // Gy ]; -const u32 bit_size = 254; def proofOfOwnership(field[2] pk, field sk) -> bool { - return edwardsProofOfOwnership(pk, sk, G, EDWARDS_A, EDWARDS_D, bit_size); + return edwardsProofOfOwnership(pk, sk, G, EDWARDS_A, EDWARDS_D); } def verifyEddsa(field[2] R, field S, field[2] A, u32[8] M0, u32[8] M1) -> bool { - return edwardsSignature(R, S, A, M0, M1, G, EDWARDS_A, EDWARDS_D, bit_size); + return edwardsSignature(R, S, A, M0, M1, G, EDWARDS_A, EDWARDS_D); } def compress(field[2] pt) -> bool[256] { field x = pt[0]; field y = pt[1]; - bool[256] xBits = unpack256(x, 254); - bool[256] mut yBits = unpack256(y, 254); + bool[256] xBits = unpack256(x); + bool[256] mut yBits = unpack256(y); bool sign = xBits[255]; yBits[0] = sign; diff --git a/zokrates_stdlib/stdlib/ecc/jubjub.zok b/zokrates_stdlib/stdlib/ecc/jubjub.zok index 54f5e7687..96c82580c 100644 --- a/zokrates_stdlib/stdlib/ecc/jubjub.zok +++ b/zokrates_stdlib/stdlib/ecc/jubjub.zok @@ -15,12 +15,11 @@ const field[2] G = [ 44412834903739585386157632289020980010620626017712148233229312325549216099227 // Gy ]; -const u32 bit_size = 255; def proofOfOwnership(field[2] pk, field sk) -> bool { - return edwardsProofOfOwnership(pk, sk, G, EDWARDS_A, EDWARDS_D, bit_size); + return edwardsProofOfOwnership(pk, sk, G, EDWARDS_A, EDWARDS_D); } def verifyEddsa(field[2] R, field S, field[2] A, u32[8] M0, u32[8] M1) -> bool { - return edwardsSignature(R, S, A, M0, M1, G, EDWARDS_A, EDWARDS_D, bit_size); + return edwardsSignature(R, S, A, M0, M1, G, EDWARDS_A, EDWARDS_D); } \ No newline at end of file diff --git a/zokrates_stdlib/stdlib/ecc/proofOfOwnership.zok b/zokrates_stdlib/stdlib/ecc/proofOfOwnership.zok index 54aa6b222..eb5844fa3 100644 --- a/zokrates_stdlib/stdlib/ecc/proofOfOwnership.zok +++ b/zokrates_stdlib/stdlib/ecc/proofOfOwnership.zok @@ -14,11 +14,10 @@ from "ecc/edwards" import scalarMul; /// G: Generator point /// EDWARDS_A: Coefficient `a` of the twisted Edwards curve /// EDWARDS_D: Coefficient `d` of the twisted Edwards curve -/// bit_size: Bit size of the twisted Edwards curve /// /// Returns true for pk/sk being a valid keypair, false otherwise. -def main(field[2] pk, field sk, field[2] G, field EDWARDS_A, field EDWARDS_D, u32 bit_size) -> bool { - bool[256] sk_bits = unpack256(sk, bit_size); +def main(field[2] pk, field sk, field[2] G, field EDWARDS_A, field EDWARDS_D) -> bool { + bool[256] sk_bits = unpack256(sk); field[2] res = scalarMul(sk_bits, G, EDWARDS_A, EDWARDS_D); return (res[0] == pk[0] && res[1] == pk[1]); } \ No newline at end of file diff --git a/zokrates_stdlib/stdlib/ecc/verifyEddsa.zok b/zokrates_stdlib/stdlib/ecc/verifyEddsa.zok index 75e88b4ea..29c8cecde 100644 --- a/zokrates_stdlib/stdlib/ecc/verifyEddsa.zok +++ b/zokrates_stdlib/stdlib/ecc/verifyEddsa.zok @@ -1,9 +1,10 @@ import "hashes/sha256/1024bitPadded" as sha256; -import "utils/pack/bool/nonStrictUnpack256" as unpack256bool; import "utils/pack/u32/nonStrictUnpack256" as unpack256u; +import "utils/pack/bool/nonStrictUnpack256" as unpack256bool; from "utils/casts" import cast; from "ecc/edwards" import add, scalarMul, onCurve, orderCheck; + /// Verifies an EdDSA Signature. /// /// Checks the correctness of a given EdDSA Signature (R,S) for the provided @@ -23,22 +24,21 @@ from "ecc/edwards" import add, scalarMul, onCurve, orderCheck; /// M1: 256bit array. Trailing 256bits of the message used to create S. /// EDWARDS_A: Coefficient `a` of the twisted Edwards curve /// EDWARDS_D: Coefficient `d` of the twisted Edwards curve -/// bit_size: Bit size of the twisted Edwards curve /// /// Returns: /// Return true for S being a valid EdDSA Signature, false otherwise. -def main(field[2] R, field S, field[2] A, u32[8] M0, u32[8] M1, field[2] G, field EDWARDS_A, field EDWARDS_D, u32 bit_size) -> bool { +def main(field[2] R, field S, field[2] A, u32[8] M0, u32[8] M1, field[2] G, field EDWARDS_A, field EDWARDS_D) -> bool { // Check if R is on curve and if it is not in a small subgroup. A is public input and can be checked offline assert(onCurve(R, EDWARDS_A, EDWARDS_D)); // throws if R is not on curve assert(orderCheck(R, EDWARDS_A, EDWARDS_D)); - u32[8] Rx = unpack256u(R[0], bit_size); - u32[8] Ax = unpack256u(A[0], bit_size); + u32[8] Rx = unpack256u(R[0]); + u32[8] Ax = unpack256u(A[0]); u32[8] h = sha256(Rx, Ax, M0, M1); bool[256] hRAM = cast(h); - bool[256] sBits = unpack256bool(S, bit_size); + bool[256] sBits = unpack256bool(S); field[2] lhs = scalarMul(sBits, G, EDWARDS_A, EDWARDS_D); field[2] AhRAM = scalarMul(hRAM, A, EDWARDS_A, EDWARDS_D); diff --git a/zokrates_stdlib/stdlib/utils/pack/bool/nonStrictUnpack256.zok b/zokrates_stdlib/stdlib/utils/pack/bool/nonStrictUnpack256.zok index 070a865a9..6106a202c 100644 --- a/zokrates_stdlib/stdlib/utils/pack/bool/nonStrictUnpack256.zok +++ b/zokrates_stdlib/stdlib/utils/pack/bool/nonStrictUnpack256.zok @@ -1,11 +1,14 @@ import "./unpack_unchecked"; +from "field" import FIELD_SIZE_IN_BITS; -// Unpack a field element as 256 big-endian bits +// Unpack a field element as 256 big-endian bits. +// Size of p differs among different fields. +// For example, for bn128 |p| is 254 bit , for bls12-381 |p| is 255. // Note: uniqueness of the output is not guaranteed // For example, `0` can map to `[0, 0, ..., 0]` or to `bits(p)` -def main(field i, u32 bit_size) -> bool[256] { - assert(bit_size <= 256); - u32 padding_size = 256 - bit_size; - bool[bit_size] b = unpack_unchecked(i); +def main(field i) -> bool[256] { + assert(FIELD_SIZE_IN_BITS <= 256); + u32 padding_size = 256 - FIELD_SIZE_IN_BITS; + bool[FIELD_SIZE_IN_BITS] b = unpack_unchecked(i); return [...[false; padding_size], ...b]; } \ No newline at end of file diff --git a/zokrates_stdlib/stdlib/utils/pack/u32/nonStrictUnpack256.zok b/zokrates_stdlib/stdlib/utils/pack/u32/nonStrictUnpack256.zok index 3a3a70039..1661a1a51 100644 --- a/zokrates_stdlib/stdlib/utils/pack/u32/nonStrictUnpack256.zok +++ b/zokrates_stdlib/stdlib/utils/pack/u32/nonStrictUnpack256.zok @@ -4,6 +4,6 @@ import "../../casts/bool_256_to_u32_8" as from_bits; // Unpack a field element as a u32[8] (big-endian) // Note: uniqueness of the output is not guaranteed // For example, `0` can map to `[0, 0, ..., 0]` or to `bits(p)` -def main(field i, u32 bit_size) -> u32[8] { - return from_bits(unpack(i, bit_size)); +def main(field i) -> u32[8] { + return from_bits(unpack(i)); } \ No newline at end of file diff --git a/zokrates_stdlib/tests/tests/ecc/jubjub/verifyEddsa.zok b/zokrates_stdlib/tests/tests/ecc/jubjub/verifyEddsa.zok index ce07cdc51..8875071fc 100644 --- a/zokrates_stdlib/tests/tests/ecc/jubjub/verifyEddsa.zok +++ b/zokrates_stdlib/tests/tests/ecc/jubjub/verifyEddsa.zok @@ -5,8 +5,6 @@ from "ecc/jubjub" import verifyEddsa; // https://github.com/Zokrates/pycrypto def main() { - // TODO: Jubjub currently work only for keys <=254 bit long - // With the following keys should also work: field[2] R = [32866767109220564315580607107081162920517672350707254238793964527466586251974, 31852087390335520207922973662676180854641055992940928475111512263314053365736]; field S = 43627586196239283173178511316555190744314536456808505435494185841008559853678; diff --git a/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.json b/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.json index e7c734581..2114786b4 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.json +++ b/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.json @@ -1,10 +1,11 @@ + { "entry_point": "./tests/tests/utils/pack/bool/nonStrictUnpack256.zok", - "curves": ["Bls12_381"], + "curves": ["Bn128"], "tests": [ { "input": { - "values": [] + "values": [[false, false, true, true, false, false, false, false, false, true, true, false, false, true, false, false, false, true, false, false, true, true, true, false, false, true, true, true, false, false, true, false, true, true, true, false, false, false, false, true, false, false, true, true, false, false, false, true, true, false, true, false, false, false, false, false, false, false, true, false, true, false, false, true, true, false, true, true, true, false, false, false, false, true, false, true, false, false, false, false, false, true, false, false, false, true, false, true, true, false, true, true, false, true, true, false, true, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true, false, true, false, true, true, false, false, false, false, true, false, true, true, true, false, true, false, false, true, false, true, false, false, false, false, false, true, true, false, false, true, true, true, true, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false, true, true, true, true, false, false, true, true, false, true, true, true, false, false, true, false, true, true, true, false, false, false, false, true, false, false, true, false, false, false, true, false, true, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, true, true, true, false, true, false, true, true, false, false, true, false, false, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]] }, "output": { "Ok": { @@ -13,4 +14,4 @@ } } ] -} +} \ No newline at end of file diff --git a/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.zok b/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.zok index 8e8746b26..b600f9990 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.zok +++ b/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256.zok @@ -1,50 +1,34 @@ import "utils/pack/bool/nonStrictUnpack256" as unpack256; +from "field" import FIELD_MIN, FIELD_MAX; -def testFive() -> bool { - bool[256] b = unpack256(5, 254); - assert(b == [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true]); - - bool[256] b = unpack256(5, 255); - assert(b == [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true]); - +def testZero() -> bool { + bool[256] zero_bool = [false; 256]; + assert(unpack256(FIELD_MIN) == zero_bool); + assert(unpack256(FIELD_MAX + 1) == zero_bool); return true; } -def testZero() -> bool { - bool[256] b = unpack256(0, 254); - assert(b == [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]); - - bool[256] b = unpack256(0, 255); - assert(b == [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]); - +def testFive() -> bool { + bool[256] five_bool = [...[false; 253], ...[true, false, true]]; + assert(unpack256(FIELD_MIN + 5) == five_bool); + assert(unpack256(FIELD_MAX + 1 + 5) == five_bool); return true; } def testLarge() -> bool { - bool[256] b = unpack256(14474011154664524427946373126085988481658748083205070504932198000989141204991, 254); + bool[256] b = unpack256(14474011154664524427946373126085988481658748083205070504932198000989141204991); assert(b == [false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]); - - bool[256] b = unpack256(28948022309329048855892746252171976963317496166410141009864396001978282409983, 255); - assert(b == [false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]); - return true; } -def testMax() -> bool { - // bn128 - bool[256] b = unpack256(21888242871839275222246405745257275088548364400416034343698204186575808495616, 254); - assert(b == [false, false, true, true, false, false, false, false, false, true, true, false, false, true, false, false, false, true, false, false, true, true, true, false, false, true, true, true, false, false, true, false, true, true, true, false, false, false, false, true, false, false, true, true, false, false, false, true, true, false, true, false, false, false, false, false, false, false, true, false, true, false, false, true, true, false, true, true, true, false, false, false, false, true, false, true, false, false, false, false, false, true, false, false, false, true, false, true, true, false, true, true, false, true, true, false, true, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true, false, true, false, true, true, false, false, false, false, true, false, true, true, true, false, true, false, false, true, false, true, false, false, false, false, false, true, true, false, false, true, true, true, true, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false, true, true, true, true, false, false, true, true, false, true, true, true, false, false, true, false, true, true, true, false, false, false, false, true, false, false, true, false, false, false, true, false, true, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, true, true, true, false, true, false, true, true, false, false, true, false, false, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]); - - // bls12_381 - bool[256] b = unpack256(52435875175126190479447740508185965837690552500527637822603658699938581184512, 255); - assert(b == [false, true, true, true, false, false, true, true, true, true, true, false, true, true, false, true, true, false, true, false, false, true, true, true, false, true, false, true, false, false, true, true, false, false, true, false, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, true, false, true, false, true, false, false, true, false, false, false, false, false, true, true, false, false, true, true, false, false, true, true, true, false, false, true, true, true, false, true, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false, true, true, false, true, false, false, false, false, true, true, true, false, true, true, false, false, false, false, false, false, false, false, true, false, true, false, true, false, true, false, false, true, true, true, false, true, true, true, true, false, true, true, false, true, false, false, true, false, false, false, false, false, false, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, true, false, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]); - +def testMax(bool[256] max_bool) -> bool { + assert(unpack256(FIELD_MAX) == max_bool); return true; } - def main() { + def main(public bool[256] max_bool) { assert(testFive()); - assert(testMax()); + assert(testMax(max_bool)); assert(testZero()); assert(testLarge()); return; diff --git a/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256_bls12_381.json b/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256_bls12_381.json new file mode 100644 index 000000000..9059e234d --- /dev/null +++ b/zokrates_stdlib/tests/tests/utils/pack/bool/nonStrictUnpack256_bls12_381.json @@ -0,0 +1,16 @@ +{ + "entry_point": "./tests/tests/utils/pack/bool/nonStrictUnpack256.zok", + "curves": ["Bls12_381"], + "tests": [ + { + "input": { + "values": [[false, true, true, true, false, false, true, true, true, true, true, false, true, true, false, true, true, false, true, false, false, true, true, true, false, true, false, true, false, false, true, true, false, false, true, false, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, true, false, true, false, true, false, false, true, false, false, false, false, false, true, true, false, false, true, true, false, false, true, true, true, false, false, true, true, true, false, true, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false, true, true, false, true, false, false, false, false, true, true, true, false, true, true, false, false, false, false, false, false, false, false, true, false, true, false, true, false, true, false, false, true, true, true, false, true, true, true, true, false, true, true, false, true, false, false, true, false, false, false, false, false, false, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, true, false, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]] + }, + "output": { + "Ok": { + "value": [] + } + } + } + ] +} diff --git a/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.json b/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.json index 5a8dc41e3..00815fc75 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.json +++ b/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.json @@ -1,6 +1,6 @@ { "entry_point": "./tests/tests/utils/pack/u32/nonStrictUnpack256.zok", - "curves": ["Bls12_381"], + "curves": ["Bn128"], "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.zok b/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.zok index 67be9afda..4a865fb6e 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.zok +++ b/zokrates_stdlib/tests/tests/utils/pack/u32/nonStrictUnpack256.zok @@ -1,41 +1,26 @@ import "utils/pack/u32/nonStrictUnpack256" as unpack256; def testFive() -> bool { - u32[8] b = unpack256(5, 254); + u32[8] b = unpack256(5); assert(b == [0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005]); - - u32[8] b = unpack256(5, 255); - assert(b == [0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005]); - return true; } def testZero() -> bool { - u32[8] b = unpack256(0, 254); - assert(b == [0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000]); - - u32[8] b = unpack256(0, 255); + u32[8] b = unpack256(0); assert(b == [0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000]); return true; } def testLarge() -> bool { - u32[8] b = unpack256(14474011154664524427946373126085988481658748083205070504932198000989141204991, 254); + u32[8] b = unpack256(14474011154664524427946373126085988481658748083205070504932198000989141204991); assert(b == [0x1fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); - - u32[8] b = unpack256(28948022309329048855892746252171976963317496166410141009864396001978282409983, 255); - assert(b == [0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); return true; } def testMax() -> bool { - // bn128 - u32[8] b = unpack256(21888242871839275222246405745257275088548364400416034343698204186575808495616, 254); + u32[8] b = unpack256(21888242871839275222246405745257275088548364400416034343698204186575808495616); assert(b == [0x30644e72, 0xe131a029, 0xb85045b6, 0x8181585d, 0x2833e848, 0x79b97091, 0x43e1f593, 0xf0000000]); - - // bls12_381 - u32[8] b = unpack256(52435875175126190479447740508185965837690552500527637822603658699938581184512, 255); - assert(b == [0x73eda753, 0x299d7d48, 0x3339d808, 0x09a1d805, 0x53bda402, 0xfffe5bfe, 0xffffffff, 0x00000000]); return true; } diff --git a/zokrates_test/tests/out_of_range.rs b/zokrates_test/tests/out_of_range.rs index 730485ae7..ea2800252 100644 --- a/zokrates_test/tests/out_of_range.rs +++ b/zokrates_test/tests/out_of_range.rs @@ -133,7 +133,7 @@ fn unpack256_unchecked() { import "utils/pack/bool/nonStrictUnpack256"; def main(private field a) { - bool[256] bits = nonStrictUnpack256(a, 254); + bool[256] bits = nonStrictUnpack256(a); assert(bits[255]); return; }