package poseidon
|
|
|
|
import "github.com/iden3/go-iden3-crypto/ffg"
|
|
|
|
const (
|
|
NROUNDSF = 8 //nolint:golint
|
|
NROUNDSP = 22 //nolint:golint
|
|
CAPLEN = 4 //nolint:golint
|
|
mLen = 12
|
|
)
|
|
|
|
var (
|
|
mcirc = []uint64{17, 15, 41, 16, 2, 28, 13, 13, 39, 18, 34, 20}
|
|
mdiag = []uint64{8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
|
|
|
c = []uint64{
|
|
0xb585f766f2144405, 0x7746a55f43921ad7, 0xb2fb0d31cee799b4, 0x0f6760a4803427d7,
|
|
0xe10d666650f4e012, 0x8cae14cb07d09bf1, 0xd438539c95f63e9f, 0xef781c7ce35b4c3d,
|
|
0xcdc4a239b0c44426, 0x277fa208bf337bff, 0xe17653a29da578a1, 0xc54302f225db2c76,
|
|
0x86287821f722c881, 0x59cd1a8a41c18e55, 0xc3b919ad495dc574, 0xa484c4c5ef6a0781,
|
|
0x308bbd23dc5416cc, 0x6e4a40c18f30c09c, 0x9a2eedb70d8f8cfa, 0xe360c6e0ae486f38,
|
|
0xd5c7718fbfc647fb, 0xc35eae071903ff0b, 0x849c2656969c4be7, 0xc0572c8c08cbbbad,
|
|
0xe9fa634a21de0082, 0xf56f6d48959a600d, 0xf7d713e806391165, 0x8297132b32825daf,
|
|
0xad6805e0e30b2c8a, 0xac51d9f5fcf8535e, 0x502ad7dc18c2ad87, 0x57a1550c110b3041,
|
|
0x66bbd30e6ce0e583, 0x0da2abef589d644e, 0xf061274fdb150d61, 0x28b8ec3ae9c29633,
|
|
0x92a756e67e2b9413, 0x70e741ebfee96586, 0x019d5ee2af82ec1c, 0x6f6f2ed772466352,
|
|
0x7cf416cfe7e14ca1, 0x61df517b86a46439, 0x85dc499b11d77b75, 0x4b959b48b9c10733,
|
|
0xe8be3e5da8043e57, 0xf5c0bc1de6da8699, 0x40b12cbf09ef74bf, 0xa637093ecb2ad631,
|
|
0x3cc3f892184df408, 0x2e479dc157bf31bb, 0x6f49de07a6234346, 0x213ce7bede378d7b,
|
|
0x5b0431345d4dea83, 0xa2de45780344d6a1, 0x7103aaf94a7bf308, 0x5326fc0d97279301,
|
|
0xa9ceb74fec024747, 0x27f8ec88bb21b1a3, 0xfceb4fda1ded0893, 0xfac6ff1346a41675,
|
|
0x7131aa45268d7d8c, 0x9351036095630f9f, 0xad535b24afc26bfb, 0x4627f5c6993e44be,
|
|
0x645cf794b8f1cc58, 0x241c70ed0af61617, 0xacb8e076647905f1, 0x3737e9db4c4f474d,
|
|
0xe7ea5e33e75fffb6, 0x90dee49fc9bfc23a, 0xd1b1edf76bc09c92, 0x0b65481ba645c602,
|
|
0x99ad1aab0814283b, 0x438a7c91d416ca4d, 0xb60de3bcc5ea751c, 0xc99cab6aef6f58bc,
|
|
0x69a5ed92a72ee4ff, 0x5e7b329c1ed4ad71, 0x5fc0ac0800144885, 0x32db829239774eca,
|
|
0x0ade699c5830f310, 0x7cc5583b10415f21, 0x85df9ed2e166d64f, 0x6604df4fee32bcb1,
|
|
0xeb84f608da56ef48, 0xda608834c40e603d, 0x8f97fe408061f183, 0xa93f485c96f37b89,
|
|
0x6704e8ee8f18d563, 0xcee3e9ac1e072119, 0x510d0e65e2b470c1, 0xf6323f486b9038f0,
|
|
0x0b508cdeffa5ceef, 0xf2417089e4fb3cbd, 0x60e75c2890d15730, 0xa6217d8bf660f29c,
|
|
0x7159cd30c3ac118e, 0x839b4e8fafead540, 0x0d3f3e5e82920adc, 0x8f7d83bddee7bba8,
|
|
0x780f2243ea071d06, 0xeb915845f3de1634, 0xd19e120d26b6f386, 0x016ee53a7e5fecc6,
|
|
0xcb5fd54e7933e477, 0xacb8417879fd449f, 0x9c22190be7f74732, 0x5d693c1ba3ba3621,
|
|
0xdcef0797c2b69ec7, 0x3d639263da827b13, 0xe273fd971bc8d0e7, 0x418f02702d227ed5,
|
|
0x8c25fda3b503038c, 0x2cbaed4daec8c07c, 0x5f58e6afcdd6ddc2, 0x284650ac5e1b0eba,
|
|
0x635b337ee819dab5, 0x9f9a036ed4f2d49f, 0xb93e260cae5c170e, 0xb0a7eae879ddb76d,
|
|
0xd0762cbc8ca6570c, 0x34c6efb812b04bf5, 0x40bf0ab5fa14c112, 0xb6b570fc7c5740d3,
|
|
0x5a27b9002de33454, 0xb1a5b165b6d2b2d2, 0x8722e0ace9d1be22, 0x788ee3b37e5680fb,
|
|
0x14a726661551e284, 0x98b7672f9ef3b419, 0xbb93ae776bb30e3a, 0x28fd3b046380f850,
|
|
0x30a4680593258387, 0x337dc00c61bd9ce1, 0xd5eca244c7a4ff1d, 0x7762638264d279bd,
|
|
0xc1e434bedeefd767, 0x0299351a53b8ec22, 0xb2d456e4ad251b80, 0x3e9ed1fda49cea0b,
|
|
0x2972a92ba450bed8, 0x20216dd77be493de, 0xadffe8cf28449ec6, 0x1c4dbb1c4c27d243,
|
|
0x15a16a8a8322d458, 0x388a128b7fd9a609, 0x2300e5d6baedf0fb, 0x2f63aa8647e15104,
|
|
0xf1c36ce86ecec269, 0x27181125183970c9, 0xe584029370dca96d, 0x4d9bbc3e02f1cfb2,
|
|
0xea35bc29692af6f8, 0x18e21b4beabb4137, 0x1e3b9fc625b554f4, 0x25d64362697828fd,
|
|
0x5a3f1bb1c53a9645, 0xdb7f023869fb8d38, 0xb462065911d4e1fc, 0x49c24ae4437d8030,
|
|
0xd793862c112b0566, 0xaadd1106730d8feb, 0xc43b6e0e97b0d568, 0xe29024c18ee6fca2,
|
|
0x5e50c27535b88c66, 0x10383f20a4ff9a87, 0x38e8ee9d71a45af8, 0xdd5118375bf1a9b9,
|
|
0x775005982d74d7f7, 0x86ab99b4dde6c8b0, 0xb1204f603f51c080, 0xef61ac8470250ecf,
|
|
0x1bbcd90f132c603f, 0x0cd1dabd964db557, 0x11a3ae5beb9d1ec9, 0xf755bfeea585d11d,
|
|
0xa3b83250268ea4d7, 0x516306f4927c93af, 0xddb4ac49c9efa1da, 0x64bb6dec369d4418,
|
|
0xf9cc95c22b4c1fcc, 0x08d37f755f4ae9f6, 0xeec49b613478675b, 0xf143933aed25e0b0,
|
|
0xe4c5dd8255dfc622, 0xe7ad7756f193198e, 0x92c2318b87fff9cb, 0x739c25f8fd73596d,
|
|
0x5636cac9f16dfed0, 0xdd8f909a938e0172, 0xc6401fe115063f5b, 0x8ad97b33f1ac1455,
|
|
0x0c49366bb25e8513, 0x0784d3d2f1698309, 0x530fb67ea1809a81, 0x410492299bb01f49,
|
|
0x139542347424b9ac, 0x9cb0bd5ea1a1115e, 0x02e3f615c38f49a1, 0x985d4f4a9c5291ef,
|
|
0x775b9feafdcd26e7, 0x304265a6384f0f2d, 0x593664c39773012c, 0x4f0a2e5fb028f2ce,
|
|
0xdd611f1000c17442, 0xd8185f9adfea4fd0, 0xef87139ca9a3ab1e, 0x3ba71336c34ee133,
|
|
0x7d3a455d56b70238, 0x660d32e130182684, 0x297a863f48cd1f43, 0x90e0a736a751ebb7,
|
|
0x549f80ce550c4fd3, 0x0f73b2922f38bd64, 0x16bf1f73fb7a9c3f, 0x6d1f5a59005bec17,
|
|
0x02ff876fa5ef97c4, 0xc5cb72a2a51159b0, 0x8470f39d2d5c900e, 0x25abb3f1d39fcb76,
|
|
0x23eb8cc9b372442f, 0xd687ba55c64f6364, 0xda8d9e90fd8ff158, 0xe3cbdc7d2fe45ea7,
|
|
0xb9a8c9b3aee52297, 0xc0d28a5c10960bd3, 0x45d7ac9b68f71a34, 0xeeb76e397069e804,
|
|
0x3d06c8bd1514e2d9, 0x9c9c98207cb10767, 0x65700b51aedfb5ef, 0x911f451539869408,
|
|
0x7ae6849fbc3a0ec6, 0x3bb340eba06afe7e, 0xb46e9d8b682ea65e, 0x8dcf22f9a3b34356,
|
|
0x77bdaeda586257a7, 0xf19e400a5104d20d, 0xc368a348e46d950f, 0x9ef1cd60e679f284,
|
|
0xe89cd854d5d01d33, 0x5cd377dc8bb882a2, 0xa7b0fb7883eee860, 0x7684403ec392950d,
|
|
0x5fa3f06f4fed3b52, 0x8df57ac11bc04831, 0x2db01efa1e1e1897, 0x54846de4aadb9ca2,
|
|
0xba6745385893c784, 0x541d496344d2c75b, 0xe909678474e687fe, 0xdfe89923f6c9c2ff,
|
|
0xece5a71e0cfedc75, 0x5ff98fd5d51fe610, 0x83e8941918964615, 0x5922040b47f150c1,
|
|
0xf97d750e3dd94521, 0x5080d4c2b86f56d7, 0xa7de115b56c78d70, 0x6a9242ac87538194,
|
|
0xf7856ef7f9173e44, 0x2265fc92feb0dc09, 0x17dfc8e4f7ba8a57, 0x9001a64209f21db8,
|
|
0x90004c1371b893c5, 0xb932b7cf752e5545, 0xa0b1df81b6fe59fc, 0x8ef1dd26770af2c2,
|
|
0x0541a4f9cfbeed35, 0x9e61106178bfc530, 0xb3767e80935d8af2, 0x0098d5782065af06,
|
|
0x31d191cd5c1466c7, 0x410fefafa319ac9d, 0xbdf8f242e316c4ab, 0x9e8cd55b57637ed0,
|
|
0xde122bebe9a39368, 0x4d001fd58f002526, 0xca6637000eb4a9f8, 0x2f2339d624f91f78,
|
|
0x6d1a7918c80df518, 0xdf9a4939342308e9, 0xebc2151ee6c8398c, 0x03cc2ba8a1116515,
|
|
0xd341d037e840cf83, 0x387cb5d25af4afcc, 0xbba2515f22909e87, 0x7248fe7705f38e47,
|
|
0x4d61e56a525d225a, 0x262e963c8da05d3d, 0x59e89b094d220ec2, 0x055d5b52b78b9c5e,
|
|
0x82b27eb33514ef99, 0xd30094ca96b7ce7b, 0xcf5cb381cd0a1535, 0xfeed4db6919e5a7c,
|
|
0x41703f53753be59f, 0x5eeea940fcde8b6f, 0x4cd1f1b175100206, 0x4a20358574454ec0,
|
|
0x1478d361dbbf9fac, 0x6f02dc07d141875c, 0x296a202ed8e556a2, 0x2afd67999bf32ee5,
|
|
0x7acfd96efa95491d, 0x6798ba0c0abb2c6d, 0x34c6f57b26c92122, 0x5736e1bad206b5de,
|
|
0x20057d2a0056521b, 0x3dea5bd5d0578bd7, 0x16e50d897d4634ac, 0x29bff3ecb9b7a6e3,
|
|
0x475cd3205a3bdcde, 0x18a42105c31b7e88, 0x023e7414af663068, 0x15147108121967d7,
|
|
0xe4a3dff1d7d6fef9, 0x01a8d1a588085737, 0x11b4c74eda62beef, 0xe587cc0d69a73346,
|
|
0x1ff7327017aa2a6e, 0x594e29c42473d06b, 0xf6f31db1899b12d5, 0xc02ac5e47312d3ca,
|
|
0xe70201e960cb78b8, 0x6f90ff3b6a65f108, 0x42747a7245e7fa84, 0xd1f507e43ab749b2,
|
|
0x1c86d265f15750cd, 0x3996ce73dd832c1c, 0x8e7fba02983224bd, 0xba0dec7103255dd4,
|
|
0x9e9cbd781628fc5b, 0xdae8645996edd6a5, 0xdebe0853b1a1d378, 0xa49229d24d014343,
|
|
0x7be5b9ffda905e1c, 0xa3c95eaec244aa30, 0x0230bca8f4df0544, 0x4135c2bebfe148c6,
|
|
0x166fc0cc438a3c72, 0x3762b59a8ae83efa, 0xe8928a4c89114750, 0x2a440b51a4945ee5,
|
|
0x80cefd2b7d99ff83, 0xbb9879c6e61fd62a, 0x6e7c8f1a84265034, 0x164bb2de1bbeddc8,
|
|
0xf3c12fe54d5c653b, 0x40b9e922ed9771e2, 0x551f5b0fbe7b1840, 0x25032aa7c4cb1811,
|
|
0xaaed34074b164346, 0x8ffd96bbf9c9c81d, 0x70fc91eb5937085c, 0x7f795e2a5f915440,
|
|
0x4543d9df5476d3cb, 0xf172d73e004fc90d, 0xdfd1c4febcc81238, 0xbc8dfb627fe558fc,
|
|
}
|
|
|
|
cOpt = []uint64{
|
|
0xb585f766f2144405,
|
|
0x7746a55f43921ad7,
|
|
0xb2fb0d31cee799b4,
|
|
0xf6760a4803427d7,
|
|
0xe10d666650f4e012,
|
|
0x8cae14cb07d09bf1,
|
|
0xd438539c95f63e9f,
|
|
0xef781c7ce35b4c3d,
|
|
0xcdc4a239b0c44426,
|
|
0x277fa208bf337bff,
|
|
0xe17653a29da578a1,
|
|
0xc54302f225db2c76,
|
|
0xac6c9c2b4418dd61,
|
|
0xe0888eb1e8a01286,
|
|
0x813dbe952b98904e,
|
|
0xcc3033609c9cf175,
|
|
0x72cebc82a59c0f82,
|
|
0x8150d8525753e741,
|
|
0xb1122c74b268d66e,
|
|
0x7c6ddd482375aa2,
|
|
0xa4dd6f1ef49fb6af,
|
|
0xd33b0d5b4f7ccfe5,
|
|
0xc523112247209124,
|
|
0x464804200134c32d,
|
|
0xcd09dea180de4f2c,
|
|
0xadb069225c93e4e6,
|
|
0xbf01209b8a7c8534,
|
|
0xb1eb37d319913823,
|
|
0xdadf943b8d3e5a0d,
|
|
0x6d15f3cb7a3520ba,
|
|
0xf07af62b134ef181,
|
|
0x568355076c6b0de6,
|
|
0x31ca4bf93cab68b8,
|
|
0xfbad37a125735ba,
|
|
0x9d3a9caaf1ac9e0a,
|
|
0x4f265810f020c095,
|
|
0x6a84c9524e81a8bc,
|
|
0x68ba410537925c79,
|
|
0x422604631b34b07a,
|
|
0x28e3a001f62f8290,
|
|
0x3adfdccb8f734d41,
|
|
0x73503e539baec66a,
|
|
0xe8c1fd0142d9849c,
|
|
0xe204ac13660546c5,
|
|
0x8e2bb3ea97a40c53,
|
|
0xac2800d1bf56548c,
|
|
0x9494dca005d180d0,
|
|
0xf36e1d066383ef53,
|
|
0x8aa35b97a0e03c04,
|
|
0xcf42a59addbd1f0c,
|
|
0xa43ace89f8fdbd79,
|
|
0x37585d8c243870c,
|
|
0x4ab94ee3e26596fe,
|
|
0xcee3abbb50d57b23,
|
|
0xac91a7101a5ec55b,
|
|
0x9173aa8462280d2d,
|
|
0xaec1ca46ccb95105,
|
|
0x57b2f2845db61e4a,
|
|
0x95704158500c90c6,
|
|
0x66e023b0e6c9df5f,
|
|
0x315f63f4fec360ba,
|
|
0xf3009795713abcf1,
|
|
0xf4decc3fb00765ee,
|
|
0x32620ac918682d50,
|
|
0x49717d63a5fc742e,
|
|
0x153516f22014ea2d,
|
|
0xcc316380a2761fe4,
|
|
0x2e49b3f7076d203d,
|
|
0x44ac3e9bf0a2dc89,
|
|
0x49d1e388d8e35c,
|
|
0x53ec867cb39989fa,
|
|
0xd2c9bcc8d65f5a62,
|
|
0xc0cc930ee8540455,
|
|
0x40651e0872505e8,
|
|
0x168973b2ebafbe6c,
|
|
0x9c7eecb3b40581c2,
|
|
0x389473bcdfca97a2,
|
|
0xb1cb0b3abe9753ad,
|
|
0x41afceccffdb18e6,
|
|
0x7bf841e237ccd6c9,
|
|
0x6082a3f101fb888,
|
|
0x8c1a39196f4163cc,
|
|
0xb56664760c1c9476,
|
|
0x2a02ac020d1eb5a3,
|
|
0x6a9d48e8aa83605d,
|
|
0x8a0d2f5c4c9c51b2,
|
|
0x75fc65575b284ad4,
|
|
0xadaedf7d1ce2a8dd,
|
|
0x235bc889cc83968e,
|
|
0xa8c30cf1781738f5,
|
|
0x546b2a846753bcf8,
|
|
0x9b68e8c06c04bd25,
|
|
0x3fdf80794ebb443b,
|
|
0x92ca132a9bec5a45,
|
|
0x76133eecfd9bd1ff,
|
|
0x3fb0fd5381054812,
|
|
0xf15925978dbd52ff,
|
|
0x2ee289ac37f0e879,
|
|
0xd8af8654e9a2e659,
|
|
0x8595bbd7f34c5e8a,
|
|
0x206ddbf781e47b2,
|
|
0xe101a767854a2f97,
|
|
0xf4d4f0a01072c996,
|
|
0x197aec2894aab642,
|
|
0x8d0c3911220db49b,
|
|
0xa62a8bad609227ca,
|
|
0x1e4813a7e7b9cbce,
|
|
0x6b547528731244eb,
|
|
0xd08e48512bfea84e,
|
|
0xb2920c88d3885857,
|
|
0x1f0cd5d7a309fcc2,
|
|
0x99a0ea0842fdb4fb,
|
|
0xc227210554b6c53d,
|
|
0x70e5269708f6f3a9,
|
|
0xbe8f71c8c98bb3bd,
|
|
0xf96fb39adc4baaf6,
|
|
0x7f9a7555c60fc6c7,
|
|
0xccaa5446d71fe6a5,
|
|
}
|
|
|
|
p = [][]uint64{
|
|
{
|
|
0x19,
|
|
0x78566230aa7cc5d0,
|
|
0xdbf23e50005e7f24,
|
|
0xb4a02c5c826d523e,
|
|
0x466d8f66a8f9fed5,
|
|
0x68da2264f65ec3e,
|
|
0xb59f9ff0ac6d5d78,
|
|
0xcfb03c902d447551,
|
|
0x2044ce14eaf8f5d9,
|
|
0xfb9373c8481e0f0d,
|
|
0x72af70cdcb99214f,
|
|
0xe3ef40eacc6ff78d,
|
|
},
|
|
{
|
|
0xf,
|
|
0x817bd8a7869ed1b5,
|
|
0x819f2c14a8366b1f,
|
|
0x7a5cf5b7b922e946,
|
|
0x727eca45c8d7bb71,
|
|
0x605a82c52b5ad2f1,
|
|
0x59ccc4d5184bc93a,
|
|
0x66c8bab2096cfd38,
|
|
0xeb4c0ce280c3e935,
|
|
0x17f9202c16676b2f,
|
|
0x9b6e5164ed35d878,
|
|
0x6fadc9347faeee81,
|
|
},
|
|
{
|
|
0x29,
|
|
0xd267254bea1097f4,
|
|
0x2dc10fce3233f443,
|
|
0xfa9db0de2d852e7a,
|
|
0xde2a0516f8c9d943,
|
|
0xe6fdf23648931b99,
|
|
0x3743057c07a5dbfa,
|
|
0xa6fdb8ebccc51667,
|
|
0x2c4916605e3dea58,
|
|
0xe95c10ae32e05085,
|
|
0x97f9b7d2cfc2ade5,
|
|
0x9b6e5164ed35d878,
|
|
},
|
|
{
|
|
0x10,
|
|
0x60c33ebd1e023f0a,
|
|
0xdb6945a20d277091,
|
|
0x383dd77e07998487,
|
|
0xe04ea1957ad8305c,
|
|
0xd499fcbf63fbd266,
|
|
0x462269e4b04620a5,
|
|
0x63c9679d8572a867,
|
|
0x81c44e9699915693,
|
|
0x62ecbe05e02433fc,
|
|
0xe95c10ae32e05085,
|
|
0x17f9202c16676b2f,
|
|
},
|
|
{
|
|
0x2,
|
|
0xa89ef32ae1462322,
|
|
0x77c1a153e73659e8,
|
|
0x2aec981be4b62ed5,
|
|
0xb70fb5f2b4f1f85f,
|
|
0x7c66d474cd2087cb,
|
|
0x39302966be7df654,
|
|
0xb827c807875511c0,
|
|
0xa4daffb3ffd0e78f,
|
|
0x81c44e9699915693,
|
|
0x2c4916605e3dea58,
|
|
0xeb4c0ce280c3e935,
|
|
},
|
|
{
|
|
0x1c,
|
|
0x6250f5f176d483e7,
|
|
0xaad1255d46e78f07,
|
|
0x8a00c7c83c762584,
|
|
0xc734f3829ed30b0c,
|
|
0xb1a0132288b1619b,
|
|
0x88685b4f0798dfd1,
|
|
0xfc02e869e21b72f8,
|
|
0xb827c807875511c0,
|
|
0x63c9679d8572a867,
|
|
0xa6fdb8ebccc51667,
|
|
0x66c8bab2096cfd38,
|
|
},
|
|
{
|
|
0xd,
|
|
0xe16a6c1dee3ba347,
|
|
0x13d316e45539aef4,
|
|
0x577e0472764f061d,
|
|
0x226a4dcf5db3316d,
|
|
0x3373035a3ca3dac6,
|
|
0x441f3a3747b5adb7,
|
|
0x88685b4f0798dfd1,
|
|
0x39302966be7df654,
|
|
0x462269e4b04620a5,
|
|
0x3743057c07a5dbfa,
|
|
0x59ccc4d5184bc93a,
|
|
},
|
|
{
|
|
0xd,
|
|
0xec9730136b7c2c05,
|
|
0xe1ecc5c21eec0646,
|
|
0x956d3c8b5528e064,
|
|
0x6df1d31fa84398f4,
|
|
0xf4898a1a3554ee49,
|
|
0x3373035a3ca3dac6,
|
|
0xb1a0132288b1619b,
|
|
0x7c66d474cd2087cb,
|
|
0xd499fcbf63fbd266,
|
|
0xe6fdf23648931b99,
|
|
0x605a82c52b5ad2f1,
|
|
},
|
|
{
|
|
0x27,
|
|
0x3cf7c3a39d94c236,
|
|
0x9e62c7d7b000cb0b,
|
|
0xe202be7ad7265af6,
|
|
0x82178371fa5fff69,
|
|
0x6df1d31fa84398f4,
|
|
0x226a4dcf5db3316d,
|
|
0xc734f3829ed30b0c,
|
|
0xb70fb5f2b4f1f85f,
|
|
0xe04ea1957ad8305c,
|
|
0xde2a0516f8c9d943,
|
|
0x727eca45c8d7bb71,
|
|
},
|
|
{
|
|
0x12,
|
|
0xb4707207455f57e3,
|
|
0x8e1de42b665c6706,
|
|
0xee7b04568203481,
|
|
0xe202be7ad7265af6,
|
|
0x956d3c8b5528e064,
|
|
0x577e0472764f061d,
|
|
0x8a00c7c83c762584,
|
|
0x2aec981be4b62ed5,
|
|
0x383dd77e07998487,
|
|
0xfa9db0de2d852e7a,
|
|
0x7a5cf5b7b922e946,
|
|
},
|
|
{
|
|
0x22,
|
|
0xaadb39e83e76a9e0,
|
|
0xcd9bf0bd292c5fda,
|
|
0x8e1de42b665c6706,
|
|
0x9e62c7d7b000cb0b,
|
|
0xe1ecc5c21eec0646,
|
|
0x13d316e45539aef4,
|
|
0xaad1255d46e78f07,
|
|
0x77c1a153e73659e8,
|
|
0xdb6945a20d277091,
|
|
0x2dc10fce3233f443,
|
|
0x819f2c14a8366b1f,
|
|
},
|
|
{
|
|
0x14,
|
|
0x32f8ae916e567d39,
|
|
0xaadb39e83e76a9e0,
|
|
0xb4707207455f57e3,
|
|
0x3cf7c3a39d94c236,
|
|
0xec9730136b7c2c05,
|
|
0xe16a6c1dee3ba347,
|
|
0x6250f5f176d483e7,
|
|
0xa89ef32ae1462322,
|
|
0x60c33ebd1e023f0a,
|
|
0xd267254bea1097f4,
|
|
0x817bd8a7869ed1b5,
|
|
},
|
|
}
|
|
|
|
s = []uint64{
|
|
0x19,
|
|
0x3d999c961b7c63b0,
|
|
0x814e82efcd172529,
|
|
0x2421e5d236704588,
|
|
0x887af7d4dd482328,
|
|
0xa5e9c291f6119b27,
|
|
0xbdc52b2676a4b4aa,
|
|
0x64832009d29bcf57,
|
|
0x9c4155174a552cc,
|
|
0x463f9ee03d290810,
|
|
0xc810936e64982542,
|
|
0x43b1c289f7bc3ac,
|
|
0x94877900674181c3,
|
|
0xc6c67cc37a2a2bbd,
|
|
0xd667c2055387940f,
|
|
0xba63a63e94b5ff0,
|
|
0x99460cc41b8f079f,
|
|
0x7ff02375ed524bb3,
|
|
0xea0870b47a8caf0e,
|
|
0xabcad82633b7bc9d,
|
|
0x3b8d135261052241,
|
|
0xfb4515f5e5b0d539,
|
|
0x3ee8011c2b37f77c,
|
|
0x19,
|
|
0x673655aae8be5a8b,
|
|
0xd510fe714f39fa10,
|
|
0x2c68a099b51c9e73,
|
|
0xa667bfa9aa96999d,
|
|
0x4d67e72f063e2108,
|
|
0xf84dde3e6acda179,
|
|
0x40f9cc8c08f80981,
|
|
0x5ead032050097142,
|
|
0x6591b02092d671bb,
|
|
0xe18c71963dd1b7,
|
|
0x8a21bcd24a14218a,
|
|
0xadef3740e71c726,
|
|
0xa37bf67c6f986559,
|
|
0xc6b16f7ed4fa1b00,
|
|
0x6a065da88d8bfc3c,
|
|
0x4cabc0916844b46f,
|
|
0x407faac0f02e78d1,
|
|
0x7a786d9cf0852cf,
|
|
0x42433fb6949a629a,
|
|
0x891682a147ce43b0,
|
|
0x26cfd58e7b003b55,
|
|
0x2bbf0ed7b657acb3,
|
|
0x19,
|
|
0x202800f4addbdc87,
|
|
0xe4b5bdb1cc3504ff,
|
|
0xbe32b32a825596e7,
|
|
0x8e0f68c5dc223b9a,
|
|
0x58022d9e1c256ce3,
|
|
0x584d29227aa073ac,
|
|
0x8b9352ad04bef9e7,
|
|
0xaead42a3f445ecbf,
|
|
0x3c667a1d833a3cca,
|
|
0xda6f61838efa1ffe,
|
|
0xe8f749470bd7c446,
|
|
0x481ac7746b159c67,
|
|
0xe367de32f108e278,
|
|
0x73f260087ad28bec,
|
|
0x5cfc82216bc1bdca,
|
|
0xcaccc870a2663a0e,
|
|
0xdb69cd7b4298c45d,
|
|
0x7bc9e0c57243e62d,
|
|
0x3cc51c5d368693ae,
|
|
0x366b4e8cc068895b,
|
|
0x2bd18715cdabbca4,
|
|
0xa752061c4f33b8cf,
|
|
0x19,
|
|
0xc5b85bab9e5b3869,
|
|
0x45245258aec51cf7,
|
|
0x16e6b8e68b931830,
|
|
0xe2ae0f051418112c,
|
|
0x470e26a0093a65b,
|
|
0x6bef71973a8146ed,
|
|
0x119265be51812daf,
|
|
0xb0be7356254bea2e,
|
|
0x8584defff7589bd7,
|
|
0x3c5fe4aeb1fb52ba,
|
|
0x9e7cd88acf543a5e,
|
|
0xb22d2432b72d5098,
|
|
0x9e18a487f44d2fe4,
|
|
0x4b39e14ce22abd3c,
|
|
0x9e77fde2eb315e0d,
|
|
0xca5e0385fe67014d,
|
|
0xc2cb99bf1b6bddb,
|
|
0x99ec1cd2a4460bfe,
|
|
0x8577a815a2ff843f,
|
|
0x7d80a6b4fd6518a5,
|
|
0xeb6c67123eab62cb,
|
|
0x8f7851650eca21a5,
|
|
0x19,
|
|
0x179be4bba87f0a8c,
|
|
0xacf63d95d8887355,
|
|
0x6696670196b0074f,
|
|
0xd99ddf1fe75085f9,
|
|
0xc2597881fef0283b,
|
|
0xcf48395ee6c54f14,
|
|
0x15226a8e4cd8d3b6,
|
|
0xc053297389af5d3b,
|
|
0x2c08893f0d1580e2,
|
|
0xed3cbcff6fcc5ba,
|
|
0xc82f510ecf81f6d0,
|
|
0x11ba9a1b81718c2a,
|
|
0x9f7d798a3323410c,
|
|
0xa821855c8c1cf5e5,
|
|
0x535e8d6fac0031b2,
|
|
0x404e7c751b634320,
|
|
0xa729353f6e55d354,
|
|
0x4db97d92e58bb831,
|
|
0xb53926c27897bf7d,
|
|
0x965040d52fe115c5,
|
|
0x9565fa41ebd31fd7,
|
|
0xaae4438c877ea8f4,
|
|
0x19,
|
|
0x94b06183acb715cc,
|
|
0x500392ed0d431137,
|
|
0x861cc95ad5c86323,
|
|
0x5830a443f86c4ac,
|
|
0x3b68225874a20a7c,
|
|
0x10b3309838e236fb,
|
|
0x9b77fc8bcd559e2c,
|
|
0xbdecf5e0cb9cb213,
|
|
0x30276f1221ace5fa,
|
|
0x7935dd342764a144,
|
|
0xeac6db520bb03708,
|
|
0x37f4e36af6073c6e,
|
|
0x4edc0918210800e9,
|
|
0xc44998e99eae4188,
|
|
0x9f4310d05d068338,
|
|
0x9ec7fe4350680f29,
|
|
0xc5b2c1fdc0b50874,
|
|
0xa01920c5ef8b2ebe,
|
|
0x59fa6f8bd91d58ba,
|
|
0x8bfc9eb89b515a82,
|
|
0xbe86a7a2555ae775,
|
|
0xcbb8bbaa3810babf,
|
|
0x19,
|
|
0x7186a80551025f8f,
|
|
0x622247557e9b5371,
|
|
0xc4cbe326d1ad9742,
|
|
0x55f1523ac6a23ea2,
|
|
0xa13dfe77a3d52f53,
|
|
0xe30750b6301c0452,
|
|
0x8bd488070a3a32b,
|
|
0xcd800caef5b72ae3,
|
|
0x83329c90f04233ce,
|
|
0xb5b99e6664a0a3ee,
|
|
0x6b0731849e200a7f,
|
|
0x577f9a9e7ee3f9c2,
|
|
0x88c522b949ace7b1,
|
|
0x82f07007c8b72106,
|
|
0x8283d37c6675b50e,
|
|
0x98b074d9bbac1123,
|
|
0x75c56fb7758317c1,
|
|
0xfed24e206052bc72,
|
|
0x26d7c3d1bc07dae5,
|
|
0xf88c5e441e28dbb4,
|
|
0x4fe27f9f96615270,
|
|
0x514d4ba49c2b14fe,
|
|
0x19,
|
|
0xec3fabc192b01799,
|
|
0x382b38cee8ee5375,
|
|
0x3bfb6c3f0e616572,
|
|
0x514abd0cf6c7bc86,
|
|
0x47521b1361dcc546,
|
|
0x178093843f863d14,
|
|
0xad1003c5d28918e7,
|
|
0x738450e42495bc81,
|
|
0xaf947c59af5e4047,
|
|
0x4653fb0685084ef2,
|
|
0x57fde2062ae35bf,
|
|
0xf02a3ac068ee110b,
|
|
0xa3630dafb8ae2d7,
|
|
0xce0dc874eaf9b55c,
|
|
0x9a95f6cff5b55c7e,
|
|
0x626d76abfed00c7b,
|
|
0xa0c1cf1251c204ad,
|
|
0xdaebd3006321052c,
|
|
0x3d4bd48b625a8065,
|
|
0x7f1e584e071f6ed2,
|
|
0x720574f0501caed3,
|
|
0xe3260ba93d23540a,
|
|
0x19,
|
|
0xe376678d843ce55e,
|
|
0x66f3860d7514e7fc,
|
|
0x7817f3dfff8b4ffa,
|
|
0x3929624a9def725b,
|
|
0x126ca37f215a80a,
|
|
0xfce2f5d02762a303,
|
|
0x1bc927375febbad7,
|
|
0x85b481e5243f60bf,
|
|
0x2d3c5f42a39c91a0,
|
|
0x811719919351ae8,
|
|
0xf669de0add993131,
|
|
0xab1cbd41d8c1e335,
|
|
0x9322ed4c0bc2df01,
|
|
0x51c3c0983d4284e5,
|
|
0x94178e291145c231,
|
|
0xfd0f1a973d6b2085,
|
|
0xd427ad96e2b39719,
|
|
0x8a52437fecaac06b,
|
|
0xdc20ee4b8c4c9a80,
|
|
0xa2c98e9549da2100,
|
|
0x1603fe12613db5b6,
|
|
0xe174929433c5505,
|
|
0x19,
|
|
0x7de38bae084da92d,
|
|
0x5b848442237e8a9b,
|
|
0xf6c705da84d57310,
|
|
0x31e6a4bdb6a49017,
|
|
0x889489706e5c5c0f,
|
|
0xe4a205459692a1b,
|
|
0xbac3fa75ee26f299,
|
|
0x5f5894f4057d755e,
|
|
0xb0dc3ecd724bb076,
|
|
0x5e34d8554a6452ba,
|
|
0x4f78fd8c1fdcc5f,
|
|
0x3d4eab2b8ef5f796,
|
|
0xcfff421583896e22,
|
|
0x4143cb32d39ac3d9,
|
|
0x22365051b78a5b65,
|
|
0x6f7fd010d027c9b6,
|
|
0xd9dd36fba77522ab,
|
|
0xa44cf1cb33e37165,
|
|
0x3fc83d3038c86417,
|
|
0xc4588d418e88d270,
|
|
0xce1320f10ab80fe2,
|
|
0xdb5eadbbec18de5d,
|
|
0x19,
|
|
0x4dd19c38779512ea,
|
|
0xdb79ba02704620e9,
|
|
0x92a29a3675a5d2be,
|
|
0xd5177029fe495166,
|
|
0xd32b3298a13330c1,
|
|
0x251c4a3eb2c5f8fd,
|
|
0xe1c48b26e0d98825,
|
|
0x3301d3362a4ffccb,
|
|
0x9bb6c88de8cd178,
|
|
0xdc05b676564f538a,
|
|
0x60192d883e473fee,
|
|
0x1183dfce7c454afd,
|
|
0x21cea4aa3d3ed949,
|
|
0xfce6f70303f2304,
|
|
0x19557d34b55551be,
|
|
0x4c56f689afc5bbc9,
|
|
0xa1e920844334f944,
|
|
0xbad66d423d2ec861,
|
|
0xf318c785dc9e0479,
|
|
0x99e2032e765ddd81,
|
|
0x400ccc9906d66f45,
|
|
0xe1197454db2e0dd9,
|
|
0x19,
|
|
0x16b9774801ac44a0,
|
|
0x3cb8411e786d3c8e,
|
|
0xa86e9cf505072491,
|
|
0x178928152e109ae,
|
|
0x5317b905a6e1ab7b,
|
|
0xda20b3be7f53d59f,
|
|
0xcb97dedecebee9ad,
|
|
0x4bd545218c59f58d,
|
|
0x77dc8d856c05a44a,
|
|
0x87948589e4f243fd,
|
|
0x7e5217af969952c2,
|
|
0x84d1ecc4d53d2ff1,
|
|
0xd8af8b9ceb4e11b6,
|
|
0x335856bb527b52f4,
|
|
0xc756f17fb59be595,
|
|
0xc0654e4ea5553a78,
|
|
0x9e9a46b61f2ea942,
|
|
0x14fc8b5b3b809127,
|
|
0xd7009f0f103be413,
|
|
0x3e0ee7b7a9fb4601,
|
|
0xa74e888922085ed7,
|
|
0xe80a7cde3d4ac526,
|
|
0x19,
|
|
0xbc58987d06a84e4d,
|
|
0xb5d420244c9cae3,
|
|
0xa3c4711b938c02c0,
|
|
0x3aace640a3e03990,
|
|
0x865a0f3249aacd8a,
|
|
0x8d00b2a7dbed06c7,
|
|
0x6eacb905beb7e2f8,
|
|
0x45322b216ec3ec7,
|
|
0xeb9de00d594828e6,
|
|
0x88c5f20df9e5c26,
|
|
0xf555f4112b19781f,
|
|
0x238aa6daa612186d,
|
|
0x9137a5c630bad4b4,
|
|
0xc7db3817870c5eda,
|
|
0x217e4f04e5718dc9,
|
|
0xcae814e2817bd99d,
|
|
0xe3292e7ab770a8ba,
|
|
0x7bb36ef70b6b9482,
|
|
0x3c7835fb85bca2d3,
|
|
0xfe2cdf8ee3c25e86,
|
|
0x61b3915ad7274b20,
|
|
0xeab75ca7c918e4ef,
|
|
0x19,
|
|
0xa8cedbff1813d3a7,
|
|
0x50dcaee0fd27d164,
|
|
0xf1cb02417e23bd82,
|
|
0xfaf322786e2abe8b,
|
|
0x937a4315beb5d9b6,
|
|
0x1b18992921a11d85,
|
|
0x7d66c4368b3c497b,
|
|
0xe7946317a6b4e99,
|
|
0xbe4430134182978b,
|
|
0x3771e82493ab262d,
|
|
0xa671690d8095ce82,
|
|
0xd6e15ffc055e154e,
|
|
0xec67881f381a32bf,
|
|
0xfbb1196092bf409c,
|
|
0xdc9d2e07830ba226,
|
|
0x698ef3245ff7988,
|
|
0x194fae2974f8b576,
|
|
0x7a5d9bea6ca4910e,
|
|
0x7aebfea95ccdd1c9,
|
|
0xf9bd38a67d5f0e86,
|
|
0xfa65539de65492d8,
|
|
0xf0dfcbe7653ff787,
|
|
0x19,
|
|
0xb035585f6e929d9d,
|
|
0xba1579c7e219b954,
|
|
0xcb201cf846db4ba3,
|
|
0x287bf9177372cf45,
|
|
0xa350e4f61147d0a6,
|
|
0xd5d0ecfb50bcff99,
|
|
0x2e166aa6c776ed21,
|
|
0xe1e66c991990e282,
|
|
0x662b329b01e7bb38,
|
|
0x8aa674b36144d9a9,
|
|
0xcbabf78f97f95e65,
|
|
0xbd87ad390420258,
|
|
0xad8617bca9e33c8,
|
|
0xc00ad377a1e2666,
|
|
0xac6fc58b3f0518f,
|
|
0xc0cc8a892cc4173,
|
|
0xc210accb117bc21,
|
|
0xb73630dbb46ca18,
|
|
0xc8be4920cbd4a54,
|
|
0xbfe877a21be1690,
|
|
0xae790559b0ded81,
|
|
0xbf50db2f8d6ce31,
|
|
0x19,
|
|
0xeec24b15a06b53fe,
|
|
0xc8a7aa07c5633533,
|
|
0xefe9c6fa4311ad51,
|
|
0xb9173f13977109a1,
|
|
0x69ce43c9cc94aedc,
|
|
0xecf623c9cd118815,
|
|
0x28625def198c33c7,
|
|
0xccfc5f7de5c3636a,
|
|
0xf5e6c40f1621c299,
|
|
0xcec0e58c34cb64b1,
|
|
0xa868ea113387939f,
|
|
0xcf29427ff7c58,
|
|
0xbd9b3cf49eec8,
|
|
0xd1dc8aa81fb26,
|
|
0xbc792d5c394ef,
|
|
0xd2ae0b2266453,
|
|
0xd413f12c496c1,
|
|
0xc84128cfed618,
|
|
0xdb5ebd48fc0d4,
|
|
0xd1b77326dcb90,
|
|
0xbeb0ccc145421,
|
|
0xd10e5b22b11d1,
|
|
0x19,
|
|
0xd8dddbdc5ce4ef45,
|
|
0xacfc51de8131458c,
|
|
0x146bb3c0fe499ac0,
|
|
0x9e65309f15943903,
|
|
0x80d0ad980773aa70,
|
|
0xf97817d4ddbf0607,
|
|
0xe4626620a75ba276,
|
|
0xdfdc7fd6fc74f66,
|
|
0xf464864ad6f2bb93,
|
|
0x2d55e52a5d44414,
|
|
0xdd8de62487c40925,
|
|
0xe24c99adad8,
|
|
0xcf389ed4bc8,
|
|
0xe580cbf6966,
|
|
0xcde5fd7e04f,
|
|
0xe63628041b3,
|
|
0xe7e81a87361,
|
|
0xdabe78f6d98,
|
|
0xefb14cac554,
|
|
0xe5574743b10,
|
|
0xd05709f42c1,
|
|
0xe4690c96af1,
|
|
0x19,
|
|
0xc15acf44759545a3,
|
|
0xcbfdcf39869719d4,
|
|
0x33f62042e2f80225,
|
|
0x2599c5ead81d8fa3,
|
|
0xb306cb6c1d7c8d0,
|
|
0x658c80d3df3729b1,
|
|
0xe8d1b2b21b41429c,
|
|
0xa1b67f09d4b3ccb8,
|
|
0xe1adf8b84437180,
|
|
0xd593a5e584af47b,
|
|
0xa023d94c56e151c7,
|
|
0xf7157bc98,
|
|
0xe3006d948,
|
|
0xfa65811e6,
|
|
0xe0d127e2f,
|
|
0xfc18bfe53,
|
|
0xfd002d901,
|
|
0xeed6461d8,
|
|
0x1068562754,
|
|
0xfa0236f50,
|
|
0xe3af13ee1,
|
|
0xfa460f6d1,
|
|
0x19,
|
|
0x49026cc3a4afc5a6,
|
|
0xe06dff00ab25b91b,
|
|
0xab38c561e8850ff,
|
|
0x92c3c8275e105eeb,
|
|
0xb65256e546889bd0,
|
|
0x3c0468236ea142f6,
|
|
0xee61766b889e18f2,
|
|
0xa206f41b12c30415,
|
|
0x2fe9d756c9f12d1,
|
|
0xe9633210630cbf12,
|
|
0x1ffea9fe85a0b0b1,
|
|
0x11131738,
|
|
0xf56d588,
|
|
0x11050f86,
|
|
0xf848f4f,
|
|
0x111527d3,
|
|
0x114369a1,
|
|
0x106f2f38,
|
|
0x11e2ca94,
|
|
0x110a29f0,
|
|
0xfa9f5c1,
|
|
0x10f625d1,
|
|
0x19,
|
|
0x81d1ae8cc50240f3,
|
|
0xf4c77a079a4607d7,
|
|
0xed446b2315e3efc1,
|
|
0xb0a6b70915178c3,
|
|
0xb11ff3e089f15d9a,
|
|
0x1d4dba0b7ae9cc18,
|
|
0x65d74e2f43b48d05,
|
|
0xa2df8c6b8ae0804a,
|
|
0xa4e6f0a8c33348a6,
|
|
0xc0a26efc7be5669b,
|
|
0xa6b6582c547d0d60,
|
|
0x11f718,
|
|
0x10b6c8,
|
|
0x134a96,
|
|
0x10cf7f,
|
|
0x124d03,
|
|
0x13f8a1,
|
|
0x117c58,
|
|
0x132c94,
|
|
0x134fc0,
|
|
0x10a091,
|
|
0x128961,
|
|
0x19,
|
|
0x84afc741f1c13213,
|
|
0x2f8f43734fc906f3,
|
|
0xde682d72da0a02d9,
|
|
0xbb005236adb9ef2,
|
|
0x5bdf35c10a8b5624,
|
|
0x739a8a343950010,
|
|
0x52f515f44785cfbc,
|
|
0xcbaf4e5d82856c60,
|
|
0xac9ea09074e3e150,
|
|
0x8f0fa011a2035fb0,
|
|
0x1a37905d8450904a,
|
|
0x1300,
|
|
0x1750,
|
|
0x114e,
|
|
0x131f,
|
|
0x167b,
|
|
0x1371,
|
|
0x1230,
|
|
0x182c,
|
|
0x1368,
|
|
0xf31,
|
|
0x15c9,
|
|
0x19,
|
|
0x3abeb80def61cc85,
|
|
0x9d19c9dd4eac4133,
|
|
0x75a652d9641a985,
|
|
0x9daf69ae1b67e667,
|
|
0x364f71da77920a18,
|
|
0x50bd769f745c95b1,
|
|
0xf223d1180dbbf3fc,
|
|
0x2f885e584e04aa99,
|
|
0xb69a0fa70aea684a,
|
|
0x9584acaa6e062a0,
|
|
0xbc051640145b19b,
|
|
0x14,
|
|
0x22,
|
|
0x12,
|
|
0x27,
|
|
0xd,
|
|
0xd,
|
|
0x1c,
|
|
0x2,
|
|
0x10,
|
|
0x29,
|
|
0xf,
|
|
}
|
|
|
|
// C is a constant array of element
|
|
C []*ffg.Element
|
|
// COpt is a constant array of element
|
|
COpt []*ffg.Element
|
|
// M is a matrix
|
|
M [][]*ffg.Element
|
|
// P is a matrix
|
|
P [][]*ffg.Element
|
|
// S is a array of element
|
|
S []*ffg.Element
|
|
)
|
|
|
|
func init() {
|
|
for i := 0; i < len(c); i++ {
|
|
C = append(C, ffg.NewElementFromUint64(c[i]))
|
|
}
|
|
|
|
for i := 0; i < len(cOpt); i++ {
|
|
COpt = append(COpt, ffg.NewElementFromUint64(cOpt[i]))
|
|
}
|
|
|
|
for i := 0; i < len(s); i++ {
|
|
S = append(S, ffg.NewElementFromUint64(s[i]))
|
|
}
|
|
|
|
for i := 0; i < mLen; i++ {
|
|
var (
|
|
mRow []*ffg.Element
|
|
pRow []*ffg.Element
|
|
)
|
|
for j := 0; j < mLen; j++ {
|
|
ele := ffg.NewElementFromUint64(mcirc[(i-j+mLen)%mLen])
|
|
if i == j {
|
|
ele = ffg.NewElementFromUint64(mcirc[0] + mdiag[i])
|
|
}
|
|
mRow = append(mRow, ele)
|
|
pRow = append(pRow, ffg.NewElementFromUint64(p[i][j]))
|
|
}
|
|
M = append(M, mRow)
|
|
P = append(P, pRow)
|
|
}
|
|
}
|