From 68114fa43d5fc7401520b917653b89bdbb595571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= Date: Wed, 29 Nov 2023 16:11:22 +0100 Subject: [PATCH] test(crypto): add elligator2 tests --- crypto/tests/test_check.c | 541 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 541 insertions(+) diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 7911f01df4..1a7ba16441 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -61,6 +61,7 @@ #include "ed25519-donna/ed25519-donna.h" #include "ed25519-donna/ed25519-keccak.h" #include "ed25519-donna/ed25519.h" +#include "elligator2.h" #include "hash_to_curve.h" #include "hmac_drbg.h" #include "memzero.h" @@ -10389,6 +10390,542 @@ START_TEST(test_der_reencode_int) { } END_TEST +START_TEST(test_elligator2) { + static struct { + const char *input; + const char *output; + } tests[] = { + // https://elligator.org/vectors/curve25519_direct.vec + {"0000000000000000000000000000000000000000000000000000000000000000", + "0000000000000000000000000000000000000000000000000000000000000000"}, + {"66665895c5bc6e44ba8d65fd9307092e3244bf2c18877832bd568cb3a2d38a12", + "04d44290d13100b2c25290c9343d70c12ed4813487a07ac1176daa5925e7975e"}, + {"673a505e107189ee54ca93310ac42e4545e9e59050aaac6f8b5f64295c8ec02f", + "242ae39ef158ed60f20b89396d7d7eef5374aba15dc312a6aea6d1e57cacf85e"}, + {"990b30e04e1c3620b4162b91a33429bddb9f1b70f1da6e5f76385ed3f98ab131", + "998e98021eb4ee653effaa992f3fae4b834de777a953271baaa1fa3fef6b776e"}, + {"341a60725b482dd0de2e25a585b208433044bc0a1ba762442df3a0e888ca063c", + "683a71d7fca4fc6ad3d4690108be808c2e50a5af3174486741d0a83af52aeb01"}, + {"922688fa428d42bc1fa8806998fbc5959ae801817e85a42a45e8ec25a0d7541a", + "696f341266c64bcfa7afa834f8c34b2730be11c932e08474d1a22f26ed82410b"}, + {"0d3b0eb88b74ed13d5f6a130e03c4ad607817057dc227152827c0506a538bb3a", + "0b00df174d9fb0b6ee584d2cf05613130bad18875268c38b377e86dfefef177f"}, + {"01a3ea5658f4e00622eeacf724e0bd82068992fae66ed2b04a8599be16662e35", + "7ae4c58bc647b5646c9f5ae4c2554ccbf7c6e428e7b242a574a5a9c293c21f7e"}, + {"1d991dff82a84afe97874c0f03a60a56616a15212fbe10d6c099aa3afcfabe35", + "f81f235696f81df90ac2fc861ceee517bff611a394b5be5faaee45584642fb0a"}, + {"185435d2b005a3b63f3187e64a1ef3582533e1958d30e4e4747b4d1d3376c728", + "f938b1b320abb0635930bd5d7ced45ae97fa8b5f71cc21d87b4c60905c125d34"}, + {"b98d026c2a247fd113596f4317d8ff9f89f172c4be46320a5e82f579b953b633", + "19f98122afbd38dd5b97afc07fe89c00d9d45834a25ae851e527e34a5e763c07"}, + {"69599ab5a829c3e9515128d368da7354a8b69fcee4e34d0a668b783b6cae550f", + "09024abaaef243e3b69366397e8dfc1fdc14a0ecc7cf497cbe4f328839acce69"}, + {"409f76202dcc3280d14a9bc87b5f474349bbb6325e92733e0feee571a7f2462a", + "16235355f04bef29019ec6903788b9ee56214d1fdb60ddcc9f9bdc2816a3b132"}, + {"9172922f96d2fa41ea0daf961857056f1656ab8406db80eaeae76af58f8c9f10", + "beab745a2a4b4e7f1a7335c3ffcdbd85139f3a72b667a01ee3e3ae0e530b3372"}, + {"6850a20ac5b6d2fa7af7042ad5be234d3311b9fb303753dd2b610bd566983201", + "1287388eb2beeff706edb9cf4fcfdd35757f22541b61528570b86e8915be1530"}, + {"84417826c0e80af7cb25a73af1ba87594ff7048a26248b5757e52f2824e06831", + "51acd2e8910e7d28b4993db7e97e2b995005f26736f60dcdde94bdf8cb542251"}, + {"b0fbe152849f49034d2fa00ccc7b960fad7b30b6c4f9f2713eb01c147146ad31", + "98508bb3590886af3be523b61c3d0ce6490bb8b27029878caec57e4c750f993d"}, + {"a79d61017ca66f33fe88551437480dd28d4f0f36a9a000fd859b433add37d224", + "868916ddbfc34c7318dc28bf60a50d4c6a869654d1500b55da67c30f0dca8f52"}, + {"10fcdaa10cc6dec8f14f40527d44cb7c3b251e3d050ee5e0f7d8eb84de3f6730", + "b89c0c7ea8437775e39ed2562c4abff6d494ac21ff8feeb761a14cf7b0fcf672"}, + {"dce43ff0b17076fcdda6b75fd2ff198238f09aac92005f3ae933d16309135804", + "30e4c1de9adaba8fe4253c0389447e08dc1cbaf8bf7599bd9eb90f008c075a76"}, + {"f89544949536d01342f1260c8faa3f73814b64ccda14bea2b33a2c3bb5d8272b", + "b02e403a6d3ca67afdf316f60a711a625b42e8c1d14bf577409bb19dc9a4646b"}, + {"c30c2b4d8b3470e15016857187eaafd94f1682eb7bb04e8198b9c5d5ea65c20d", + "28558a909e53855f4319ebd7e4c3fb38e7e2de64dde94096060f5b3a72ee2f02"}, + {"a0ca9ff75afae65598630b3b93560834c7f4dd29a557aa29c7becd49aeef3713", + "3c5fad0516bb8ec53da1c16e910c23f792b971c7e2a0ee57d57c32e3655a646b"}, + {"c1447f768ab7cee8c79efa7a7046e54d7fa525ff6f407cda3b452fff1a00d12b", + "6f4aabaa4db9acf69a9aab373c58c1e1eb556be27a83c5b38d794cc69077386d"}, + {"53c901818418331d4c60add01d312c2a43d37a6488e3f11049ed9733b32a1f13", + "9a4603d2b8b08371ba5cf57cacc3e0678a9ef02b169dd048a09cf35a7b972f03"}, + {"59d974e7773b58bc3a5dad7e5978fe3fe05407989ffd12ef86daa435284bd01f", + "d4551dda6f038831d2922caa961e8b9183b66f58045ca1bd3bae51b1abac953c"}, + {"1d4e6df41544fb75740bae6a1b76932e1ccc463e0a4d3feb7da1e3e05bd59717", + "20a48a6e898dd507871fb8affbb4545f3a1d4232911cddb9238f3838a6cfe224"}, + {"6d7504f9ddbb88a0189766abfd3ef4d23004f09a474578d239a66fd25762d436", + "4f3811de70a3f8f1292988b942b4c4389990c84666577001a4ae1050af86b24e"}, + {"acc9ef51e2a2302dfce6527ba4ba4e1b2d6e45c0ee9f310a843335969e474f3e", + "81830f021f9226aeaef39088697b58aba5a786a895b729c1750a706aba52d928"}, + {"49bce04ead971c953a28cfacbb243ee120d2aaee2fe5335be7781c8ad6ddd220", + "a8225e34d582dd2f7b20ca016124baa651940ae1cc4235233dbba3354b5bb130"}, + {"f74010ce44f7315f6fa9f160db8cc36de4f950cc9abc3740c8f36edda26d093c", + "12fb44eb87b638749703d545b2591d69bb127fabb75a838936d76478b8b7a67e"}, + {"065d251b785d4ac4eb3d72abd076a06ece7b2bb56259e8df47a93476068dad3e", + "73cfe8edb2a812f5f2c95f5e03288b4c467a6b2d049e92bd610e05536f3c1828"}, + {"7b847e4ebaa0863a6f88395414b4c71b46749c33171ad8f0e4d274bd8764841c", + "e52f1a315163fb514c397b992f1520c8029fe874091a73c5fcbdeca7276f741b"}, + {"83be476de634460b5c802c5d2c509acc039a45845bdd30890db2f49244bcc40d", + "bc5f960e8eebe12ae7bb32da9ceec44cdc0252e28bce8e94140f2ac8edb5e009"}, + {"0df7e65e2c7ebd3d24919aeea20505d866e6f7a03ee9a11e378e9b4a02a2be2e", + "339d5931d273106cf2df52f4bf882cf2b5bf2ce607d1b02a68b446a87348372d"}, + {"97350b0977d06146bd7609bfadc8af713d3c97af2929625e44ccdb66791c5427", + "95a07c43f29abbe3d5669cfeb47e9deb6ffabd750747fd00d7b6a6a961824a09"}, + {"4de3fc72e672419c49d5ab43c350d54f1b85babc2efe147ebed9fb7a88567206", + "172c80045d66f23c288af430e6c0b4858c0c25d5fb3ffdda51e5d49306e5914b"}, + {"ae86df433f1a10722ea8830701033a389b9a5658aa7cd5222b22c6eb35af4200", + "ffa827a11292ce6227c8b733ed23bb8f7ac0c228882d58d846841613ff0e553c"}, + {"36d517adeb3e37f8bf7b27a04518f9cd8ed112ef70e2481592bad507e83d370e", + "2e42504c343178102d2b64b3c546b85ec087b9a3049d01540efd9dd5533afc30"}, + {"65953a9ab4c544df848a1d305222eadcc2239e65cd3d937d9ec38c2e4151e522", + "cb770813e75783503d18934e5ed5501f9dc6ee95f7fe0a5394ca9400c78e9012"}, + {"d6916059a6c1633568bcc0e6778ad64ce74eb3b940dab7502492a6d8401ab331", + "9d0b3a8f98930853d5ce855a9fadc74b8b46e5ff7efe7e38348919455611ee4f"}, + {"9de65213b5fee99d5f12044d5ad34f5e5cc0bec810306fdd80035b0a383eaa35", + "bd7826a4e359bdc02b44ed6c0c88150e347c21aa3c9efb219990a25946f6ca24"}, + {"2ba79130ca3e18293e91f414da769124875d4bd16596774ec07b743b92409a2a", + "f59213b5ce7f85f96ea55b2e848942dca95bf72cae42ebda4b7fb2908007fe08"}, + {"ea629e6c5c876e330b138c039cfc5f26b140191d700da3f3524295839f0c0904", + "5677b2ccac1ee955bfcadb6eecc9abb31fac150ee09d6a4a9415b9a352c3d019"}, + {"f85393caffdd45ff11884d57a11d636497d2c051bfddd1dd2daa720a3ad0e41e", + "7ca81cbc7bb7754c2c0682dad1c1bc9c3ebb9202fb2e92101cb2bc421e6dd13f"}, + {"05907fe6f7ccee83a3edfad91b9bee6b32b032cb410ea8bd47631e6eb1b9db3b", + "3f5004865de81cc592f0fd886d844b4be67cfe09e8537bf1a151ac2bebaeed06"}, + {"4c8f1fa41c0474d764adb3058cf43d42c59144b78fc944f681ddca24584a7410", + "5ed0e4cffb8c8f529fe95a08addfcb551b91315b1ad1d599d23336373101821b"}, + {"a17b81e83e8df0e756e5ee78be90ecca82a655730eb7ec7e9772bb573238f304", + "4e11595bee0b56d913a3c0ab84744fefc856d19dfe03d3e6a9053abc51d3a827"}, + {"6b4f01976aa5ef0499d8db79abf11afced47e13828e5e17ac89e30d9c0fbad34", + "c891167508580444fceb262b20ceb5bbebc6fc90e711ae34af3e2e1f13591f3e"}, + {"1036188858ad4a53b9808c969e6234c3d44c1dc88a5e66e609fae829db868e3a", + "58b2d775c360a709cb4c782591dda15b7890eac0cc7e187806a4d7a4d976b579"}, + {"b254226a148d8a70492c4a06db182b5f75459da97b930007882e37de7e34b831", + "943e0c1965f0a48005ebc09c3b0467a73a8f0dc15baaea8246e6e23ad78ed373"}, + {"14c8805aa84895acf1cbf6d0dc01798ab28e74a88ca522986ea35c0457c6dc28", + "77f22c29a3684e9ca09fc10e914a5c2f72a5137c55d196eade12f39299d95b6d"}, + {"c5a5617802640970768db50bffceaa5132522f5023d3b463c9aef6cc74393426", + "14b81b87c1794cfcfc95be94ab42ecf4d1f74acda9ab6b349c3c7051d779b476"}, + {"0d281e20ec2e3561a20ebc908c1c5e9ffb1f850e597ffc91c8861d1c57ef3a3e", + "4cb81c5f44401492c7a6623452cfe1f1d7a6e54c283b469e5fcd535a299f7811"}, + {"100ac1f37bf0621e6527ae18d685629dc3bd922c31bd8308b4c3a8f02f358e06", + "ea330c4a059829bde2b8b4cb97a4e7e06fa57be8182ad35f051811ae9519c60f"}, + {"2eda104fea9cc2d548ec6b3714466b866551b118f8cbdf752387cf7f315f0b3c", + "bf90fe4fb92c11a0e80c7033a7cebbcc53560e5e0c4976da05db9d357d98c53d"}, + {"ae81ecf028f19e93a794aac7e960d318e03e23c7626fa4ab261b3e415813931b", + "5b710c56c6bf097180bc83a4e48a2a4c36d2049bd653b9927e48a49e7843796a"}, + {"13a07ed64c8fe69d6ece6f692bdceb74438420c22c9e30000bf09401f40f3028", + "7d936e5d9fa4c3143a533a5c1791d2746788571500f792a2f2a25a4727b13625"}, + {"78886502d83647870e537e138808d0d1f01f941958caa1ca541c4172eddd7a36", + "9523a6af303364520c9b19475c1ba34847cd9d10e35a2c773f916d71fe014707"}, + {"c68d4ceead9a188d00ddcda391c5c036ecd5cd281f243aacaa327bbbf3384c3a", + "7b3dfda94889b562373af0b01f717451eaee15601c104433d3ecc58cf104c552"}, + {"08299526e422b03dc9e74cfc37c07159fec719cebfef41ed801a3837066dd60c", + "bf1456d4c982a296cba8f1246db8e650e51accf26358d819374c590778dc703e"}, + {"e516613b85ee24ee2ac97d70a2683131254bb0e0253cd1e77f5d18bc13847137", + "ffb93511e2294c00f7413699d0b021f210320a712a38842a50356086da0b425d"}, + {"3829a8c39d2152c9c474f804edabedb82d1e51c621ad9880c5ac3fa1c8080622", + "48fef3db414e9ecbbae22b3dd0c38d8417130357374e0e1b539c263e64c08c2e"}, + {"2d7564b0431d5d724744c5a9facf4e679dd8eb8fdf32c73fb2be92a65d50ad39", + "f8cbc4d1b9fa811e46ec6461c7f1e198191772531df34b8de0cbac623b48824e"}, + {"dbf28e226039b4291d0307169562dd7e80d23ce4ceb45b7b078349f8c50a5a3e", + "778f79319847bfe6408023d6de0c2999b51c27e759f1916b715ff145a8056b6b"}, + {"0510e1e919a24a8a782607e957954eae4fe8335ef42b243d2b8d526690b2213f", + "0b1a23f0720626f078d9ddb5001350e822b0483080135bd9b6ff39c5183e0c0c"}, + {"1d4156af645c1915e905e86b01c82e7739526c1ca9dee753def7cc3f5205dc38", + "5ed8d237564cb97cd55f02967348f337524a92caeb4aa8e84dd1bd4736b1e777"}, + {"2e6b3fb2ab3b4b9333c30d6fbcc619e096832bd4f27c33c8934a784556c20a31", + "01281046f80bdf45ac905b5a534fe4d5606dccf776ec353f795f8095a109830e"}, + {"8be8bb07f75e4f14dad37a9d71f9debce6d9ff6d0e2e831e3af61e5dafcf7f1c", + "e87d8cbc7fcd68c3ca4d20ef9a833a3a6282b162e0b2280af2a3287e5f5f4f2f"}, + {"918348cc15950e2d21940da1f6f26e0111ac3a84af976fbb85d872b8d3375d23", + "d8a7d46a47d5ea29ae321ebe7531b12b9bd68efd45e5f8398121c25e701b4621"}, + {"e330ebf9a0a09331ffb9690f57934b855e35f319966ceeaacbf6614eb912352f", + "240fce810c4f4aaee00bf7d29abaa29a70ea9352c1d892aee79a46ed4b6abd1a"}, + {"ca4e9d3319c955caf99827a0dce25d4d3d21330740c024bab3a1cf65dda8fa2e", + "6e18546401c4be1e3382f693c9aeef8e29cba23b97ffda97953d4a521ddce847"}, + {"f48bddc8ba6756104cbc5270e93c940351ffe3bf637701c5704860e8bd6c3c0a", + "399f3ebd61c4adc300ab9a6ecd0f2032fbed95114b9073aca0351b0c9d9c8554"}, + {"05ae3acb5b333b349f555340317d14eb252c498f4b5b7f0120863c046df25e13", + "94c99367e2b56883160d5ad49b1cd027b1344bd16b7d84b58616b44ec3eeb119"}, + {"f6133f9040410095b7420cca15c7c3edaa48f5c88f712022cc52115480cd491b", + "d8c7b1366530810f8e0f7eab483acb1ea23351f8ce48d3dde704ee0e648a0762"}, + {"ca15df20fb126dd6cba6069c4d057c9f5846774ea2959c8242442b491c1db603", + "226e64adfd089c41f0c660e235a11591727db48171b2bb76e0ebafc02bff1b24"}, + {"caf135ca09763e9259434f9be79c151430fa5a5145a5406b37733499086ac11a", + "669ec25bb09147237cff26a238dcdbb869f4cdb40f04326dbc68eb556087dd67"}, + {"0c6e825aea8f0d5cb84ead458813e956094b8d306bc3518f00a3e06d92fd0038", + "7bdabef5754857d5805be8eb423dbd31695e61c8ecc10b693005d20475d12933"}, + {"7a6685fd00c9ac478ae4878017ef4f4816dc8489f5fbb8122af687a8c7fc173d", + "731ab275727d776f593c98995312181b8649bbbc5086832e0247c04812343a0a"}, + {"f08f58072bf17d2632344d4c2ec877849c624a1514e1df599ae161d77394e20c", + "9045a3daa55cde4bde863c9953b2bd105a9dd114ae5eeb77bdf9b1aac416f431"}, + {"5f11086c6b4e290c6f7a19b428062c19f94293bb6ae863e6661e7cd46112430f", + "c149c23a0b660ea5da8bc8f6004ed3533732d524b4023915b1132b107b198b5c"}, + {"230030447df3d9a9634091503eb94ee39737a8690c3f61bb122c7264bc00083d", + "63533931ea7fc2446f686678602dfc5c08596c1ded9b6382a1ba30158d2d036c"}, + {"e014bb17434c3afba159c76328093ab0779073a40416051fd4ec4dbd12bc2737", + "923878089012dc6460b49d59a1c866878a950293943048f082ecd6dc12a7c37f"}, + {"a6de26c5b78e7d026b461b618fe621fe15a1b73f66eb888a39ad2fd8d765c02f", + "a6486fec438a8c02719ee43477fc3baa4d5bc96defdae46b0858fe56bda30a63"}, + {"14a7aa0360bb1f5b60f2fd28c3c370d7d560cead49aa15452c5acfe961227d12", + "b264722169444cad7e94ca1d9d0981f27c0654e322d1a0dce5e83cbce4e3114c"}, + {"b39f23638ef80f290a18df4f01a78f52f95594a030decf99f9a7f1501e320737", + "86be13dc0760d575d6dd82f4a24995737fe57f979fa64014537af371f38d0d16"}, + {"2ab3090ae695ab5a8be8ca3e7ce9d1b0731cbd999686ecdcea6a32757c2a6c03", + "9d555bd024126df6a9e2c016a29f2bd997f24e1b1a0456332a746c2f53ac3620"}, + {"1ea131a74b812554f32a9b9b51dd8e8008c7e5dc065b9864c86e8b3b1dbf111e", + "be94dd73684261991d7fc5c5c0ec1a19b93f668eafe006d85478b032c3970158"}, + {"d298c05fd81f21dd1c27a2b0d75089d50ed25a91d42a7cd3a4b86de6f5f43a26", + "fedc39590410c38a1498450ea92145ee34a2a3c10830f859b90cb5251904255e"}, + {"fbdbe3cb4a82278caaaedd21ccb1b77f93849073a11722b12880da02f8d0ae3b", + "b1fbbc3b0c25f506d291e3ce0a0eaa5729caf55efdb0f0c25333de43ec12753c"}, + {"5261b23ebb1be5a1f00dedc499fe2d97d74cfe058f5038873b604ac662bb0f31", + "14b4854695f07d9220edfc964b0f4a052843ab08ae6eaa2c046bea951d4b5008"}, + {"f5341a8229f50d5781b8d87d43bda44b3cf9cbd33fc461f8962c5d98f79c421d", + "12335ee256477057c10a7a7f4c115962e6dc2e8ed8547f2e8b76e701cec62215"}, + {"7157701e0b85a69520112caed1e8e215b4460be7c6779dd95c1175d06b6bab3b", + "f48e1e7230a18383820d7a3dc912e2b0726f6ee5dc4a5e6744096ef95da5090b"}, + {"ef42d90bc355b8c2aa1516b55cdb3dfcc897a1af505738f2b67f31c1cca7bc0f", + "2777938f38843d91a170d647de2e05c599ed5641b833608fe0dc742483f0e00f"}, + {"6f8fe7c709a31163e7660a2067abd95ee5436c1055f04d33b76db9a88c7d871b", + "89332639ead9698e0a9bf4fe2979a5045a391190fa15c7e8f3884007b7e9da13"}, + {"55dcb4ffb1aa83e7b55ab6a94ffd39bdaef28e69637241c0ad62fa581d1a1a3b", + "ef80876a594c0cfd7dd5a80b526b89fcf5aa5f5dcca4401575aa312c330ab933"}, + {"0fca979d853fe2468d5c0bf30fe60b9d9ad380f9c788b39297627f4f4c00612c", + "9912b2ef49e4807e124fbdfb7fd0e1cf5e3de3d03711e1610ce5ef5cd6d60456"}, + {"5053a350bd994664950a7c05a35dbd94abdffd1e0189b59679312c709b4c5a38", + "0e6f0af1c490fefd6ace0a9a5853a50617463082a0dc430f52521dbbc14a6a45"}, + {"5c8447a44d4bc650748f553c90264f41aa7c7419a543d42bef7758afd1e51c25", + "7d9cf7f3b2159213c7bde6225276af477ee91b72011f24fb0c2ab96a6feb200d"}, + {"2374e95359456df02ecfe67f794a0fdf62adeadbb585e0787d3c97cd62d63e26", + "24b6030ee8e56c4d38d4dc868c938d9933b1180ba2999af6e930cecb457eee17"}, + {"f935a2442482033693cc50da75685541873218edbb58c35be2d0120caf6e300a", + "74b6b4cc560491b5274972afc6f0d474dd226b8adb1e68bbb586e919ba17e477"}, + {"e87d30104328794c7f265a16adbfd0db25c106352b21454202dc47c48fbae624", + "d3baee80f59931863ecdb91de54e55975cbd31f06818066b5a97d35023e33f0d"}, + {"5aac8cf707f66c0bb79304cf2fb3e2d278c7ad23a00809051b282909990d6d12", + "7f6712fbedba9bd3f112efbd1d8e6647af5d43bc7d023d28aeacc0ba7f8b7340"}, + {"0f66c460a1cca36ca8d45d946b93bc6b1e914f06a18d552c1f0a62f4b7b8c313", + "12cd3a4af52df6339a67a8483653cd8c2c5aa8e0e8770d091e828b1179d9f11e"}, + {"369f3cac832b9182a53c4584a5ffef245f67ef7d58f9e5d1e8d2d01a5bd89f2d", + "f5676d37f03a7541e8bcafc3e8aa670f99375d2964729ab38b40cc12f8a1482a"}, + {"b58e9140a655d5ec93e92a42b54b13d8d52a42fa2db09aedcad4693127e21c13", + "a153aca0b07c67c59245c27b46f91439c4b4c585a1c6c3a8597d3a1466cd7c2d"}, + {"0c3eb55a5031d421679fe1ee54d9605c3ebb91579fb2c2f54f893c366b6bb325", + "33a523418318173b1e16c2b6948c3ec1f24e882045756a0ee3a56ac1f7dd1b6d"}, + {"267221322e2aa08a01f4df542069e0674aa81b122927e154feb299294a5d2a20", + "9135dc09480c01d8704ed5e1f71e1631f85fb84aa0df10f2fb7768755967df25"}, + {"1a19f778f0b64aeed4ae5c8dffb9692b445dba8e2dfc35b7f1faca2195363c31", + "374c04320c12e48ed56536ca89dc1e0f3ac7164f3a3875a66c79767e10c2ad2e"}, + {"5034b3f9e49b3f8e435f70da00bcb41d29ecbb1938316bbe8fb518dd2386651d", + "19c53a56b04d81521b3cdf78c162f5050b1bd135315386d4e857cb68e37b2c56"}, + {"5c83fb50ab4073d8bce3ca71e115ff430ca5616654a944bfc91327105fe67927", + "86c7367314c0ccea4b00160700e12491a29b4dc7745c8145040205496f43d34a"}, + {"abc88cbef6d5ceb5bac1254c22496aff838a827ba822756f9b76a7a10ae8ee24", + "35eceba14b707ff18fa02a01f131a7b1d9d2affcb4af0238c3978db5da5d3f7d"}, + {"0e38ae66df38978de5f4cd330f8c7060514cd019cbeb71e6c5d1ddebfa41f30d", + "70e67cf938daa6138327f49e7f4c5f598821e82411382011490b56498c83997e"}, + {"88ffeba3a3930c8a88497b2b6eb0c376b3d298cd99bd7680952c4a2f90d79909", + "a4748fa04932308595835d81673a4c3510242b3d0b592234816a64911ee7de14"}, + {"5a058aa9a92cf4d566632e9608cfeb1ba789f9cb1697981b3e80896965667713", + "02b35f649638443c655ae3304ff1e442de70d43005b117b190ceb4411803c149"}, + {"128388f449e220c20d1c16b89af8a10b32d7fd720a09eea22150fe1e0af5bb33", + "e7524fa2c08570a7c0d1a3b0006594e1356ee152f05f747c3ff450fe5860d473"}, + {"cf01edbd805ce2b6a06a1edeb8e1db796d18957a988b5bc67c87b3313819380a", + "4a4071518b91984a4be3bdecf141f5805823684b222fb6b08e07d7af448b5426"}, + {"0671ffbdf649232dce5517a31c2e10190623466deee6b425026f4947d6da381f", + "31eac58d7221d8bb9b2f16163e512690e4fe43b780be5b154162534d6f556f23"}, + {"c0f93432244e59e10c752b54abf59baf33f81d5662bc989a38c518715887fb04", + "21f9dae8d46ca4c8e08b6d843febd53e91663ee63f0c83f0242dc26901a3847d"}, + {"fc3e68cafafb72bd9eacc0968eb636c955036a431cbaa7361957a05fbb30fc31", + "c718a6710241f91f500cbe5c9f4d91d68ed8932c81abad3582ff7a9bb00d9d5d"}, + {"f3f7b4b0ea9fa8fe641855b56fb06a071e18011a83639b1be158d749806a3025", + "789db5557a8112b522ebff9697beca7fc8988947dc9bd21909db0e452a99e563"}, + {"e7a2169d465aeb6e9c8d6e73eaa4206bf853427c1ebba9fdb483ea1ae9a3ba3c", + "7ca0365b7f80782842e565578b35487656d61fa4c406c71223217c645cd5e977"}, + {"5f587c79c42a5a388c367b969e13c90b0248ab59d03db52cadffd9818c0f4718", + "421c40ebb7bab0da773edbb00bf357963b1da1503ba32f048fc2838cda3ed35d"}, + {"b07e2e0081bbfcc7f33e46169a70bf3f163048ecc14fc318fb72d10dbf77bd01", + "8a32d243dc66f47c3538a9c614fab3495f371a4f72114db73184f9e916c4e456"}, + {"0b1863cbdba731958be8f2cf19b4c2dccc82facda9c5fd8dd2426a35f01bb616", + "f4384cdbd8fd2a2599060452cbc8a596879aaa802682fd382571bd4872418827"}, + {"b1fbcb21879ee42cb77a55a4df4f310104d8efd36c1c6ae10d571b1a25c48210", + "dc9d364609b8238e8674d72f524c079d322ab3336b79c3bceb1861332a57f04e"}, + {"667fae03900d57e996376df2d859d8c1891cf7e8abc3060f1ab0ed4259b99e0f", + "67e125bd0fa9d5311a1c17d7e4a0ae284512326e6d04f3ec7b083dd38e1a196e"}, + {"53953cd42a687a889102704c13e3f1f4d0db6dd70e6081d056295203cedda23d", + "d67bf029ff190feb1049ae919b18d24c98ea84a24fba9682658ebd4889a1cc7f"}, + {"7978bf9b5fa8ab95719289393817a55688e2c7a23312d817e39c6a06a7a5ab01", + "faf932b0a991d92b145f4b3cd9103cd38fa690ebde21ddc381d86c1626aff50f"}, + {"a197b0a5141275694cca8b19e024234fb2129171fab0bff943b1e9113c406709", + "90d378223b599431222ce2386163e8d04d8a661c2bd73732f7638e15f356bf5c"}, + {"6e7fcc9d44b84c0c2bec10d8b3287f8cb90b0aac6587800615dfca87d8874e21", + "86e4dc8bf121a49f6a936baca7572849246956541c5cad638cbc4ceaf404573d"}, + {"dcb0bba82ce2cb24ac8634a2cd045fd41b9206869c78126047c64dda0d9ecf1f", + "6b47ae1e3d866aa1358dc9b9bf6f814d6e7f8450b6207aacd3d38bf773b87609"}, + {"6795d49660bf03258efe18dbda124391cb64915093cda129764f90a4535bed25", + "0540fe708334f9cb47b5a2dec3ed77b914d061224a587146efb7f88ba2ca895d"}, + {"f6134def7f4ea939c66ce363e46ca9f2bf918b03b409337603e2065852f22a0f", + "d065cec3eb5e0fdec914edfc9fb1a2be9d5ff9bf84faa3a112644f0f83f38815"}, + {"4f78abf5dbf7b5b278555d7acd3ee1e7c05aa6d22dd53ce57c70325e325d550f", + "8d8c9fb924185870d0ef93ef0b29b2e6a03f96f7ff41b93f92b34674075ccd29"}, + {"a8cf3e64519809baaa8e90ec17df56799c5c2acc984b43f977105ee55fb67701", + "792d9d713115bb6db393d9188dc3ebf03c64bc526c1238cf4582a24fc52fa40c"}, + {"5ef50a67c70edda74c7dcc52ba915dfce05bcc8e0d16957e13b315a6958d5417", + "c51a289e14be0034b2c9ae8dad94d7eff46dfd6f61cdf687b286ddda3b837f16"}, + {"c70f6c3d08aeefbf85fda5447c6b756d311a4b068833b525c47a251f3fc4dd15", + "892c7a92ce2486f49d74076d6b9c234ddb8af2a56c70f2f64aa80354f8573f71"}, + {"a77a599e290b37c43ae2cb19237d1be4f356cdcfd181c74542429a9759f6e22b", + "d2c348da8c4de56053c64133eab60c586b6d2288795905532fc40d6d003b1b13"}, + {"55a7b7fcaa96e4cfa4ae4569bc7d9b8d3ceb45941728627f338536ab0a6fde37", + "14fccdba1c2eb5fd430366b224e35c89dc148590753759c0dc8fae357dfdc434"}, + {"cba7339cdd086f94cb6e2eba530a8f1451ec87975f0632f2f6a4b2d0de7e052c", + "b66ea0192bced6d473910725aada1d1cc0ed3e225d78185fa820c6056ae34057"}, + {"270a6ab6737c68b7e0fde1ee12b86af93e5c24e8684bd7189bfdcd5d94b8b538", + "faf9ee965df83dc64129a76ed094ab972a969693d51ce35af3bd4800a774fb7a"}, + {"f1f905fd588d44b17ea6283be0077ff3e71fd88984c88d567bf86a74f9063b17", + "c7891c357e81c23869bf2e0b2b3571450fb147c8f18a026959f23b08cc009941"}, + {"29d21d5858c163e555b23a30120b2b3d0513687bba43928d58afc990e36bce18", + "d9fb5f1f8b6eb13c790b44a461461cd6cb488ec93a5e096d85c7958157395517"}, + {"8018a7212cd0cbe6493eb70aba5ce315864a582ad62ebbcf8d2d9827d90e2a38", + "7c8662dc99a6f5c57f7dfc492af5c504a6d34e04cb4118842d89841f78c77a2b"}, + {"29aa270f196de30c41cae26ec6a3c78f3613faf8cbf5bf04eee588ae39262912", + "0a5b6f6e6dc2daca0f5bcf283c9e0db5e0ca9e079bd6261db14b43979d04867f"}, + {"2cc177693204a553fb15a0d5a825ef571f64cc69166eb98f024cfc8b9cdf883e", + "e54a9f1dc759953799b04506c3f35afe6efe49a4b2215afd1c47c7fbf32b4a27"}, + {"c0c59843232294a23d7db9520b348a6c06506a141728f22d955c6ec8d457d21f", + "1841be58157b2cdca6f59a07ac703c948bf7cd56f213e2406dc86c330df8741f"}, + {"d57a2d7d7b4a607b4d9a3cbbf41535c3c17b7992586426893a60c816144b532b", + "d93b6a13fcc812eca45d719109f2be1c39c419d56181032a2e02912be765a749"}, + {"0f022dbb9466c774578109aeefc5d431713e83377249738412c54ca7ad4fd501", + "f215cccf7333ef203ab7425f5c8d5b6db64c30bb566c997157f3263514ea2c5a"}, + {"ae2134f76a02208d7494f3cbc055524f3663d5b0e1e41cdb127116888ee1312d", + "026e90c1e05e7ea585016e6ab102e644c10cc6355447fee697d845bdd1840769"}, + {"d8b03fb132e3972e248db65634601a137ea42b1a2e1949756bf7b6dbbc0b8237", + "81a35058b6359797a4523b05f35a60c7f64bf1a6d229a7abea53709719db3f16"}, + {"98a6a47518b635cace0050f5838e6e730cf162bb4bf045b6f9650a9381371d1a", + "62a466c23c3a0ce0b263d107ec85820cec8d28e8302743695fec1bf3e340ab27"}, + {"7ae3546deda426399a22a6afddedd6c3b6740c3ef2cc50d131e96a5a3942cb3a", + "3ac9495d4083be9aecbbd72a762dbf5e352f57105b289a1971a0da2f6750d33c"}, + {"6c272cae9b527390aeca722e82c1d79733dbd70c1a968c79d1401fe7de673f1b", + "6f9de11c1f6f53fc503e7ed49bf216fe020664e42fd097126709c82932ea495e"}, + {"1e0abaf9f769fd4988f3b5a543af0d45e4833f5198a181150fb2ef8fc1778b13", + "50ec571e11dcdd6cce97095b754532d4f593df6ead6148be63c008057d05ec06"}, + {"76c592c267c2c1053827d9f72b2f1acdfcac91aa5c5d283ebb6f84aa7960d304", + "a9278cae9638ecc712ff1f2fe5b47348f113701e0d15ee35c9be4f16e4d72850"}, + {"37d059dbfcbb73a04ce93a6a9700d325a469555f7329f3ff629606ce53f93e18", + "24a72bc383ffc9754ca67b89b45d8f81a7d1b4d7c483686c70fbb9d22359bd48"}, + {"cd51a10618a1724a15429fade0127565bfd046fe8e865080f75e8ca596af1117", + "5cf8658f130f859d0f46a43dd0d14403a5642b6dd89c29c73b7f5527eccdcf58"}, + {"10136633655ca3b05d24d3de3011d754a7024e513b1553d5fc566057cd300d36", + "9a7885a6c5ae3c528821464f51e5b3801db8e89b827bf6c125d29c92b031b279"}, + {"5c93c12f612152c1c3a5b43450f280ceea6ba0111c9f7888b1ed811df1d86915", + "6170fdcbc9b91ff30ae85ee267dd257fd6898c85a33556ecbc8194cffff96e6f"}, + {"6d0265ff5ee44ec4072d71c51931271c0cbac96a0fdfa228c33eaac4a8d3751a", + "145d32abd93644ccb6449aa47fef948ab09a1ea665a45a364e18a0219395a764"}, + {"d3971f263b0b7f8e216d7f438c28cfd2245d743e603380f5144a5b0edbe3d507", + "23ffd808f0b240d41c4fa3e423ca6516c41df442ad67d2cfb30274c557bd7f46"}, + {"0e292ab5d08a7ad67ee4a2f6f066aceea0726c7785208123a5aec622ee6baf3b", + "cfd79f2baef15120f9aab7be1dab7ab4e89d1dd82120d276821696089f750179"}, + {"7e04408466dc68aa5ff7dff24ab7445aa0c43d9d6fe02b3a54e17852c0dac903", + "16579875020c797dde3c77800f906b259304011713b112e8bf1688003fc40b69"}, + {"0de03719b00697282cda572237d6eade729a631fe85060c60369efb58089640f", + "49b06b5610de567531c9777998da61a27d3b9b464bca01287ff7ee2e5eeb567e"}, + {"4460ecab3a3993672499bd90bdfddf6b39c14406354e881c297bf9aa2d95a41c", + "c0b0ddd09c3d3cf724d09b294efdc300e3694011af6f7491f85855e1fcd27415"}, + {"5b0c4ca74594198245d05b59cc24f73503edb762ba1402160ba72e6d53984c19", + "2524a32b0c9a35d0e6d9abdb5fda4bf481e158b4495251780bc8a9849c0dbb37"}, + {"9437cf7151d90d35a85bec1d32e4de28346c4ba4960b0b2d415e658ee77e9f2f", + "50f4d4f04c0a91d7c66693c3b5656c83614088b08d4b5bb59df8c4332023757c"}, + {"4ae0941cf4b873cdb72a75f96762d31f186facfc616ae5a4f75d6146c8ab4012", + "6ac983fb81164372f3870acf519cb77723dfcc56c4e1922b2c29061876eb3319"}, + {"85dacba8ffdb0912a6a82738bdf610c74a636a7e2b76da24ca30f66ec95d9c04", + "418d1b3fbb8be9e35beae5267b5ce2110b53682287517e16a15895caa922737f"}, + {"74b3b0c307eb627ad5e56cc0840687079468ef43eab43347df9bb47c8a7b922a", + "3f5101cb863e74d89c32e48d6a1d51236d92d263a56afd1e78f3ac6585ad401b"}, + {"fe348630eb4fe8fff716fe1d96a503ac852b4622600b2040befa473365373d3f", + "599816814b7eb47d5624be588cab2555fe882836e82d69f8ab267f2e7c6b625f"}, + {"fd947e5710145f70b2d650f9db3c3c4006ee5fa27b162c64bbde7a4a502caa1d", + "a51cadc9f26a9ecb1c4a080f2ac5c44ad666e0ee205ca875758bb02a4c49e921"}, + {"7fd4313e895bac05cfc51e1070fcf1b52dd80e987a16102c22d7b1c4e8c7001c", + "d02f3c55f49422baf0413de805f7da581ca2c124737d1ade9ccee8d59d05c97a"}, + {"6e1b03fff8d9a75ca1136cba9a2ed94a67e9dd727ceb7e7621de3308f592b204", + "6ea9ae9affb20a8cda3f3cb527c31fdc54483c90e3e7cbb709b1d8d82d980016"}, + {"9785f1515c5b8b364b388b1b22821f1cd3fa637bea98f6ed127bf56f9562a637", + "ed8820ae10d680a6a6ec55289323640de9dc36289e55014a67cea6943bd7c67f"}, + {"4e6565e8f6355637ed8fe0ad26d701c871586c6899ad0393637b7432b21abb01", + "3817ffcfba81e808fc7d892df9a92139a6c1fec012518fc514208dcbc96f1027"}, + {"74ede9acaf7b907b6421122b7663f2fbd4b96b69a49a5be4cce7ee71c8f94211", + "d50c53cb934386b3487e7e6c982176805c9ae06e6451bf7ac8f75f435b874021"}, + {"d9298fcce9222b61ebd60d4e08efb7b2b8deeedcb21dcbdd538b5d94763e0b35", + "32180db80a049b160d635bcca2c637def4989a0f155a05d65514498d18e92d72"}, + {"3f8c0d1d964cae028e17d021e00d440169bb340e394e2d4b81496dce5011d41f", + "9ef21d85e2a7b23d91adcd91b8b20a318c65e29984845cea9e86c83095e9be24"}, + {"bd4f8ce79617eedb315aff777bf16d54784e192ae169466bb88c79e5c6e7582f", + "ef234e4feddeb187b6c52bedc013ae01d4caa9aa00816549ee83dba16d75715c"}, + {"252843f300f8e0c4917924f98871bf21eefbc35b849147eb2710943996993639", + "98143d07e0e46a6006020cc9b52c1c53d73264b0d5f6d97a843cc118454f071c"}, + {"590a48130c5b7c3edbc28649413dd21c607f12133fd64892f1f94445e26c6c0e", + "3d5fe0facc62e91bdae75de485059a884ff57d229e845ce6583c289a1a0bae03"}, + {"67fb10fcbe5cb27ed87ee2bafc390cbf58e9e3d1b5ae484dba6440ecba0ff51f", + "a57a21e89aa79d36d3f130f9e101bdf2835594181690cd22ae439ad56bb82f6e"}, + {"956c036e2a28891528f47aeb35ce303fd2f4e8694bfd17db62a104f6f02f8417", + "a57223e36b52498f6be70fbfcaebaacb93941e0ac8020d0cfb742ea05abf7606"}, + {"e115347558b9ea6a9658f05ba888e17c5d0980fd881cca6429431ca9682df222", + "b141606fb2601df912fea792f7c551389ea7bb6bd3ae810c8fab14414e07b116"}, + {"bf666546f43c1b7cde451203c1c588ae94232350e76c8f6d439dd741d43be83d", + "12139801c6f2574dd4d05bc5d994324db73736245a32831dd4c33f6d5518b12c"}, + {"eb8f27e47e6bf61836b290bebca9a1a9d8bbbe23dabc503f8c69d3c8eab8213a", + "10e178593c8d4ff4e3a7b5a77b669638fbc011d022a128df2d4631ac68167b0a"}, + {"83192bb379fae0011976edfd2e5ce4cd23145302735363a623c209b66e17e02f", + "e891af8305aa1d33d9ecf46105b97292bcd3de87e5bd525c23945cc178aa324e"}, + {"0d0397ddaec333d789f0afd0a3526b5705d82ab1dce2ef98b0cf0215d817f13e", + "c287734b2daa886277197e7c7041d36a3b6271d7bb5b86847f9ccf7034349904"}, + {"6919ae1f897ba44d5b8882e8efc2048cab88ba35bf6129683b0b59eadf912304", + "cd3ec0b8085504094550a85569a841ffe623133ba7df6d892824b5155c24af78"}, + {"bb6d2ca4877b979e38470d00739ce216f9d0d01ed8145c49d3b2e7e339df9b37", + "7f3252d45a17b5b61b5bc88007e6e15ae6f813eb3aed2955941c5469585d9332"}, + {"5e4cd46e0d230c3f81655594efb9a5ec8f512c53f8653ae462a12e24588ead25", + "9876dc1d59cff049acb47a5c76a357dbd28249a46529ca1c9dd1a6acc3825d1e"}, + {"5cd6c28ede3cf32a7d41a0ee82db2e094e307ae59d377aac837ad92945a92e28", + "f505969087228b43e0b1783bc876a999b26b1ca59f512055cf6c2d6fccd31967"}, + {"c92c6bf1fe8eb00439c250cd3c2958c0f589f97d1e53b12c2c2b164eef643c26", + "e91005394f98f6d050a51d01d91bf40b088680544ced0133dc9b76dc89f2f06d"}, + {"2e60b5da461e329be6f927bbf1881636d9b482a7b8a550a1159fd999cd2e1e0e", + "1b69d3245e6bb244bbfbf07d3408918f441f95ce9e164a8838869e93e9bd2423"}, + {"12958c58e9a3994cc55e9299498ca0d9a6c852568bc066a16dd3ea290beaf026", + "35fc37f4b95f4469f6f1bbe3c3568758ff4bd69362dff231e6046449ed0b3723"}, + {"e10041dbbd970f61d686f6b705bd9b48b21ff5ac9134d3c954c484122fa12c03", + "db06a4b799ad123f7facc3c3469537237416c7e814285045ae9b05a29b309870"}, + {"1e76f55347c64f512de6a274ce4eac1903399b4e9b036f00db13c132c84f6f23", + "412ee326c532d7fb22a9c24c13779ba58da6700c5222f0159663c676ffb6de72"}, + {"b86b15a0b94c2d400a2ca12a5b655ef8cad897bb76824ca3abcf8010ec7dd22f", + "54387f7ab7154ef9dab2c05af62d948bff94960a4c091cb72e470486a9d44549"}, + {"f9b69e01755a8971e75d056cc40a7eefdf2ba7b83f11798342d63cc1e3ccff3d", + "25a3a1a5fddd93ed6c694a80f54a130252b148c5c3766b924f519a09e58cab1d"}, + {"b5f4f1fc2b16f37c014785e2512def0b7167e0ed1d8d61794ced516f89a6a91e", + "8e6884b2208f9822731e200fa433153d7825c6d2c5164e563c1fd4aae9866016"}, + {"bfc3c0e75ee0041c3151879aa400d43eece9bfb7641f6e29d805c4e574c4ec2d", + "b64f1177bef8aab66cf7b287276ce3c4325f96dbccfda5018285ebf736878762"}, + {"f2feeb5f82c281bc72b47d6f7deac81748cb0f9455cf95f283b46358c6bd5335", + "fcfbfe831e6ffd643b7e5a119042ac90e404dd6fe138eced2dcfa8682d5b7543"}, + {"08b05cee3cf8731094e7c8ab7e402e7627884f4e560a2c3f0c8c15ff3b68ae31", + "a29f8a8e57fb6a8e434513bd85209e8a6d65daa2d8ca5621e26760a94568c130"}, + {"e6c39685bb4831568e71ff04f82444f9ef1d3ddd6b39f9d5117058326a716834", + "681cfa89812e0933e5c39912afbe1b52b52bc14cd795bc131f7f1b9bf0a42a0a"}, + {"34df6477bad44f5782129ce8ef8330af1931e473455dc5bb02bc08352c775704", + "9c775d36dc04ae52cfc4e384f2acd956a3bc5f3ac08ac813377bd3495b8de13a"}, + {"231822ea9c0a195534982acab449cbad64d2c8e4309fc14cc5e7fd01074b243e", + "13abc54b4d65a1ceb455ac0677de735015b1dc3831bf8b0558cfc17ef680cb76"}, + {"7ee0b73119314dd1fafd73f314793b9d202823212e672bb6e2e0f00020ef220d", + "dff53598d719a4b231697286de7171c54f6dcce568010ba8929f52284628c20c"}, + {"694748489fd577d19d8fc764dc495d275e924b443f851f40b4d0c9e9a0248b18", + "9242c62e3fe6f6b929d962479d18f24d0f29af422c089ef4d3b193ddd06a3f1d"}, + {"d933f62222bcd802776c9fe9f776a74337e2e1c2a6b4757a1a89dcba64b6ec13", + "a1c88002d033161a50eb051d48110a2cd566bf75ffad1d6996b69347a5c2c874"}, + {"0f84fa4fd3141101e7163d9b5a3436fda71f369dde063f3087e67d7fd124a30f", + "227b58b9e5aae4e71fa2a4ea358dcb37d8350a89020a02e08e91627da5b14266"}, + {"3177d8c0a8b216d911f5fed6df082163f3e458d8cc9f8fe39ba48348af5c7109", + "dcd7b75011043718fbedcab5672bd0b7991846f29336eb8db9799cc29590d46b"}, + {"e83d95f22631ea13c273dae7bed7830a927792e288b1a55cdffa1a41588d8513", + "82996c346bd95d64b4d11cb6f2c346ca34bf48b2bdd34f4092923fc1f4630a63"}, + {"3f766eea298745c46cd4563e624455d96b8d8affc3597c0c62ff2650bb6f7a1f", + "5fde8146052b402802fd85ef7c336222502e647d715a0323871f2d7c567cc864"}, + {"420c503fa383c532482b1ba5ac6f612ff248a2c2d1f1445a510691a7feaddf28", + "aa3cc1a45c3d782b674140f8889f91b8517a7ffe28ebf6c31ccf0d7f94fcca59"}, + {"9264f112b3b3c43c33034f05842a6dc65b48f7618a40795b26ab31e869780b0a", + "8a90024fc18bafe5cb30583690fb83c6be57318e362b427bad3748bf7795c376"}, + {"bb9f1789a219a9cdbaedb9bceb9402742b3e8387164e65591b94f62d29b8961f", + "ddc670d74747c08dc109c8f9b0e47d92516368d65daf6b4860bc9441fc4d3f44"}, + {"7343fcca63ccd993be8e68e019e66ecc706bdf1438a1f92d0c2f6f9344074818", + "9ed23885e7b0818d1ae85d246c5791b851175ccd488d0307841845e2cf79e236"}, + {"5fa29c71c398f59514e2974fb5f6c9769d21953e6da1bf675694a8dc356de22e", + "20d4655962adcacccf18b111564175cc63c16127ffcafe56255df5dc5b494031"}, + {"9a3c70cd8635238499d6094129c128c2472798b9b70e7c998e4846eb2d065432", + "e65d924309065e31262e3d933ca0c220ee26b3345a59e5440dcb6b6203633769"}, + {"4cc2f06a95ec398e87f920fbf42c65a178243f17c385ab02078575d68dc0772a", + "ca7de00ec696183e978915b76c24d7f5e4f4fc92e7cccbc8317cda158a4a3d26"}, + {"4daa3126ea5c8ce2d4716cbf1f7f4c31e88221b95178687c885960ba33e2b92c", + "9a97c82c8feedcb0d5818b28e8524a6acd2372a996742957ea99e30af730016f"}, + {"210cf82275cc5581c185a4cfe75a48a9c4cec8b26ae6ee6d247abbc993d11b3a", + "1cf2d1a450d86599620b22dc6a67e82f12ba4d143706330a406827696947e46c"}, + {"378061a4f8a56ce7fb35eb42d1c544f0291c4f16e4632e6382df2a42a287e020", + "1de340df9c353eb7baa9e34f4ecbcdd6c48b19915def5dd438bcad4a1860e57e"}, + {"79edcec98cac4c68ba2d0705be19a582dc7f8f8801d8ba8731ba4852c0db6431", + "0a2c7ce989c412478f22867d696a64f2a2bb0ea49061db9b4b723ce455cafc41"}, + {"48d5db49efeac028e9b6b255b0b748f6376f75979d95c6f7fb543f2b8189ad1e", + "585d8408a4a981c1880cd7d9c4fa8f3608b403e69a246ad66402abbc4c515659"}, + {"bc51b72885daa8da3a4b7dd990865d5d68cc25c12178071e8807195c62925318", + "5717e3bde78dd0b8da30eece11184e058f11bf1feb9f102ef5e050536e1fef47"}, + {"8b41b03f8a883169e9d2a5958d868124cd37b7ee4c84805a3729c2c95f697207", + "a708912d5305487f754c2857337c754155c99fc80a5f366e145198472a267e01"}, + {"b0ea6e71547375e9c12773a233e2af99ce90f75bdd10a4d9c9f294b5238ca009", + "7128133f5199d228fda2f2b621e939328973137e191af36bf9da9a2b23513c12"}, + {"bbf1697bf69a5c50905a0af9cb8ac1801b737853dd53604d622ee020459f6403", + "05082d4ab91e94f4f258571b936990664a8bc3dbff7b1d969ecc1c67f93a586c"}, + {"346fe98321ca46ea6c5107d757f85426024c56b2c16f9d65b195bfce91001c2b", + "a3bab21520dfd7f160398c7d4c1178011e173de520ecf2e28c776ca8612fce76"}, + {"f803f928ef671a45cb8ebb436520d376a4dee0b30b7c7ac7bc268cb261a6ae18", + "6cec3ccfa3fae1218d37668095568641131cbb4c3282c5c8733582c06a532b2e"}, + {"c34956201d38ea89fa23b5705302f2dfe2aadff9441fe1275cbac4c1a79cc10a", + "65fe02b65388a21906d03ed13ba0be3b06d0338a54efa7cd40bb51bce364f224"}, + {"4cb380ef1683c25b5b150b13bb5670ddd550efec81d670051361b0e956d1ee16", + "0cdba037581cfc2885a23a0d1ef3fee298bfb764c482ff93fbf315416d4ac746"}, + {"92b892cf2e687990deeccc200222fafa8c5f6dde6822560d4cff63faa2d86c0b", + "3661e2b936459dc36b50bb913443c1a9c1bee7a20ac434a5393d2ea27240d653"}, + {"9f007942d0335c424ef5457caceeadd0b08635a8ec6c4540dab41e1f889d6d25", + "2b84d9b945bc44bd4bfe0a3528db1fb36b89a3eec37a53ecf0426b8ad1426a47"}, + {"79fc38995745def485f0b15256c3ddd0c90f0e152e6da9ea7cc973048928190a", + "126cc0ca47a723f0cdc7498132d0afd98f2a0b4c8d9056b4d64b3b710054095c"}, + {"73a8494cf1bb682f50c251b447d41f9e4e6827de6fca2f8fb24767b1f7f6a111", + "4ae06615ae3835efe72ceeb2fb86af8c58dfb942817cb1889e24358642baff1a"}, + {"f2d4b68962a0c392292f26276f7db3be30d29c868421b5d7bb0b09df40149106", + "d5568c4635741a949d2ec79ce60eddbe552316a39ce995ea1dfb331139b6c244"}, + {"f3f116d4b4251c1634ffa9ac9cc0bf666e0bc58b445ba762e5b9fbe5b82cd72b", + "82c86a6a830c7cebba9860959017478f3d47996a856a084b1371dddfdc8ccf74"}, + {"bef8be67bad3f1b644741b638151a5e326cd040e45805100abfa1cb2023e2720", + "8bdf71bb91953fbc769ccd38b2f9a56987bd37c012b6284c517390d0e690f65f"}, + {"c5e8d660c0f432b8e0f4700d30109abfb630fefda684aad07df14d96d8d2cf1c", + "65c5a1d68ef39e74851356dd3e79914ed1e7af2d9ff92025a340e3beef488c19"}, + {"203b0790916cda3385b6ac955e8b55d72a06e9f46dcfa201addd752fd7e56102", + "ea6deb3a125a97acb46c66921fcc3de81a8614c9af4b44405fd8ac7967040d74"}, + {"212f000b8adad8cbf2bfe2a34d1af4f19fec015072bbed897b4bb46cb5c1fd3e", + "7d313ad2d459b66c41eba054598626ac11b8c747787e61b657d1cd920c457e0c"}, + {"70727c29524a46873384bacb8db27cc5a8550e7d3dd032344c07b8bbdde09f02", + "b741269f9b23c63f378ea7852e6c87e179d7a2f3aa36ffabfb21b0099a504718"}, + {"1438d163dc0a3c9df341af7474b7795f3add2855fbd184b7b09a8fe7e73b3611", + "1a6e62904310d1893ab79e790c87da05e73675d58e923adaf4ef07ec1eceb636"}, + {"8ce5f5a12f3e9a68301784a9026c48e12603581195457cf0ae3c1df88665632b", + "85fb6bf8b6b251e0a765c6f9347d90737a07f56d9ab0a3fd5ef8d2c96f737b7a"}, + {"369b3326d376203b9c2ff634f3842c6e3642ac36b0956fe379bff77f14403119", + "bc9986ab0e74e0e30beb7abea3522f486a22a989ce21dce9faea5eadc8837715"}, + {"71c4ab15d9e12e38e63451d881acee03c9aa9b4122d64d9b70bdfa054dd91924", + "db6314c169a555b7827fd36497363e4592a1ba4f359027f9aca47ce421fc9c44"}, + {"aec410101f0dd94186ab16a6976c3221b82124f94f274a58646c4b24e9850706", + "ddc588a9344d50f15acea91e4cbcd84f7db75dc3be42b9139b82b4a51d130357"}, + {"7291238fde758f1d8357dae5a5b4934fb77a85438c788df0641cc335f0cb1336", + "6f0f3bb17fbe7675df022d1fe055a4abcec0fa5e6a5e05ab87496fdd75996a73"}, + {"4e094348d8cf3c5615e4a734bae2f41561e9eb0e7e38a669ac25f258a850810a", + "d92962e2827e05ce44d723bd99933934b772642b646b3cb8036b080d0a084362"}, + {"a20ec90d5e830aed686038d255074fffd95035497e73cb587bae42907e32fe15", + "4fbeef3d982e8e0f8084082e99aa051446b3183b6db5b60bbbb254bc62da4c0f"}, + {"1d038cb81514f236f31f68faf70df24d3346278dbcce3d78fa35102565526e2a", + "deca427a897134d73a9d54d98772ab5c265b1269b5700316fc85dcd7d2cb1a4a"}, + {"24d5fe7ca7d92b3c6d6ef071200cfc4ae2ab763f2b9072a093c616cf78d2fb21", + "1f515f845a2f15d6efbe7f0c3af76e97bcc1ac07caa73e4085210abff933382a"}, + }; + for (size_t i = 0; i < sizeof(tests) / sizeof(*tests); i++) { + uint8_t input[32] = {0}; + uint8_t output[32] = {0}; + uint8_t expected_output[32] = {0}; + + memcpy(input, fromhex(tests[i].input), 32); + memcpy(expected_output, fromhex(tests[i].output), 32); + + int res = map_to_curve_elligator2_curve25519(input, output); + ck_assert_int_eq(res, true); + ck_assert_mem_eq(output, expected_output, 32); + } +} +END_TEST + static int my_strncasecmp(const char *s1, const char *s2, size_t n) { size_t i = 0; while (i < n) { @@ -10726,6 +11263,10 @@ Suite *test_suite(void) { tcase_add_test(tc, test_der_reencode_int); suite_add_tcase(s, tc); + tc = tcase_create("elligator2"); + tcase_add_test(tc, test_elligator2); + suite_add_tcase(s, tc); + #if USE_CARDANO tc = tcase_create("bip32-cardano");