From ae8bbc2f94d47b8b0110597747dfef1cf40bcef6 Mon Sep 17 00:00:00 2001 From: Balazs Komuves Date: Tue, 4 Feb 2025 12:20:50 +0100 Subject: [PATCH] add Skyscraper test vectors --- reference/src/Skyscraper/KATs.hs | 64 ++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 reference/src/Skyscraper/KATs.hs diff --git a/reference/src/Skyscraper/KATs.hs b/reference/src/Skyscraper/KATs.hs new file mode 100644 index 0000000..f0c5d55 --- /dev/null +++ b/reference/src/Skyscraper/KATs.hs @@ -0,0 +1,64 @@ + +-- | Test vectors generated by the implementation at +-- +-- +-- + +module Skyscraper.KATs where + +-------------------------------------------------------------------------------- + +import BN254 +import Skyscraper.Permutation + +-------------------------------------------------------------------------------- + +testSkyscraperKATs :: [Bool] +testSkyscraperKATs = [ok1,ok2,ok3] where + ok1 = (perm1 input1 == output1) + ok2 = (perm2 input2 == output2) + ok3 = (perm3 input3 == output3) + +-------------------------------------------------------------------------------- + +-- Note: the official implementation stores the field extension vector in the "wrong" order +mkExt2 (b,a) = MkExt2 a b +mkExt3 (c,b,a) = MkExt3 a b c + +input1 :: (F,F) +input1 = + ( 0x0004d2 + , 0x000162e + ) + +output1 :: (F,F) +output1 = + ( 0x16fd4782dd8eb873dfe17e641a471f5cae36482975258b6ae59da4aedabd799d + , 0x30422cf82dea50ee175201bdb871e857b0da5c4a23bad3b35f4d6d11db429265 + ) + +input2 :: (F2,F2) +input2 = + ( mkExt2 (0x0004d2 , 0x00029a) + , mkExt2 (0x000162e, 0x000309) + ) + +output2 :: (F2,F2) +output2 = + ( mkExt2 ( 0x2456fa7300e7899364d1b7b933ee989a11606ad64b3166bb6e2822d46b2979db, 0x151084b3967b629e9103c5b85cf76bf47557d71a492e9575eb0dc2ac7bac0af3 ) + , mkExt2 ( 0x1f7964c2b3b354824906659089ac272aaa84cb50214c200bcf674d677cc83ee2, 0x29c9023fff7db7812cde8269233632415bb56ea4c8644c1edcfdbde68cc29dfe ) + ) + +input3 :: (F3,F3) +input3 = + ( mkExt3 (0x0004d2 , 0x00029a, 0x0003e9 ) + , mkExt3 (0x000162e, 0x000309, 0x0007d2 ) + ) + +output3 :: (F3,F3) +output3 = + ( mkExt3 ( 0x2ca9324e4d13668786f9f2dadf2ac3baf75f4bd57e14150c3421061d377edb6f, 0x2b87210ee7202515405c813b366da0b944c393e13332fd746ac19629c3b86486, 0x1bf5b2a7bed61ddd44f1d5a01492f203bdfd4973d68f3d91dddfdb8bc5b2db70 ) + , mkExt3 ( 0x9896a6aa7e71659af7c11a42e6c95a361225befaf1613e7253c5224165ecaf5 , 0x1f40923d58dbe5ee7b9bd58ff493cd5141b0fd75da57434c41aeb3ddfcbe3c37, 0x26afdb536cae8d809d0609a51c463d80198d2530e32053c5e888301953dfe670 ) + ) + +--------------------------------------------------------------------------------