shutter-network / rolling-shutter

Rolling Shutter is an MEV protection system to be plugged into rollups.
https://twitter.com/project_shutter/
26 stars 7 forks source link

Create json tests for crypto consensus testing #416

Closed konradkonrad closed 7 months ago

konradkonrad commented 8 months ago

Implements https://github.com/shutter-network/shutter/issues/105

This adds the commands

rolling-shutter crypto testdata [output_file]
rolling-shutter crypto jsontests -f input_file

that will generate or execute tests for the methods

shcrypto.Encrypt
shcrypto.EncryptedMessage.Decrypt
shcrypto.VerifyEpochSecret

Example Input/Output:

Generated testdata (click to expand) ```json [ { "name": "encryption 1", "id": "0", "description": "A zero byte message.", "type": "encryption", "test_data": { "message": "0x", "eon_public_key": "0x21cfff996dbe9de668d88167c9e420db5c040324a1da4c26db5b6e128e6930e60986a6b1f5143b06101f6f67a8e21d116a23732ecb7a1036db28a672304f0d9013f06faeff051511f02a28cd5f7e9496e43cc5edd36b281e4682778cd97aa2d91712b4263002e861f5cc0635aac8e6c71f4e9c82e4d59fb4f84c1445e2097acd", "epoch_id": "0x782ea3d49836e2320e5021bbce19bbaf918b5cc5d2c1bb04f31ca4ecf16535c8", "sigma": "0x9f4470756792f15072d3f6b934e4e814e11f6d10594db74fedf2461a9bdf21c1", "expected": "0x0e457f3ac57fb2bfde1fa5e85ff91419669464ed5a7bbbdeba649da363748c39140c69722afffd983dd26f7712d4bace66bc9c4211a359c82a6922d2c363d5460aec0123756a12c52c8a16f70378925c5b0fa8115e7159a53caa1b8a973b78220ce4d58b799084b4b0aabb17fcbcaa20ca9dc2b2821edb30cc66a8f6d307730bc98fcbfb6181f80349da438c4b7dbd89630f003b57dc6000bcea654764d0496c4ba5660ee4db63c88ace60ec58ddeec1b2e35a2758b084f6f1878f8641950c59" } }, { "name": "decryption 1", "id": "1", "description": "A zero byte message.", "type": "decryption", "test_data": { "cipher": "0x0e457f3ac57fb2bfde1fa5e85ff91419669464ed5a7bbbdeba649da363748c39140c69722afffd983dd26f7712d4bace66bc9c4211a359c82a6922d2c363d5460aec0123756a12c52c8a16f70378925c5b0fa8115e7159a53caa1b8a973b78220ce4d58b799084b4b0aabb17fcbcaa20ca9dc2b2821edb30cc66a8f6d307730bc98fcbfb6181f80349da438c4b7dbd89630f003b57dc6000bcea654764d0496c4ba5660ee4db63c88ace60ec58ddeec1b2e35a2758b084f6f1878f8641950c59", "epoch_secret_key": "0x09cc2ad1eb1ddabfde0cde187dcd082538955b5120fafb29bd98aabcb58dd1c718ef4a8f2a541181cd9423909508fc28c4a54305d5f085daca20eaa4791dbcf4", "expected": "0x" } }, { "name": "encryption 2", "id": "2", "description": "A 1 byte message.", "type": "encryption", "test_data": { "message": "0x9d", "eon_public_key": "0x1ceac31a2bce8a1f4207c30919b004450a800eda2e00614b447b89622ebc4dbc01e2f437329c6d4bd671b7a4556ed742bbbb8608eb716347cb8c8c79c03431e606e9a51f1d359220d0500bac0f4950d86cd38d3254b8c168aef2f07439a1fd882e7e0f26c4b6d94a7cca724b1daa76d63e951b168376bdaff033f71e3a2aca5a", "epoch_id": "0xe3c241d7b379ebeaebc530b23a421e86fbbf0b6537f297ad290c9831a1fc0f61", "sigma": "0xd66aada74db18e9d889bdf1ddeeb09667722464e244cbc34b79fba97375b170e", "expected": "0x14246f911d5e6783000a80d1c3542bf15ef7fbe7c4a990b1e2605a99c6108b8b1600f115caba5b24d4344f422fd74fc99bf25d03bb0712b1f0b053f35957c0bb176d56811894256853cb63ac2583c472f705c274f8c17f05ce74221ee7e98bc61524b158a110e9955a1ec2925e97433de4578ef48b8624fcf60a97f329e67f50c0cd16b2970966a3605eb7141e63ae578246b97be6811bc4dd294487f1e504cedabd72abd82e79adeb856d25b7d399caaa9f79e9303fa57394833531fc68ba03" } }, { "name": "decryption 2", "id": "3", "description": "A 1 byte message.", "type": "decryption", "test_data": { "cipher": "0x14246f911d5e6783000a80d1c3542bf15ef7fbe7c4a990b1e2605a99c6108b8b1600f115caba5b24d4344f422fd74fc99bf25d03bb0712b1f0b053f35957c0bb176d56811894256853cb63ac2583c472f705c274f8c17f05ce74221ee7e98bc61524b158a110e9955a1ec2925e97433de4578ef48b8624fcf60a97f329e67f50c0cd16b2970966a3605eb7141e63ae578246b97be6811bc4dd294487f1e504cedabd72abd82e79adeb856d25b7d399caaa9f79e9303fa57394833531fc68ba03", "epoch_secret_key": "0x1eb69ecf05b8c7af4400ee63b9dfdba142900b1770e92ef6b1bcd69af4f9d8d22f177efeb71cbfa7ab07ad919c7aba3ef7ea8fc98f04568072e70b9961e087e6", "expected": "0x9d" } }, { "name": "encryption 3", "id": "4", "description": "A 31 byte message.", "type": "encryption", "test_data": { "message": "0x501ec488fa71bdef02ad9b4032348aaaa9c2ae0bc86d993520c76f41c3bc6d", "eon_public_key": "0x27b7eb3acbd7b1850e84cb8d78889e25912e6834e69b63b9d22f6ff32a5a9db72ef51693a5f20b7aa5b9c66b89e004cdcef0e030ac7c74de562e2dbb5446f30718eff0726bdbc478bcc1248e338a25964c70c154658630631a05ae1472a94a3c1f84490cf61ab730101049d57be81a576c8132adeee09780c5f926f327f4849e", "epoch_id": "0xb6e43730e358f902dd31486dc0427d2402ef5acc02309072a8a4f47d8bf5fdd8", "sigma": "0x1ab06973d0576cb3e434fdea3512d35c176c80c2e21f83c917c142545aad6098", "expected": "0x1c51795b51d3f2312ecfb899bd77bc78a454005611b2b65e3be6d9a0f32525fc2d136d5517ef9b20a417d5754d186462c73a3950af31732a6cee966f82c3d422116c20cbb8bb1e0696f409a5f98b18aa03f9dc95ddc8b7b40c87cfcce0ba39571c2787c423a67fd1c33cc13e17490b4efd1f2152fb7a5e7e3bb8069ced3247d2fc304d5a1b6670c79bed9166b0c31120517a6ff194c473bd2fee5905d7dd17bd37cc950fe6006ff645003021aa763fae765c8463e221216aa439879dc49ceb73" } }, { "name": "decryption 3", "id": "5", "description": "A 31 byte message.", "type": "decryption", "test_data": { "cipher": "0x1c51795b51d3f2312ecfb899bd77bc78a454005611b2b65e3be6d9a0f32525fc2d136d5517ef9b20a417d5754d186462c73a3950af31732a6cee966f82c3d422116c20cbb8bb1e0696f409a5f98b18aa03f9dc95ddc8b7b40c87cfcce0ba39571c2787c423a67fd1c33cc13e17490b4efd1f2152fb7a5e7e3bb8069ced3247d2fc304d5a1b6670c79bed9166b0c31120517a6ff194c473bd2fee5905d7dd17bd37cc950fe6006ff645003021aa763fae765c8463e221216aa439879dc49ceb73", "epoch_secret_key": "0x2352f2cb656448e1d09dce2383b4b0c1f44c8306d34b4f037f6ee0c4bf3550b40ab9fa24fcb00623827ea7e9322f1c2ee9c203e467007111277dbed3fe914aec", "expected": "0x501ec488fa71bdef02ad9b4032348aaaa9c2ae0bc86d993520c76f41c3bc6d" } }, { "name": "encryption 4", "id": "6", "description": "A 32 byte message.", "type": "encryption", "test_data": { "message": "0x9380073b6a4fd01e8d40c4293d8d7d58bdb028975965b4ae51f9a70ce1c0bf3c", "eon_public_key": "0x2c291b23abcacd52c5b9d51fc50bc0149924e79105c960954fd1343844aa46171ed88b7bf430ffa500e3a2d3ed1a139d459f6e3bd5acfb0b8ffe94933cdd9b9f21344ba43f3bd7c350ebed3965b483f3be8f3963bb5923c57e42ba16f574f90c1ab708ae01a1b55326390b7a08bd72767ec4471e81b7541f6bbdc6611d680060", "epoch_id": "0x3ed56d39520e14df8b9e93b2fda7bfe7b1fe8dda649e78f64438684e3dc91bee", "sigma": "0x68536b8022a28f3c3830f233bf8203106e9d311b92eded387716a513b726a8b9", "expected": "0x228b78aed386ee3f7af230e5a938cfd0ce25648d9fb15e13bc7e079c3350c2b704231efcaa54934d3f785f30895608fe5e0e369ec0bd9123f5bcfb8b9a7478c91ffbeb465549cf317ac7e5bc6798f0d7d82090e73e113ae20dc8d84a9ed60b7e1638418f4ce9e1b51201fac31e1386e26f23a1e4cc474c3e35d5d204ae5c3e215eb82b83a7e98a0ccf8ce5d7bdc8e330ec271608f60eeba490edd6154524f9ce8f59f71f46f91ac3e7fb0b5206b195307b537d44b900fda996def9ae9d4c873e2e76b19fe1476bb2d3b1b7f3c268799d982bd77a1e6b55419384774e5defbe77" } }, { "name": "decryption 4", "id": "7", "description": "A 32 byte message.", "type": "decryption", "test_data": { "cipher": "0x228b78aed386ee3f7af230e5a938cfd0ce25648d9fb15e13bc7e079c3350c2b704231efcaa54934d3f785f30895608fe5e0e369ec0bd9123f5bcfb8b9a7478c91ffbeb465549cf317ac7e5bc6798f0d7d82090e73e113ae20dc8d84a9ed60b7e1638418f4ce9e1b51201fac31e1386e26f23a1e4cc474c3e35d5d204ae5c3e215eb82b83a7e98a0ccf8ce5d7bdc8e330ec271608f60eeba490edd6154524f9ce8f59f71f46f91ac3e7fb0b5206b195307b537d44b900fda996def9ae9d4c873e2e76b19fe1476bb2d3b1b7f3c268799d982bd77a1e6b55419384774e5defbe77", "epoch_secret_key": "0x1f7ce1bf64dd9331adac9c7aec1d73ccdad5cd2dc3a75e86ba85ed9249a562c72f1d614ec73629829cf1c4214674b3a3695942d8de4dcdc4654034ce07f58c0b", "expected": "0x9380073b6a4fd01e8d40c4293d8d7d58bdb028975965b4ae51f9a70ce1c0bf3c" } }, { "name": "encryption 5", "id": "8", "description": "A 33 byte message.", "type": "encryption", "test_data": { "message": "0x4212f3cd92445a424663275d7816d574b16275a9a4a961842f9b3efcb6f08062f3", "eon_public_key": "0x076662da6f6b87e4dcd6a013c2955d35ea7073fceb92d6e97377e35aed1c864712fc2a47d1686c135afa46eca1c5eb3d5f83568beb5a726992e71115f1153356284e9733ad5761b28b791ec750918ca1dd78f69f3ce084c13a4e85b97142107023de3c6a9626992c06f8eff9219a3ffbc93b49b1f4cca260b112518027845a07", "epoch_id": "0x7fa89c8eb7035344757c059635033b3cbc862357a0b6e9e6c06a21c17ba467b4", "sigma": "0x698199c3a8154eec8fdda72ca199b763cf4ea6e1a8c288a8ef6a2f021d10aa6c", "expected": "0x076a770fac44f461d5999583e4f431ba852027e1acb05d542123c056bcfb2bd6264d839cc56ffe6cb76bc4d43e36f7aea24d005f3e391c711476ccbc85caede529c6c7420efe7640f90ac403ff260b5aaa96ea4471dff5f6ba47d0791c3db63003000f6e814927d483281a55a3ecbea888548d6a259cbf39917fdb9e888ddcf6a2db45e5f3129ad9af34b335d5b18a570f85f01b71a8da45d1fcd4f82004ccb0a15dc27a96ab0cd7d421222561b79137d7c3a3ea5fcdb34e4f50ab799dfd8e929784fea2aea3e135e502ceba27d0886e87335b568a98c763b1ffd23c076fd584" } }, { "name": "decryption 5", "id": "9", "description": "A 33 byte message.", "type": "decryption", "test_data": { "cipher": "0x076a770fac44f461d5999583e4f431ba852027e1acb05d542123c056bcfb2bd6264d839cc56ffe6cb76bc4d43e36f7aea24d005f3e391c711476ccbc85caede529c6c7420efe7640f90ac403ff260b5aaa96ea4471dff5f6ba47d0791c3db63003000f6e814927d483281a55a3ecbea888548d6a259cbf39917fdb9e888ddcf6a2db45e5f3129ad9af34b335d5b18a570f85f01b71a8da45d1fcd4f82004ccb0a15dc27a96ab0cd7d421222561b79137d7c3a3ea5fcdb34e4f50ab799dfd8e929784fea2aea3e135e502ceba27d0886e87335b568a98c763b1ffd23c076fd584", "epoch_secret_key": "0x0b11eb45351992abcda85f8ee8d4543e52d86aa5ca9cf77864ac877b6b74158412e6a81a219e0029e2a6667bb2d4f5935c59a68ada3dec50cec989679840562b", "expected": "0x4212f3cd92445a424663275d7816d574b16275a9a4a961842f9b3efcb6f08062f3" } }, { "name": "encryption 6", "id": "10", "description": "A 319 byte message.", "type": "encryption", "test_data": { "message": "0x1bb90e4467084eb6fa348d097392cba7853adc34417ea754733398997624f8a7cdcfc839c4992bada71c07f10f1a29fc55de7405f32fb135ebb61046410101a528c940265a001c457b199e0c5999af2533f9b9e113a360653e47ccc4b15ce5e291d1ac21132125896ded340a48e0db5937311a20a9fba7094188aae852c1f396317a65e04054199e8c3bcc21c9b486eef6fab35675aaf7a56220da68ff1bb6309e0b6c65019924a6b951ac4bd324b1ba234bd8c4beb7fa14abddbca8e476679c681103f8ca5a378134ff1927e473818a62c10f6452fae1b2163200d5eaae0d2549ffed9c5d7399aafda310f76f0babdbb0585ddaeb0269220ba81f60444146a4f47d02f3c872f76b22516dae8d80fd75cc991a054f4a010133d69fd2a84a69c0f58121cc6019aaeef64ed2890f2ecd554bb55913632ad87ad3cae4c8a3ffbc", "eon_public_key": "0x2b7e87014016f5a4d8903bbd370c566e96e687cdc1fea76820620da7ee0cbe2915cc2e11e9417d3fb3bf11847cb40c01470a130ae1ee53bf3b85b651120d75a605b7e969de4bf5f2c5514f6f5b77e8d0cd5fe007329d1676d2f5e9f129cfbf032b43786c38fc76e2577d9d8c15049f5967c14e262232a08f0163cd24b848a551", "epoch_id": "0x61868112f60454bf9d4a0ecb2f3cf993c64b1b79c8db9d39a8eb765cd7cc207e", "sigma": "0x6aad9245e37a6fb6eff793bda0b80cbe2d7823341f8f5f0a020bf1877a90ec3c", "expected": "0x27bc23b85ae58121b5ccca3c256d0e557fb5d7377dd4621bdc0a79e97ad88d2c1df78ae0db6a8c6c96b5f613ef55730ab1bf1ca03d206dad12bd468415a141e82c7bf16125739cf140cee681cd52f3be25d17038341316ee48f01d15dc80888e0a8c6a8dd916a8a6a7dad640897d0c80b560e3a61a1ac2c0fdc2e9eae054941aeb52a26e0a55b2bac39cf7309e5d4bd45bde3b9a3bf169cf5ced74ee0adc7de6310a364e8a88090e82e36db9ba0be99c846a20560c09e3b7818f86904c236c0e83e8b189b02212d4723f9f553bcd1e98dde0de1d01edb5a9607660e67a03ee70308da037b1d40130789e31204e34c1ed55d1901a6b8ca15fff2fff747cb3d57c905f6ea564b8ad0ef8e40e1d1bd804a14a46db2fe844ebcb9c43eb7ee75937f0ae5d6e589a01a628c7a4eeb468a0170506226fa324521b838c3f4bb94cc41da8e237edb3644a867301131374e7b36a67369758de25567db727f252db34785cee906a7864687900b7fce111c8842b4dbf90670c7c949a9cf298ce42badf44e0a664cc9262d0bd8ade5b2703e466c1fc298650bd0c67bfe0675ab39096509ff8fe81f727c64a71e31f5f6daa9a49f8c37a5ffdc4f9a688d933dfb535886ca2a580b4a270bab4cc11fe2bcddc562055783c2ad59340c84e3867dfe03c94cb4c3c26" } }, { "name": "decryption 6", "id": "11", "description": "A 319 byte message.", "type": "decryption", "test_data": { "cipher": "0x27bc23b85ae58121b5ccca3c256d0e557fb5d7377dd4621bdc0a79e97ad88d2c1df78ae0db6a8c6c96b5f613ef55730ab1bf1ca03d206dad12bd468415a141e82c7bf16125739cf140cee681cd52f3be25d17038341316ee48f01d15dc80888e0a8c6a8dd916a8a6a7dad640897d0c80b560e3a61a1ac2c0fdc2e9eae054941aeb52a26e0a55b2bac39cf7309e5d4bd45bde3b9a3bf169cf5ced74ee0adc7de6310a364e8a88090e82e36db9ba0be99c846a20560c09e3b7818f86904c236c0e83e8b189b02212d4723f9f553bcd1e98dde0de1d01edb5a9607660e67a03ee70308da037b1d40130789e31204e34c1ed55d1901a6b8ca15fff2fff747cb3d57c905f6ea564b8ad0ef8e40e1d1bd804a14a46db2fe844ebcb9c43eb7ee75937f0ae5d6e589a01a628c7a4eeb468a0170506226fa324521b838c3f4bb94cc41da8e237edb3644a867301131374e7b36a67369758de25567db727f252db34785cee906a7864687900b7fce111c8842b4dbf90670c7c949a9cf298ce42badf44e0a664cc9262d0bd8ade5b2703e466c1fc298650bd0c67bfe0675ab39096509ff8fe81f727c64a71e31f5f6daa9a49f8c37a5ffdc4f9a688d933dfb535886ca2a580b4a270bab4cc11fe2bcddc562055783c2ad59340c84e3867dfe03c94cb4c3c26", "epoch_secret_key": "0x19571483ff0b5f76177869d6958f404b2e4655dd0c31c76e8f20cd3fb9aad420014d0d60454462687d15b6d6c0dcbf41a0f3994907fb7e0f7c8eedd132233a00", "expected": "0x1bb90e4467084eb6fa348d097392cba7853adc34417ea754733398997624f8a7cdcfc839c4992bada71c07f10f1a29fc55de7405f32fb135ebb61046410101a528c940265a001c457b199e0c5999af2533f9b9e113a360653e47ccc4b15ce5e291d1ac21132125896ded340a48e0db5937311a20a9fba7094188aae852c1f396317a65e04054199e8c3bcc21c9b486eef6fab35675aaf7a56220da68ff1bb6309e0b6c65019924a6b951ac4bd324b1ba234bd8c4beb7fa14abddbca8e476679c681103f8ca5a378134ff1927e473818a62c10f6452fae1b2163200d5eaae0d2549ffed9c5d7399aafda310f76f0babdbb0585ddaeb0269220ba81f60444146a4f47d02f3c872f76b22516dae8d80fd75cc991a054f4a010133d69fd2a84a69c0f58121cc6019aaeef64ed2890f2ecd554bb55913632ad87ad3cae4c8a3ffbc" } }, { "name": "encryption 7", "id": "12", "description": "A 320 byte message.", "type": "encryption", "test_data": { "message": "0x383d45edab8c9befec82a572936d23ccd147ea4fd4baeec49a2955ac11696bdc10ee58788d7d8bdd37a0bff7b052c056f3b2ad041cd7cc00647eef04c147dda87fd3d0af20348bdf575b70e187f292fa14967e908c77a0f612454b6ec85712f9b45e7c7dcf71242205933265c2e792dda99617cc8d407766d67d0b6bc494f97bc9155dd6d1cb6ca80947781007cb0b9c7cb03efd84ab8ac85b414f9f0c980338636d1837d3d73a280350e7d6a192604e82b726504f441c448e31a44597883fbf86daef84ec084ee738eb0445c845551d5919317f7645743936cb782eabd0b75a281876d75832f8c0c01339e5768ddbb53a2273e96390c7e1afb519f8c7e3168efbac7c2ec2f4579bf3501d033ae5b735ecf637d9fac8c3ac3868fef8b9efa650bcc6e6fd17c28ed8275369257c6f1715ddecd4095be2019febd4ca18fb6f0050", "eon_public_key": "0x2896f91bb493c928d3a8a2092d0680d7319451f23fe63afa4fd0347a4e388049138316bae206a7b3b0957bf58a2be0b6591c8b0c0b826858200b03f7b5fb1efe22c4e3ffd5c9728c0ae8f8183bf16773d7418ce8e560161cc5571b2424f2332429445824cd9169fdbf61016e3fbe100348cb73dede57f4ef1e38a8db1c1a4126", "epoch_id": "0x6e873cc5f64d88d918c06fb3794218c4bb0525cbff7213c823069f969162a599", "sigma": "0x71f9f74855b385dcade03190c69659d68a18e5e562c40a2311311fd32a661315", "expected": "0x22db73fa73584079d184356c44befae56084054ae152bb87e5a80897f3238dd01f7fed81742f6af3d6dd9ff32de4364909a623c5c5000c4186e024f9cde6b18d25711e408f644a750e4aef2c63bd969f41043edf414236430411a31ef212b4f213ac5c62f8a8b76a28e2935256ff54239de0d1022303a8ee2ee73f53753e421cb411657ca32a62ab759cb9b22780707ae23444b40c24f23619f2ce3b491060a8ecd97d93f73f651df2f9e83f311f4cbc47ae2c67c55d26cb837c07c4af9eda076fdae3292148790d94211e6cb83ce3d33f475ee0d79e0bca87d0a1e77375892ed08fc19db6916b19b0d6331faebad5e387912f6459ffa19f3b0c7dc37fc07895cecead69f76ffa4e897ec32f6549f5e3375685c0895c4d5931e7cb23145f61638e83b09d497641faaf65a13ccf4c909adf0d4545f8b503394d0e1a1ad41119f54c2b3e62b7d22854f02c9e4b336859f7abeb2d94c74e7d8508e7cd0d92f2d808ba430fd5d85335cb0d030b25eab07a37fb2f9d7d72597849d5b3c2b6b7692998dc59dbdc7f54fed8385988fa18789956ec449f0017255fb10ff294ab62d83a68ab4748e54cf6ff91c3052382ea2edab895f363b93e8032e1754d20774d2a311a6f6d6c7e7a6ff52ad1ac1eb579fba28d8fd1d77a68b1d58080eb81ab2ef67412ad16a5bef354f0c5a2b519242844151996b9236352ad02729de2176eb5ef3eaa" } }, { "name": "decryption 7", "id": "13", "description": "A 320 byte message.", "type": "decryption", "test_data": { "cipher": "0x22db73fa73584079d184356c44befae56084054ae152bb87e5a80897f3238dd01f7fed81742f6af3d6dd9ff32de4364909a623c5c5000c4186e024f9cde6b18d25711e408f644a750e4aef2c63bd969f41043edf414236430411a31ef212b4f213ac5c62f8a8b76a28e2935256ff54239de0d1022303a8ee2ee73f53753e421cb411657ca32a62ab759cb9b22780707ae23444b40c24f23619f2ce3b491060a8ecd97d93f73f651df2f9e83f311f4cbc47ae2c67c55d26cb837c07c4af9eda076fdae3292148790d94211e6cb83ce3d33f475ee0d79e0bca87d0a1e77375892ed08fc19db6916b19b0d6331faebad5e387912f6459ffa19f3b0c7dc37fc07895cecead69f76ffa4e897ec32f6549f5e3375685c0895c4d5931e7cb23145f61638e83b09d497641faaf65a13ccf4c909adf0d4545f8b503394d0e1a1ad41119f54c2b3e62b7d22854f02c9e4b336859f7abeb2d94c74e7d8508e7cd0d92f2d808ba430fd5d85335cb0d030b25eab07a37fb2f9d7d72597849d5b3c2b6b7692998dc59dbdc7f54fed8385988fa18789956ec449f0017255fb10ff294ab62d83a68ab4748e54cf6ff91c3052382ea2edab895f363b93e8032e1754d20774d2a311a6f6d6c7e7a6ff52ad1ac1eb579fba28d8fd1d77a68b1d58080eb81ab2ef67412ad16a5bef354f0c5a2b519242844151996b9236352ad02729de2176eb5ef3eaa", "epoch_secret_key": "0x0ab2aadaa3eeff3c8d2d7aa91c27b23fdd85b53ef5a7023da235dfb17473ab702dfcc0716f6af75506c3964c4559643bb5deea1af39a152f740c9cc829f079a7", "expected": "0x383d45edab8c9befec82a572936d23ccd147ea4fd4baeec49a2955ac11696bdc10ee58788d7d8bdd37a0bff7b052c056f3b2ad041cd7cc00647eef04c147dda87fd3d0af20348bdf575b70e187f292fa14967e908c77a0f612454b6ec85712f9b45e7c7dcf71242205933265c2e792dda99617cc8d407766d67d0b6bc494f97bc9155dd6d1cb6ca80947781007cb0b9c7cb03efd84ab8ac85b414f9f0c980338636d1837d3d73a280350e7d6a192604e82b726504f441c448e31a44597883fbf86daef84ec084ee738eb0445c845551d5919317f7645743936cb782eabd0b75a281876d75832f8c0c01339e5768ddbb53a2273e96390c7e1afb519f8c7e3168efbac7c2ec2f4579bf3501d033ae5b735ecf637d9fac8c3ac3868fef8b9efa650bcc6e6fd17c28ed8275369257c6f1715ddecd4095be2019febd4ca18fb6f0050" } }, { "name": "encryption 8", "id": "14", "description": "A 321 byte message.", "type": "encryption", "test_data": { "message": "0x54ace039654f716bc09912b5660a63648f9400e2b165e26714c195fd740dff5af3b1831df99ed04921f6dff41b6aa71e1bdea45ca72fffbeed4424b8c41e5f525b90a5ed061b96c512df78a381970beafc2063830b13736125ba979dba41f147841f612d871d5f406caecd54fb7b2176745b9d44d71f0cd98869b02c394b2acd616dbd7c06c06819be15b69d40aeb93b879503b9e41e707b93733ae36c9a3d5ab2bcdbd1125ca7c87cbdce2028cfa42cdc2117a55a27944430ad05879ec7fdd7c79244532632d9f3e5e2204b9930a51d95251db3cc1fb4ae82a7d1c0a550fa1b541bca6762d07c587781db12c4b6fc904d3c764584b27294eb5b8de88ee8de6b6183f3432741f26c68d3e773f571b76aa42ee5c7867c07f1b248caa51b89406c31eb2473eced6a4a759198319f2dc59e6b2a1bffb95bc2d717e3ac94d738a05f6f", "eon_public_key": "0x21fa1c301e6f736775d5aabfc7240073bf71ae72c7d0b6766c734be9e9df35252ff307a3e2cc7aeef964876904c89353fa829b54eedf46530c3b40713bd7bb9812137c67c130d887ace762386bcb8a6073a4f82f5f0800acc51aea283bafd0f41535befd1547abc9d7d29725b3081b04edfa721488a4dcc4648bc7c30efba5ff", "epoch_id": "0xcfb39b5cf4af554d20e4dd49f5e78a9023f8f0a2d7cc6eed9fbaa47a5b02838f", "sigma": "0x09d073e3ef705fb69ac2d552559528e9da2aed1c9c57327e77c78c029bf56660", "expected": "0x0ba11977dd2c2bf8b099e914a10afc1106c444c26cff8b3041add40725b045b52fb103bb939970c69f111fcd9bc5cf131f227a53f003b5802fde1f8c95ba96eb06337e6ca9274fd1631aca270f1c623b7247f54870fa7f56115d4bb62245867b0476f9f7e4743ee4a6bae26598bda64d3e2db9e74aaeb585f887336a16718cf73ef2604eb5b4330d91e33afb385c79ccd4310dba37037b380890ba349fd4aeb384e0412d4780714ecaf08883bae4a8fece613b5946142ea29890fb03151e2d105ab52e829e7c8e4d732016b964222fb2e33b3121ecc623fcd902c017981c4beeadc81e4510f64952176d9bbcf97a76b55e28b5b093bc3f85db6ed2a804ce8ecfbe35b99b38d07557059f76addf8f201010ba65575408735caa93b1bbbc99454659064a97db7391a3e9c0a62ed441053fe9c974719c37d38abeabc7128fcf90f04ab14608fd009b33e0a808f9c82e4ef39afc2ac6a60617aa734045a0d02f782b5e2fb26ce2883d439533961c6ea9029baddbb0f8c17cd68dfe35e352653ea09a40a0d4fcfa65c3eede46e3bd14b9d159cb1c73089b979b41d2afbbe32a326c2d4f461e1747d585bca4ffc4c1cfaef4e5314e6f6ba309b4ce178980ec27aa9e5483fcce6a714b9a28c29e934cdef9f4f9c5e895b1963f15393f56cfd3b3f5aae60020c8363466cd94fa564008add8441bfd87285a54a7196abb02c2423ace4068" } }, { "name": "decryption 8", "id": "15", "description": "A 321 byte message.", "type": "decryption", "test_data": { "cipher": "0x0ba11977dd2c2bf8b099e914a10afc1106c444c26cff8b3041add40725b045b52fb103bb939970c69f111fcd9bc5cf131f227a53f003b5802fde1f8c95ba96eb06337e6ca9274fd1631aca270f1c623b7247f54870fa7f56115d4bb62245867b0476f9f7e4743ee4a6bae26598bda64d3e2db9e74aaeb585f887336a16718cf73ef2604eb5b4330d91e33afb385c79ccd4310dba37037b380890ba349fd4aeb384e0412d4780714ecaf08883bae4a8fece613b5946142ea29890fb03151e2d105ab52e829e7c8e4d732016b964222fb2e33b3121ecc623fcd902c017981c4beeadc81e4510f64952176d9bbcf97a76b55e28b5b093bc3f85db6ed2a804ce8ecfbe35b99b38d07557059f76addf8f201010ba65575408735caa93b1bbbc99454659064a97db7391a3e9c0a62ed441053fe9c974719c37d38abeabc7128fcf90f04ab14608fd009b33e0a808f9c82e4ef39afc2ac6a60617aa734045a0d02f782b5e2fb26ce2883d439533961c6ea9029baddbb0f8c17cd68dfe35e352653ea09a40a0d4fcfa65c3eede46e3bd14b9d159cb1c73089b979b41d2afbbe32a326c2d4f461e1747d585bca4ffc4c1cfaef4e5314e6f6ba309b4ce178980ec27aa9e5483fcce6a714b9a28c29e934cdef9f4f9c5e895b1963f15393f56cfd3b3f5aae60020c8363466cd94fa564008add8441bfd87285a54a7196abb02c2423ace4068", "epoch_secret_key": "0x086335bb0354449fb059dc7c051e3e9f6c4e71ae197fe27bafd7b15c3e9ce10923104dcd30a71595350551d61e7cd717f752b5c7a9259dbd3f35e9ab70d6db05", "expected": "0x54ace039654f716bc09912b5660a63648f9400e2b165e26714c195fd740dff5af3b1831df99ed04921f6dff41b6aa71e1bdea45ca72fffbeed4424b8c41e5f525b90a5ed061b96c512df78a381970beafc2063830b13736125ba979dba41f147841f612d871d5f406caecd54fb7b2176745b9d44d71f0cd98869b02c394b2acd616dbd7c06c06819be15b69d40aeb93b879503b9e41e707b93733ae36c9a3d5ab2bcdbd1125ca7c87cbdce2028cfa42cdc2117a55a27944430ad05879ec7fdd7c79244532632d9f3e5e2204b9930a51d95251db3cc1fb4ae82a7d1c0a550fa1b541bca6762d07c587781db12c4b6fc904d3c764584b27294eb5b8de88ee8de6b6183f3432741f26c68d3e773f571b76aa42ee5c7867c07f1b248caa51b89406c31eb2473eced6a4a759198319f2dc59e6b2a1bffb95bc2d717e3ac94d738a05f6f" } }, { "name": "encryption 9", "id": "16", "description": "The message 'A message'", "type": "encryption", "test_data": { "message": "0x41206d657373616765", "eon_public_key": "0x2fdd0533e962db963dfad19fb76960fe40445b349623bd0a49dd3c15eda77027138a625558a7c5138398a2d37b5805a622f8f7dd1e3ac85a5a773a3fd4c01a7429c515980405c3a5393b1488c422852d01e234c053a9eb43a6356a46a0185a742d2b503f6acb0981277a75b1a434ba60192b81c91f5e0b162a42676564ff89e6", "epoch_id": "0xd46182d474c54e0ff4398168a9cfc8a0405a36763ad73f64aee4374473045df0", "sigma": "0x881db97b104f8fd2d66359c6bafae7d6962e8c17275d2968d4b9352bf2f78566", "expected": "0x2935354b3e2ec30436afbb3291d6d7203a8d2471f87195431b6cea978359e4ec269df2a0e074de761105bf9290864935940ee47564b8e9989ed133a9eada8b790f8d7e6c622f1eb329c5135c78ffdad9544205e1bf2f0848ef35d6e8c5a5bad725133356bf9cf466023c565b67c2e8b905c0d0178ea40808115c2eeb93c9cbfc092d03ef39e69089924f57f70dabc65a6f5b29b73df6625824690c4aa8e837b11904ff326ed1612fe77727d83adc7d8f9a13b6d1152fbf64428b9f7fa278f7ef" } }, { "name": "decryption 9", "id": "17", "description": "The message 'A message'", "type": "decryption", "test_data": { "cipher": "0x2935354b3e2ec30436afbb3291d6d7203a8d2471f87195431b6cea978359e4ec269df2a0e074de761105bf9290864935940ee47564b8e9989ed133a9eada8b790f8d7e6c622f1eb329c5135c78ffdad9544205e1bf2f0848ef35d6e8c5a5bad725133356bf9cf466023c565b67c2e8b905c0d0178ea40808115c2eeb93c9cbfc092d03ef39e69089924f57f70dabc65a6f5b29b73df6625824690c4aa8e837b11904ff326ed1612fe77727d83adc7d8f9a13b6d1152fbf64428b9f7fa278f7ef", "epoch_secret_key": "0x0e87ad4cf733c442c9edb95bc7edb10a52003bdc54e94e35080d2a2dceb35c900d5bcddeb3abfcfc371dc402fdbd8e97339efb1308a4ae2363a0e6a8ac48bc11", "expected": "0x41206d657373616765" } }, { "name": "verification 1", "id": "18", "description": "Verification of a random 32 byte epochID", "type": "verification", "test_data": { "epoch_secret_key": "0x2f9bb0d8fbb880c25de2c4403bb6d2f93ce8230ce674e6c0493c8d7d4edf7bd51857f61b9c65b2a6d25dff8ab2b49502b97120a501e36c05a389329f431e3392", "eon_public_key": "0x05875055f09c3e7b013860a3d902d0df498321e3c68407029a4ff77e6ff6e0a0089aba691059433c2187397c437689c95f8717a5621ec3eefd3d02a3a02959da0da47d04629fa363ceb092887c4f402ad10783ec0a43bfd2f8f4eb99d6461ec01cf5abccae48fd19353644477e116983320caba46ccac30170729c78461dd374", "epoch_id": "0xb465f5693225df0d5425e33ecdca4bceadce7602e49ac46b919992b1930aae20", "expected": true } }, { "name": "verification 2", "id": "19", "description": "A failed verification", "type": "verification", "test_data": { "epoch_secret_key": "0x181ca31bb6347455406d0625616c6299c1b7867a8b5ecc57c8a602e36c418de116522bf1b47835c1225b8e416eefecf9a49c9367ad465bd8459de223aa16ddba", "eon_public_key": "0x2f67ca5b703d61a11e2338f899b30cf3680e5132ebc63fabe8a4a44fbe01d5300e178cfe132d13fb880b355565ea9c2be278e5415d2ffc3238f80d753cf4ab9f14bc747d5f6a5b14859a48bc6c33e2a6cc09688775070332f0d2afcc5ce46ba120ac95b8e3f5b6a61b0410c4a724932867f28e009551a8c367d344e8dde0cf22", "epoch_id": "0xf990f90dfd6823ec16f7e7922f76d7343c6a18dbc154d370c8c1593f75d9a750", "expected": false } } ] ```

Output from testrun:

./bin/rolling-shutter crypto jsontests -f /tmp/testfile.json 
[001/020] 'encryption 1  ': A zero byte message.                       ID:   0 PASS
[002/020] 'decryption 1  ': A zero byte message.                       ID:   1 PASS
[003/020] 'encryption 2  ': A 1 byte message.                          ID:   2 PASS
[004/020] 'decryption 2  ': A 1 byte message.                          ID:   3 PASS
[005/020] 'encryption 3  ': A 31 byte message.                         ID:   4 PASS
[006/020] 'decryption 3  ': A 31 byte message.                         ID:   5 PASS
[007/020] 'encryption 4  ': A 32 byte message.                         ID:   6 PASS
[008/020] 'decryption 4  ': A 32 byte message.                         ID:   7 PASS
[009/020] 'encryption 5  ': A 33 byte message.                         ID:   8 PASS
[010/020] 'decryption 5  ': A 33 byte message.                         ID:   9 PASS
[011/020] 'encryption 6  ': A 319 byte message.                        ID:  10 PASS
[012/020] 'decryption 6  ': A 319 byte message.                        ID:  11 PASS
[013/020] 'encryption 7  ': A 320 byte message.                        ID:  12 PASS
[014/020] 'decryption 7  ': A 320 byte message.                        ID:  13 PASS
[015/020] 'encryption 8  ': A 321 byte message.                        ID:  14 PASS
[016/020] 'decryption 8  ': A 321 byte message.                        ID:  15 PASS
[017/020] 'encryption 9  ': The message 'A message'                    ID:  16 PASS
[018/020] 'decryption 9  ': The message 'A message'                    ID:  17 PASS
[019/020] 'verification 1': Verification of a random 32 byte epochID   ID:  18 PASS
[020/020] 'verification 2': A failed verification                      ID:  19 PASS
000 tests failed.
konradkonrad commented 7 months ago

There's lots of panics, but all of them can just be converted to return errs as far as I can tell, didn't point out all of them.

I used panic generously in the generating code path, to shorten the error handling boilerplate. If there are errors during generation, there is not much reasonable recovery IMO. Do you still want it to be changed?

jannikluhn commented 7 months ago

I still think it would be cleaner to return errors instead of panicking, but in practice the only difference will be less scary error messages, which is not very critical. So I'm ok with keeping the panics.