initial version of SQIsign

Co-authored-by: Jorge Chavez-Saab <jorgechavezsaab@gmail.com>
Co-authored-by: Maria Corte-Real Santos <36373796+mariascrs@users.noreply.github.com>
Co-authored-by: Luca De Feo <github@defeo.lu>
Co-authored-by: Jonathan Komada Eriksen <jonathan.eriksen97@gmail.com>
Co-authored-by: Basil Hess <bhe@zurich.ibm.com>
Co-authored-by: Antonin Leroux <18654258+tonioecto@users.noreply.github.com>
Co-authored-by: Patrick Longa <plonga@microsoft.com>
Co-authored-by: Lorenz Panny <lorenz@yx7.cc>
Co-authored-by: Francisco Rodríguez-Henríquez <francisco.rodriguez@tii.ae>
Co-authored-by: Sina Schaeffler <108983332+syndrakon@users.noreply.github.com>
Co-authored-by: Benjamin Wesolowski <19474926+Calodeon@users.noreply.github.com>
This commit is contained in:
SQIsign team
2023-06-01 00:00:00 +00:00
committed by Lorenz Panny
commit 28ff420dd0
285 changed files with 70301 additions and 0 deletions

View File

@@ -0,0 +1 @@
include(${SELECT_IMPL_TYPE})

View File

@@ -0,0 +1,4 @@
add_custom_target(precomp)
set_target_properties(precomp PROPERTIES EXCLUDE_FROM_ALL TRUE)
include(${SELECT_SQISIGN_VARIANT})

View File

@@ -0,0 +1,49 @@
set(SOURCE_FILES_PRECOMP_${SVARIANT_UPPER}_REF
torsion_constants.c
quaternion_data.c
endomorphism_action.c
klpt_constants.c
)
add_library(${LIB_PRECOMP_${SVARIANT_UPPER}} ${SOURCE_FILES_PRECOMP_${SVARIANT_UPPER}_REF})
target_include_directories(${LIB_PRECOMP_${SVARIANT_UPPER}} PRIVATE common ${INC_INTBIG} ${INC_QUATERNION} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src/ec/ref/include ${PROJECT_SOURCE_DIR}/src/ec/ref/${SVARIANT_LOWER}/include ${PROJECT_SOURCE_DIR}/src/gf/ref/${SVARIANT_LOWER}/include ${INC_PRECOMP_${SVARIANT_UPPER}} ${INC_COMMON})
target_compile_options(${LIB_PRECOMP_${SVARIANT_UPPER}} PRIVATE ${C_OPT_FLAGS})
add_custom_command(
OUTPUT
"${CMAKE_CURRENT_SOURCE_DIR}/torsion_constants.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/torsion_constants.h"
"${CMAKE_CURRENT_SOURCE_DIR}/include/klpt_constants.h"
"${CMAKE_CURRENT_SOURCE_DIR}/klpt_constants.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/encoded_sizes.h"
"${PROJECT_SOURCE_DIR}/src/nistapi/lvl1/api.h"
"${CMAKE_CURRENT_SOURCE_DIR}/quaternion_data.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/quaternion_data.h"
"${CMAKE_CURRENT_SOURCE_DIR}/endomorphism_action.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/endomorphism_action.h"
COMMAND
echo "Please run manually: make precomp"
)
find_program(SAGEMATH sage)
add_custom_target(precomp_${SVARIANT_LOWER}
DEPENDS
"./sqisign_parameters.txt"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_torsion_constants.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_klpt_constants.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_sizes.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_quaternion_data.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_endomorphism_action.sage"
WORKING_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}"
)
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
set_target_properties(precomp_${SVARIANT_LOWER} PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(precomp precomp_lvl1)

View File

@@ -0,0 +1,56 @@
#include <stddef.h>
#include <stdint.h>
#include <endomorphism_action.h>
#if 0
#elif 8*DIGIT_LEN == 16
const ec_basis_t BASIS_EVEN = {{{{0xaa6456e57b3d0e5c, 0x6e1e74cfc06d9529, 0xe77005c1d8e998d9, 0x207aef3d73fb9e71}, {0x918dbc45635410cb, 0x6ee588ba09396573, 0x68aa64be61e6f4c4, 0x16e37aee06350f3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xc71dcbb1e0f986f5, 0xbd60f6c8d8c31906, 0x753a060121887848, 0x2104aa23e92066b1}, {0x187b3ab8b007ee01, 0xa0cfdf9999fd088e, 0x1dbb43376c18e129, 0x1be43892abe83cab}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x5f063c05ab333c4b, 0x9432317b20a4a9dd, 0x3d246e5d9e99e169, 0x112c26ed94c42aea}, {0xf650f44ad5ca0053, 0xbe39aa3b866de04d, 0x8eca3998d4b32c4d, 0x24e1dfdd264f7289}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0x9225eb7dc4964589, 0x84809bd2660ac787, 0x9b120b36af060f7b, 0x26c6e5fb8ba413a2}, {0xc3243c45368044cd, 0xf4c6c6136b0396e3, 0x36e7ca367bcda18e, 0x2b2ea4f64b8d9b4d}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x2e78d4ca270d7e6b, 0xf9ac7eaa9713ab55, 0x6b68d02784ce09b1, 0x33fe700247f21db9}, {0x72995ed7921505e9, 0x9af528d378e626ba, 0x319a09e659f3fbf, 0x14f7b599168ae1bb}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x1fc31ea8afacffa9, 0x2198ad06ba5f7c1e, 0x867ee910c84f9241, 0x22f0ae8a117bf50}, {0x7624b1b2a61cca63, 0x6de050872be1c855, 0xf26e2a76937d44db, 0x13e175482bc586c4}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x1821f9af01cc0789, 0x66b67297ef3013a7, 0xe2f055ae52632d3d, 0xdadc43eddf1c21b}, {0xd236109f47f870ac, 0xf229a667744c0266, 0xf9d93d6f01f921fa, 0x2c3b6b5594983796}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x3abe763db230770c, 0xe4f9d39d2c76dbde, 0x15233adf6bc96db0, 0x9e8670c2795523}, {0xd80ba0bdd941e6ea, 0x6ff5c7474a4a781e, 0x9f7a618e8469d0a2, 0x304a4540668f3eb3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xb4ac0084a2b43849, 0xf00f44c1e014f6b5, 0x1bd32f9f8e5196ea, 0x15f9e117c931dba}, {0x682ed40c9aba9b0c, 0x23ecbcd17bcf48bb, 0xa965b22a1497f9d3, 0xcc6dae3c8db528a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xb382773d0ee2c6c5, 0x79bf22b00e75b701, 0x3dad4448a15e78b8, 0x2eb8550cb8d850d7}, {0x3289f573f719e381, 0xbeed476da914eb33, 0x6842f12d33d945f8, 0x1198a19ef03352bd}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x2c70e2ff4f8ed280, 0xd57145fbbd907950, 0x1ddf917bc2cd217f, 0x645838fc77dbffc}, {0x964fa32cefd3fdeb, 0xd551d0d6d0d1947b, 0x557b59a0b5fe55fc, 0x26cdcead70200b29}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x1e1dfa89820375fa, 0xf99b7f5e9addf912, 0xb316e64530602ca4, 0x1f6c3e438538999f}, {0x15924ed1bb15198, 0x4b5e6672bbda95e3, 0x6145e2a98ca22c88, 0xfcfc3a246698c7c}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x1821f9af01cc0789, 0x66b67297ef3013a7, 0xe2f055ae52632d3d, 0xdadc43eddf1c21b}, {0xd236109f47f870ac, 0xf229a667744c0266, 0xf9d93d6f01f921fa, 0x2c3b6b5594983796}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x3abe763db230770c, 0xe4f9d39d2c76dbde, 0x15233adf6bc96db0, 0x9e8670c2795523}, {0xd80ba0bdd941e6ea, 0x6ff5c7474a4a781e, 0x9f7a618e8469d0a2, 0x304a4540668f3eb3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xb4ac0084a2b43849, 0xf00f44c1e014f6b5, 0x1bd32f9f8e5196ea, 0x15f9e117c931dba}, {0x682ed40c9aba9b0c, 0x23ecbcd17bcf48bb, 0xa965b22a1497f9d3, 0xcc6dae3c8db528a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0x94437da213f9a8b1, 0xaba06afd54324148, 0x88ae0c022485a5f0, 0x14c75d2e824d358c}, {0xf66dc2e267ccd26c, 0x4874947cabbe1286, 0x9d58768934cf0ac, 0x204e323f499fb9c7}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x6df59b590d8b49c3, 0x1a9d2f960b7a3739, 0xb07ddc58241945ff, 0x3484655e395cb341}, {0x304ad2e438e5e35d, 0x2dae483b5d058280, 0x6f8c329dfd772ab6, 0x3185a956086f9c3a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xc005575f13b6b2c2, 0xddf9a6915407672a, 0x2c9a775fc6672c13, 0x1e1cabf3a03e1a97}, {0x63582f61f3e388aa, 0xcb1e01ccb3f27f1d, 0xd2f07c8953154892, 0x31dfa2e1a8469e03}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x46a8,0x9057,0x86de,0xcba9,0xc982,0xce00,0x3e5,0xafe9,0x7503,0xb4f7,0x31d9,0x45f1,0xb772,0x4e23,0x3858,0xcfd8,0x4244,0xf58d,0x271b,0x3760,0x5e52,0x9b69,0xb03c,0x29df,0x6f76}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x6727,0x3496,0xa592,0xd124,0xb138,0x5406,0x1e37,0xb681,0x76ad,0xc6bb,0x3525,0x6e4f,0xd837,0x95a4,0x9c8e,0x7ab7,0x2da8,0x8205,0x4c09,0x3094,0x3570,0x4038,0x4a69,0x2a6d,0xcee0,0x2}}}}, {{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x3fa9,0x8525,0xf0a8,0x5add,0xedd1,0xbf8,0xc425,0xab51,0x3750,0x2506,0x4007,0x68,0x782a,0x50ad,0xac25,0x9d19,0x61a2,0x845b,0x6841,0x3bfe,0x18f1,0x7633,0x7ee4,0x8fe2,0x2e11,0x5}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xb958,0x6fa8,0x7921,0x3456,0xfe7d,0x2ee0,0xd079,0xa9ed,0x3802,0xb215,0xfbd7,0x2861,0xd953,0xec53,0xc535,0xdcd9,0x22ea,0x9a6c,0x7b8,0x3207,0x7ed8,0x88c4,0x5112,0xbcd6,0x8860,0xb}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x8354,0xab63,0x73ba,0x2683,0x8448,0x368b,0x2cd5,0xc866,0x2b98,0x9216,0x53,0x88ab,0x347b,0xb226,0xfa60,0x3176,0x6542,0x6238,0x1e2c,0xa818,0x32f4,0xaf7a,0x882d,0xd0e1,0x29ca,0x6}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x10cf,0xf3dd,0x6e4e,0xe4d9,0xded9,0xd202,0x9877,0x2a7d,0x622f,0x396a,0xa0ef,0x5d91,0x65aa,0x4bcc,0xc09e,0x6a38,0x1eed,0x73c8,0x2bad,0xd729,0x39c9,0xaf44,0xfe5b,0x426b,0x97df,0x4}}}}, {{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xfebf,0x9134,0xff6b,0xdcc8,0xc195,0xc004,0xcffc,0xdb6,0xe162,0xffcc,0x3ce8,0xa30f,0x3924,0x8354,0xfb23,0xd944,0x52f4,0x6855,0x8c09,0xeb48,0x7623,0xb14a,0x6d25,0x3a99,0xc7db,0x5}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x7cac,0x549c,0x8c45,0xd97c,0x43b7,0xc656,0xa789,0x9170,0x816d,0xd4f6,0x2d5d,0xe5a8,0x5c49,0x8851,0x32d,0x7b3b,0xffed,0x2dc0,0x10a8,0xc14f,0xaa35,0x74b3,0x7921,0x15d4,0xce0c,0x5}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xcf39,0x123e,0x7e70,0x506e,0xc931,0x1913,0x6a42,0xc5f,0x890e,0x46e0,0x8d25,0x8c50,0x50f6,0x2e4e,0x6efa,0xa17e,0xae62,0x868e,0x7a98,0x601,0x2d87,0xcf47,0xfed6,0x5274,0x9d7c,0x5}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xd40c,0x78cc,0xb84c,0x8d05,0xea7a,0x2f1b,0xb273,0x7369,0x9dd7,0x2ce8,0xfa0b,0xc55c,0x1662,0x5710,0xbdc5,0xc9b4,0x318c,0xd27a,0xd4d7,0x3665,0x49f,0x71e7,0xdf5c,0x79c7,0xde2d,0x7}}}}, {{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xf71c,0x75ce,0xa9e9,0xb3d9,0x1118,0xbf1a,0x6441,0x7cd5,0xc3a,0xd7fb,0x1ac0,0xc439,0xeef7,0x9f3b,0x4181,0x7f05,0x7aed,0x1582,0x5bd0,0x920d,0x9286,0x3b44,0x9aa4,0xc48f,0x8111,0x5}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x30c7,0xedc1,0x818f,0xaf91,0xfece,0xe3cd,0x6a1c,0x4d77,0x23f8,0x202c,0xa08c,0xe202,0x3fce,0xc29,0x8e94,0xb33,0xb6cd,0x96a,0xb43c,0x6365,0xafa3,0x54e6,0x278,0x9441,0x5a5a,0x6}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x46a8,0x9057,0x86de,0xcba9,0xc982,0xce00,0x3e5,0xafe9,0x7503,0xb4f7,0x31d9,0x45f1,0xb772,0x4e23,0x3858,0xcfd8,0x4244,0xf58d,0x271b,0x3760,0x5e52,0x9b69,0xb03c,0x29df,0x6f76}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x6727,0x3496,0xa592,0xd124,0xb138,0x5406,0x1e37,0xb681,0x76ad,0xc6bb,0x3525,0x6e4f,0xd837,0x95a4,0x9c8e,0x7ab7,0x2da8,0x8205,0x4c09,0x3094,0x3570,0x4038,0x4a69,0x2a6d,0xcee0,0x2}}}}, {{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x3fa9,0x8525,0xf0a8,0x5add,0xedd1,0xbf8,0xc425,0xab51,0x3750,0x2506,0x4007,0x68,0x782a,0x50ad,0xac25,0x9d19,0x61a2,0x845b,0x6841,0x3bfe,0x18f1,0x7633,0x7ee4,0x8fe2,0x2e11,0x5}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xb958,0x6fa8,0x7921,0x3456,0xfe7d,0x2ee0,0xd079,0xa9ed,0x3802,0xb215,0xfbd7,0x2861,0xd953,0xec53,0xc535,0xdcd9,0x22ea,0x9a6c,0x7b8,0x3207,0x7ed8,0x88c4,0x5112,0xbcd6,0x8860,0xb}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x64fe,0x9ddd,0x7d4c,0x7916,0x26e5,0x8246,0x985d,0x3c27,0xd04e,0xa386,0x1916,0xe74e,0xf5f6,0x8024,0x995c,0x80a7,0xd3c3,0x2be2,0x22a4,0x6fbc,0xc8a3,0x2571,0x9c35,0x7d60,0x4ca0,0x3}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0xbbfb,0x9439,0x9f0,0x5aff,0xc809,0x9304,0x5b57,0x707f,0xec6e,0x8012,0x6b0a,0xe5f0,0x9ef0,0x70b8,0x2e96,0xf278,0xa64a,0x7ae6,0xbbdb,0x3de,0x379d,0x77be,0xa462,0xb66c,0xb35f,0x3}}}}, {{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x1f34,0xb2d,0x780a,0x9bd3,0xbbb3,0x646f,0xb440,0x896f,0xe2dc,0xc5ef,0x5550,0x8e5,0xa10a,0x873c,0x526b,0x9188,0xce3,0xbe55,0x118f,0xc857,0xb61f,0xa5d5,0xf6ac,0xd898,0x76e1,0xb}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x9b02,0x6222,0x82b3,0x86e9,0xa11a,0x7a9b,0x3c01,0x1daf,0xdcb8,0xc385,0x149a,0x8705,0x9ace,0xba52,0x6431,0x2c0a,0x916c,0x6416,0xc30,0xf9ab,0x1486,0xfebc,0x6519,0x6955,0xab36,0x8}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x679d,0x91f,0x3f38,0xa837,0xc898,0x8afa,0x1f50,0x331b,0x9b0a,0x56f6,0xdd6b,0xfd51,0xf0dd,0x3462,0x3644,0x2718,0x9c9,0x8b44,0x54b6,0xb7b4,0x8558,0xf9ba,0x8012,0x9c95,0xcaa9,0x8}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x6a06,0x3c66,0xdc26,0x4682,0xd93d,0x15fe,0x4369,0xe6a0,0xa56e,0x49fa,0x13de,0x19d8,0xd394,0xc8c3,0x5da9,0x3b33,0xcb5e,0x3139,0x81d6,0xcfe6,0x70e4,0xcb0a,0xf055,0x303e,0xeb02,0x9}}}}, {{{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x7b8e,0xbae7,0xd4f4,0x59ec,0x88c,0xdf8d,0xb220,0x3e6a,0x861d,0x6bfd,0x8d60,0xe21c,0xf77b,0xcf9d,0xa0c0,0xbf82,0x3d76,0xac1,0xade8,0x4906,0x4943,0x1da2,0xcd52,0xe247,0xc088,0x2}}}, {{._mp_alloc = 0, ._mp_size = 26, ._mp_d = (mp_limb_t[]) {0x9864,0xf6e0,0xc0c7,0x57c8,0xff67,0x71e6,0xb50e,0x26bb,0x11fc,0x1016,0x5046,0x7101,0x9fe7,0x614,0xc74a,0x8599,0x5b66,0x4b5,0xda1e,0xb1b2,0x57d1,0x2a73,0x813c,0x4a20,0x2d2d,0x3}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x8}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0xa12e,0x6526,0xbcc1,0x5f91,0x18ef,0x4f6f,0x5206,0x73e4,0xe166,0x894b,0x63d0,0x3525,0xe0c3,0x5118,0x4d54,0xb2aa,0x12f2}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x255d,0x6cb1,0x39e6,0xeabd,0xf4f1,0x2b10,0xff77,0x8cc6,0x18d9,0xe0a9,0xade1,0x7274,0xec7c,0x8af5,0xde41,0xf859,0x8791}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x4550,0xc754,0xbb43,0xd9c9,0x1e09,0xf476,0x91c3,0x8f4f,0xae13,0x654d,0xc39b,0xbd46,0x5e10,0xbc3d,0xe06a,0x6ba6,0x32c4}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x5307,0xac34,0xc11e,0xde5,0x1e71,0x52c0,0x45fe,0xea6e,0x48d8,0xa5c4,0x4744,0xe26,0x47,0x7275,0x5965,0x8645,0xa46e}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0xf8fb,0x5ec5,0xdde5,0xed0c,0x7184,0x437d,0x1a51,0xe32f,0x673,0xa6f0,0x1916,0x8d28,0xac10,0x2e62,0xdf2c,0xccb2,0x2ce7}}}}};
#elif 8*DIGIT_LEN == 32
const ec_basis_t BASIS_EVEN = {{{{0xaa6456e57b3d0e5c, 0x6e1e74cfc06d9529, 0xe77005c1d8e998d9, 0x207aef3d73fb9e71}, {0x918dbc45635410cb, 0x6ee588ba09396573, 0x68aa64be61e6f4c4, 0x16e37aee06350f3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xc71dcbb1e0f986f5, 0xbd60f6c8d8c31906, 0x753a060121887848, 0x2104aa23e92066b1}, {0x187b3ab8b007ee01, 0xa0cfdf9999fd088e, 0x1dbb43376c18e129, 0x1be43892abe83cab}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x5f063c05ab333c4b, 0x9432317b20a4a9dd, 0x3d246e5d9e99e169, 0x112c26ed94c42aea}, {0xf650f44ad5ca0053, 0xbe39aa3b866de04d, 0x8eca3998d4b32c4d, 0x24e1dfdd264f7289}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0x9225eb7dc4964589, 0x84809bd2660ac787, 0x9b120b36af060f7b, 0x26c6e5fb8ba413a2}, {0xc3243c45368044cd, 0xf4c6c6136b0396e3, 0x36e7ca367bcda18e, 0x2b2ea4f64b8d9b4d}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x2e78d4ca270d7e6b, 0xf9ac7eaa9713ab55, 0x6b68d02784ce09b1, 0x33fe700247f21db9}, {0x72995ed7921505e9, 0x9af528d378e626ba, 0x319a09e659f3fbf, 0x14f7b599168ae1bb}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x1fc31ea8afacffa9, 0x2198ad06ba5f7c1e, 0x867ee910c84f9241, 0x22f0ae8a117bf50}, {0x7624b1b2a61cca63, 0x6de050872be1c855, 0xf26e2a76937d44db, 0x13e175482bc586c4}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x1821f9af01cc0789, 0x66b67297ef3013a7, 0xe2f055ae52632d3d, 0xdadc43eddf1c21b}, {0xd236109f47f870ac, 0xf229a667744c0266, 0xf9d93d6f01f921fa, 0x2c3b6b5594983796}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x3abe763db230770c, 0xe4f9d39d2c76dbde, 0x15233adf6bc96db0, 0x9e8670c2795523}, {0xd80ba0bdd941e6ea, 0x6ff5c7474a4a781e, 0x9f7a618e8469d0a2, 0x304a4540668f3eb3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xb4ac0084a2b43849, 0xf00f44c1e014f6b5, 0x1bd32f9f8e5196ea, 0x15f9e117c931dba}, {0x682ed40c9aba9b0c, 0x23ecbcd17bcf48bb, 0xa965b22a1497f9d3, 0xcc6dae3c8db528a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xb382773d0ee2c6c5, 0x79bf22b00e75b701, 0x3dad4448a15e78b8, 0x2eb8550cb8d850d7}, {0x3289f573f719e381, 0xbeed476da914eb33, 0x6842f12d33d945f8, 0x1198a19ef03352bd}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x2c70e2ff4f8ed280, 0xd57145fbbd907950, 0x1ddf917bc2cd217f, 0x645838fc77dbffc}, {0x964fa32cefd3fdeb, 0xd551d0d6d0d1947b, 0x557b59a0b5fe55fc, 0x26cdcead70200b29}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x1e1dfa89820375fa, 0xf99b7f5e9addf912, 0xb316e64530602ca4, 0x1f6c3e438538999f}, {0x15924ed1bb15198, 0x4b5e6672bbda95e3, 0x6145e2a98ca22c88, 0xfcfc3a246698c7c}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x1821f9af01cc0789, 0x66b67297ef3013a7, 0xe2f055ae52632d3d, 0xdadc43eddf1c21b}, {0xd236109f47f870ac, 0xf229a667744c0266, 0xf9d93d6f01f921fa, 0x2c3b6b5594983796}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x3abe763db230770c, 0xe4f9d39d2c76dbde, 0x15233adf6bc96db0, 0x9e8670c2795523}, {0xd80ba0bdd941e6ea, 0x6ff5c7474a4a781e, 0x9f7a618e8469d0a2, 0x304a4540668f3eb3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xb4ac0084a2b43849, 0xf00f44c1e014f6b5, 0x1bd32f9f8e5196ea, 0x15f9e117c931dba}, {0x682ed40c9aba9b0c, 0x23ecbcd17bcf48bb, 0xa965b22a1497f9d3, 0xcc6dae3c8db528a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0x94437da213f9a8b1, 0xaba06afd54324148, 0x88ae0c022485a5f0, 0x14c75d2e824d358c}, {0xf66dc2e267ccd26c, 0x4874947cabbe1286, 0x9d58768934cf0ac, 0x204e323f499fb9c7}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x6df59b590d8b49c3, 0x1a9d2f960b7a3739, 0xb07ddc58241945ff, 0x3484655e395cb341}, {0x304ad2e438e5e35d, 0x2dae483b5d058280, 0x6f8c329dfd772ab6, 0x3185a956086f9c3a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xc005575f13b6b2c2, 0xddf9a6915407672a, 0x2c9a775fc6672c13, 0x1e1cabf3a03e1a97}, {0x63582f61f3e388aa, 0xcb1e01ccb3f27f1d, 0xd2f07c8953154892, 0x31dfa2e1a8469e03}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x905746a8,0xcba986de,0xce00c982,0xafe903e5,0xb4f77503,0x45f131d9,0x4e23b772,0xcfd83858,0xf58d4244,0x3760271b,0x9b695e52,0x29dfb03c,0x6f76}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x34966727,0xd124a592,0x5406b138,0xb6811e37,0xc6bb76ad,0x6e4f3525,0x95a4d837,0x7ab79c8e,0x82052da8,0x30944c09,0x40383570,0x2a6d4a69,0x2cee0}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x85253fa9,0x5addf0a8,0xbf8edd1,0xab51c425,0x25063750,0x684007,0x50ad782a,0x9d19ac25,0x845b61a2,0x3bfe6841,0x763318f1,0x8fe27ee4,0x52e11}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x6fa8b958,0x34567921,0x2ee0fe7d,0xa9edd079,0xb2153802,0x2861fbd7,0xec53d953,0xdcd9c535,0x9a6c22ea,0x320707b8,0x88c47ed8,0xbcd65112,0xb8860}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xab638354,0x268373ba,0x368b8448,0xc8662cd5,0x92162b98,0x88ab0053,0xb226347b,0x3176fa60,0x62386542,0xa8181e2c,0xaf7a32f4,0xd0e1882d,0x629ca}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xf3dd10cf,0xe4d96e4e,0xd202ded9,0x2a7d9877,0x396a622f,0x5d91a0ef,0x4bcc65aa,0x6a38c09e,0x73c81eed,0xd7292bad,0xaf4439c9,0x426bfe5b,0x497df}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x9134febf,0xdcc8ff6b,0xc004c195,0xdb6cffc,0xffcce162,0xa30f3ce8,0x83543924,0xd944fb23,0x685552f4,0xeb488c09,0xb14a7623,0x3a996d25,0x5c7db}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x549c7cac,0xd97c8c45,0xc65643b7,0x9170a789,0xd4f6816d,0xe5a82d5d,0x88515c49,0x7b3b032d,0x2dc0ffed,0xc14f10a8,0x74b3aa35,0x15d47921,0x5ce0c}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x123ecf39,0x506e7e70,0x1913c931,0xc5f6a42,0x46e0890e,0x8c508d25,0x2e4e50f6,0xa17e6efa,0x868eae62,0x6017a98,0xcf472d87,0x5274fed6,0x59d7c}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x78ccd40c,0x8d05b84c,0x2f1bea7a,0x7369b273,0x2ce89dd7,0xc55cfa0b,0x57101662,0xc9b4bdc5,0xd27a318c,0x3665d4d7,0x71e7049f,0x79c7df5c,0x7de2d}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x75cef71c,0xb3d9a9e9,0xbf1a1118,0x7cd56441,0xd7fb0c3a,0xc4391ac0,0x9f3beef7,0x7f054181,0x15827aed,0x920d5bd0,0x3b449286,0xc48f9aa4,0x58111}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xedc130c7,0xaf91818f,0xe3cdfece,0x4d776a1c,0x202c23f8,0xe202a08c,0xc293fce,0xb338e94,0x96ab6cd,0x6365b43c,0x54e6afa3,0x94410278,0x65a5a}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x905746a8,0xcba986de,0xce00c982,0xafe903e5,0xb4f77503,0x45f131d9,0x4e23b772,0xcfd83858,0xf58d4244,0x3760271b,0x9b695e52,0x29dfb03c,0x6f76}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x34966727,0xd124a592,0x5406b138,0xb6811e37,0xc6bb76ad,0x6e4f3525,0x95a4d837,0x7ab79c8e,0x82052da8,0x30944c09,0x40383570,0x2a6d4a69,0x2cee0}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x85253fa9,0x5addf0a8,0xbf8edd1,0xab51c425,0x25063750,0x684007,0x50ad782a,0x9d19ac25,0x845b61a2,0x3bfe6841,0x763318f1,0x8fe27ee4,0x52e11}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x6fa8b958,0x34567921,0x2ee0fe7d,0xa9edd079,0xb2153802,0x2861fbd7,0xec53d953,0xdcd9c535,0x9a6c22ea,0x320707b8,0x88c47ed8,0xbcd65112,0xb8860}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x9ddd64fe,0x79167d4c,0x824626e5,0x3c27985d,0xa386d04e,0xe74e1916,0x8024f5f6,0x80a7995c,0x2be2d3c3,0x6fbc22a4,0x2571c8a3,0x7d609c35,0x34ca0}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x9439bbfb,0x5aff09f0,0x9304c809,0x707f5b57,0x8012ec6e,0xe5f06b0a,0x70b89ef0,0xf2782e96,0x7ae6a64a,0x3debbdb,0x77be379d,0xb66ca462,0x3b35f}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xb2d1f34,0x9bd3780a,0x646fbbb3,0x896fb440,0xc5efe2dc,0x8e55550,0x873ca10a,0x9188526b,0xbe550ce3,0xc857118f,0xa5d5b61f,0xd898f6ac,0xb76e1}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x62229b02,0x86e982b3,0x7a9ba11a,0x1daf3c01,0xc385dcb8,0x8705149a,0xba529ace,0x2c0a6431,0x6416916c,0xf9ab0c30,0xfebc1486,0x69556519,0x8ab36}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x91f679d,0xa8373f38,0x8afac898,0x331b1f50,0x56f69b0a,0xfd51dd6b,0x3462f0dd,0x27183644,0x8b4409c9,0xb7b454b6,0xf9ba8558,0x9c958012,0x8caa9}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x3c666a06,0x4682dc26,0x15fed93d,0xe6a04369,0x49faa56e,0x19d813de,0xc8c3d394,0x3b335da9,0x3139cb5e,0xcfe681d6,0xcb0a70e4,0x303ef055,0x9eb02}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xbae77b8e,0x59ecd4f4,0xdf8d088c,0x3e6ab220,0x6bfd861d,0xe21c8d60,0xcf9df77b,0xbf82a0c0,0xac13d76,0x4906ade8,0x1da24943,0xe247cd52,0x2c088}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xf6e09864,0x57c8c0c7,0x71e6ff67,0x26bbb50e,0x101611fc,0x71015046,0x6149fe7,0x8599c74a,0x4b55b66,0xb1b2da1e,0x2a7357d1,0x4a20813c,0x32d2d}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x8}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x6526a12e,0x5f91bcc1,0x4f6f18ef,0x73e45206,0x894be166,0x352563d0,0x5118e0c3,0xb2aa4d54,0x12f2}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x6cb1255d,0xeabd39e6,0x2b10f4f1,0x8cc6ff77,0xe0a918d9,0x7274ade1,0x8af5ec7c,0xf859de41,0x8791}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xc7544550,0xd9c9bb43,0xf4761e09,0x8f4f91c3,0x654dae13,0xbd46c39b,0xbc3d5e10,0x6ba6e06a,0x32c4}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xac345307,0xde5c11e,0x52c01e71,0xea6e45fe,0xa5c448d8,0xe264744,0x72750047,0x86455965,0xa46e}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x5ec5f8fb,0xed0cdde5,0x437d7184,0xe32f1a51,0xa6f00673,0x8d281916,0x2e62ac10,0xccb2df2c,0x2ce7}}}}};
#elif 8*DIGIT_LEN == 64
const ec_basis_t BASIS_EVEN = {{{{0xaa6456e57b3d0e5c, 0x6e1e74cfc06d9529, 0xe77005c1d8e998d9, 0x207aef3d73fb9e71}, {0x918dbc45635410cb, 0x6ee588ba09396573, 0x68aa64be61e6f4c4, 0x16e37aee06350f3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xc71dcbb1e0f986f5, 0xbd60f6c8d8c31906, 0x753a060121887848, 0x2104aa23e92066b1}, {0x187b3ab8b007ee01, 0xa0cfdf9999fd088e, 0x1dbb43376c18e129, 0x1be43892abe83cab}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x5f063c05ab333c4b, 0x9432317b20a4a9dd, 0x3d246e5d9e99e169, 0x112c26ed94c42aea}, {0xf650f44ad5ca0053, 0xbe39aa3b866de04d, 0x8eca3998d4b32c4d, 0x24e1dfdd264f7289}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0x9225eb7dc4964589, 0x84809bd2660ac787, 0x9b120b36af060f7b, 0x26c6e5fb8ba413a2}, {0xc3243c45368044cd, 0xf4c6c6136b0396e3, 0x36e7ca367bcda18e, 0x2b2ea4f64b8d9b4d}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x2e78d4ca270d7e6b, 0xf9ac7eaa9713ab55, 0x6b68d02784ce09b1, 0x33fe700247f21db9}, {0x72995ed7921505e9, 0x9af528d378e626ba, 0x319a09e659f3fbf, 0x14f7b599168ae1bb}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x1fc31ea8afacffa9, 0x2198ad06ba5f7c1e, 0x867ee910c84f9241, 0x22f0ae8a117bf50}, {0x7624b1b2a61cca63, 0x6de050872be1c855, 0xf26e2a76937d44db, 0x13e175482bc586c4}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x1821f9af01cc0789, 0x66b67297ef3013a7, 0xe2f055ae52632d3d, 0xdadc43eddf1c21b}, {0xd236109f47f870ac, 0xf229a667744c0266, 0xf9d93d6f01f921fa, 0x2c3b6b5594983796}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x3abe763db230770c, 0xe4f9d39d2c76dbde, 0x15233adf6bc96db0, 0x9e8670c2795523}, {0xd80ba0bdd941e6ea, 0x6ff5c7474a4a781e, 0x9f7a618e8469d0a2, 0x304a4540668f3eb3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xb4ac0084a2b43849, 0xf00f44c1e014f6b5, 0x1bd32f9f8e5196ea, 0x15f9e117c931dba}, {0x682ed40c9aba9b0c, 0x23ecbcd17bcf48bb, 0xa965b22a1497f9d3, 0xcc6dae3c8db528a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xb382773d0ee2c6c5, 0x79bf22b00e75b701, 0x3dad4448a15e78b8, 0x2eb8550cb8d850d7}, {0x3289f573f719e381, 0xbeed476da914eb33, 0x6842f12d33d945f8, 0x1198a19ef03352bd}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x2c70e2ff4f8ed280, 0xd57145fbbd907950, 0x1ddf917bc2cd217f, 0x645838fc77dbffc}, {0x964fa32cefd3fdeb, 0xd551d0d6d0d1947b, 0x557b59a0b5fe55fc, 0x26cdcead70200b29}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x1e1dfa89820375fa, 0xf99b7f5e9addf912, 0xb316e64530602ca4, 0x1f6c3e438538999f}, {0x15924ed1bb15198, 0x4b5e6672bbda95e3, 0x6145e2a98ca22c88, 0xfcfc3a246698c7c}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x1821f9af01cc0789, 0x66b67297ef3013a7, 0xe2f055ae52632d3d, 0xdadc43eddf1c21b}, {0xd236109f47f870ac, 0xf229a667744c0266, 0xf9d93d6f01f921fa, 0x2c3b6b5594983796}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x3abe763db230770c, 0xe4f9d39d2c76dbde, 0x15233adf6bc96db0, 0x9e8670c2795523}, {0xd80ba0bdd941e6ea, 0x6ff5c7474a4a781e, 0x9f7a618e8469d0a2, 0x304a4540668f3eb3}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xb4ac0084a2b43849, 0xf00f44c1e014f6b5, 0x1bd32f9f8e5196ea, 0x15f9e117c931dba}, {0x682ed40c9aba9b0c, 0x23ecbcd17bcf48bb, 0xa965b22a1497f9d3, 0xcc6dae3c8db528a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0x94437da213f9a8b1, 0xaba06afd54324148, 0x88ae0c022485a5f0, 0x14c75d2e824d358c}, {0xf66dc2e267ccd26c, 0x4874947cabbe1286, 0x9d58768934cf0ac, 0x204e323f499fb9c7}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0x6df59b590d8b49c3, 0x1a9d2f960b7a3739, 0xb07ddc58241945ff, 0x3484655e395cb341}, {0x304ad2e438e5e35d, 0x2dae483b5d058280, 0x6f8c329dfd772ab6, 0x3185a956086f9c3a}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}, {{{0xc005575f13b6b2c2, 0xddf9a6915407672a, 0x2c9a775fc6672c13, 0x1e1cabf3a03e1a97}, {0x63582f61f3e388aa, 0xcb1e01ccb3f27f1d, 0xd2f07c8953154892, 0x31dfa2e1a8469e03}}, {{0x1, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xcba986de905746a8,0xafe903e5ce00c982,0x45f131d9b4f77503,0xcfd838584e23b772,0x3760271bf58d4244,0x29dfb03c9b695e52,0x6f76}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xd124a59234966727,0xb6811e375406b138,0x6e4f3525c6bb76ad,0x7ab79c8e95a4d837,0x30944c0982052da8,0x2a6d4a6940383570,0x2cee0}}}}, {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x5addf0a885253fa9,0xab51c4250bf8edd1,0x68400725063750,0x9d19ac2550ad782a,0x3bfe6841845b61a2,0x8fe27ee4763318f1,0x52e11}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x345679216fa8b958,0xa9edd0792ee0fe7d,0x2861fbd7b2153802,0xdcd9c535ec53d953,0x320707b89a6c22ea,0xbcd6511288c47ed8,0xb8860}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x268373baab638354,0xc8662cd5368b8448,0x88ab005392162b98,0x3176fa60b226347b,0xa8181e2c62386542,0xd0e1882daf7a32f4,0x629ca}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xe4d96e4ef3dd10cf,0x2a7d9877d202ded9,0x5d91a0ef396a622f,0x6a38c09e4bcc65aa,0xd7292bad73c81eed,0x426bfe5baf4439c9,0x497df}}}}, {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xdcc8ff6b9134febf,0xdb6cffcc004c195,0xa30f3ce8ffcce162,0xd944fb2383543924,0xeb488c09685552f4,0x3a996d25b14a7623,0x5c7db}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xd97c8c45549c7cac,0x9170a789c65643b7,0xe5a82d5dd4f6816d,0x7b3b032d88515c49,0xc14f10a82dc0ffed,0x15d4792174b3aa35,0x5ce0c}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x506e7e70123ecf39,0xc5f6a421913c931,0x8c508d2546e0890e,0xa17e6efa2e4e50f6,0x6017a98868eae62,0x5274fed6cf472d87,0x59d7c}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x8d05b84c78ccd40c,0x7369b2732f1bea7a,0xc55cfa0b2ce89dd7,0xc9b4bdc557101662,0x3665d4d7d27a318c,0x79c7df5c71e7049f,0x7de2d}}}}, {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xb3d9a9e975cef71c,0x7cd56441bf1a1118,0xc4391ac0d7fb0c3a,0x7f0541819f3beef7,0x920d5bd015827aed,0xc48f9aa43b449286,0x58111}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xaf91818fedc130c7,0x4d776a1ce3cdfece,0xe202a08c202c23f8,0xb338e940c293fce,0x6365b43c096ab6cd,0x9441027854e6afa3,0x65a5a}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xcba986de905746a8,0xafe903e5ce00c982,0x45f131d9b4f77503,0xcfd838584e23b772,0x3760271bf58d4244,0x29dfb03c9b695e52,0x6f76}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xd124a59234966727,0xb6811e375406b138,0x6e4f3525c6bb76ad,0x7ab79c8e95a4d837,0x30944c0982052da8,0x2a6d4a6940383570,0x2cee0}}}}, {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x5addf0a885253fa9,0xab51c4250bf8edd1,0x68400725063750,0x9d19ac2550ad782a,0x3bfe6841845b61a2,0x8fe27ee4763318f1,0x52e11}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x345679216fa8b958,0xa9edd0792ee0fe7d,0x2861fbd7b2153802,0xdcd9c535ec53d953,0x320707b89a6c22ea,0xbcd6511288c47ed8,0xb8860}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x79167d4c9ddd64fe,0x3c27985d824626e5,0xe74e1916a386d04e,0x80a7995c8024f5f6,0x6fbc22a42be2d3c3,0x7d609c352571c8a3,0x34ca0}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x5aff09f09439bbfb,0x707f5b579304c809,0xe5f06b0a8012ec6e,0xf2782e9670b89ef0,0x3debbdb7ae6a64a,0xb66ca46277be379d,0x3b35f}}}}, {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x9bd3780a0b2d1f34,0x896fb440646fbbb3,0x8e55550c5efe2dc,0x9188526b873ca10a,0xc857118fbe550ce3,0xd898f6aca5d5b61f,0xb76e1}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x86e982b362229b02,0x1daf3c017a9ba11a,0x8705149ac385dcb8,0x2c0a6431ba529ace,0xf9ab0c306416916c,0x69556519febc1486,0x8ab36}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xa8373f38091f679d,0x331b1f508afac898,0xfd51dd6b56f69b0a,0x271836443462f0dd,0xb7b454b68b4409c9,0x9c958012f9ba8558,0x8caa9}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x4682dc263c666a06,0xe6a0436915fed93d,0x19d813de49faa56e,0x3b335da9c8c3d394,0xcfe681d63139cb5e,0x303ef055cb0a70e4,0x9eb02}}}}, {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x59ecd4f4bae77b8e,0x3e6ab220df8d088c,0xe21c8d606bfd861d,0xbf82a0c0cf9df77b,0x4906ade80ac13d76,0xe247cd521da24943,0x2c088}}}, {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x57c8c0c7f6e09864,0x26bbb50e71e6ff67,0x71015046101611fc,0x8599c74a06149fe7,0xb1b2da1e04b55b66,0x4a20813c2a7357d1,0x32d2d}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x8}}}, {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x5f91bcc16526a12e,0x73e452064f6f18ef,0x352563d0894be166,0xb2aa4d545118e0c3,0x12f2}}}, {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0xeabd39e66cb1255d,0x8cc6ff772b10f4f1,0x7274ade1e0a918d9,0xf859de418af5ec7c,0x8791}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0xd9c9bb43c7544550,0x8f4f91c3f4761e09,0xbd46c39b654dae13,0x6ba6e06abc3d5e10,0x32c4}}}, {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0xde5c11eac345307,0xea6e45fe52c01e71,0xe264744a5c448d8,0x8645596572750047,0xa46e}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0xed0cdde55ec5f8fb,0xe32f1a51437d7184,0x8d281916a6f00673,0xccb2df2c2e62ac10,0x2ce7}}}}};
#endif

View File

@@ -0,0 +1,52 @@
#ifndef EC_PARAMS_H
#define EC_PARAMS_H
#include <fp_constants.h>
#define POWER_OF_2 75
#define POWER_OF_3 36
static digit_t TWOpF[NWORDS_ORDER] = {0x0, 0x0800, 0x0, 0x0}; // 2^g
static digit_t TWOpFm1[NWORDS_ORDER] = {0x0, 0x0400, 0x0, 0x0}; // 2^(g-1)
static digit_t THREEpE[NWORDS_ORDER] = {0x0000000017179149, 0x0, 0x0, 0x0}; // 3^e
static digit_t THREEpF[NWORDS_ORDER] = {0x02153E468B91C6D1, 0x0, 0x0, 0x0}; // 3^f
static digit_t THREEpFdiv2[NWORDS_ORDER] = {0x010A9F2345C8E368, 0x0, 0x0, 0x0}; // Floor(3^f/2)
#define scaled 1 // unscaled (0) or scaled (1) remainder tree approach
#define gap 83
#define P_LEN 9
#define M_LEN 19
static digit_t p_plus_minus_bitlength[P_LEN + M_LEN] =
{ 2,5,6,7,7,8,9,10,11,3,4,4,6,7,7,7,8,8,8,8,9,9,9,10,11,11,11,11 };
static digit_t p_cofactor_for_2f[3] = { 0x86e4a593c926aa29,0x318674d50cb0e80e,0x00069c53c50d72bb };
#define P_COFACTOR_FOR_2F_BITLENGTH 179
static digit_t p_cofactor_for_3g[4] = { 0x0000000000000000,0x74f9dace0d9ec800,0x63a25b437f655001,0x0000000000000019 };
#define P_COFACTOR_FOR_3G_BITLENGTH 197
static digit_t p_cofactor_for_6fg[4] = { 0x002E9F3B59C1B3D9,0x032C744B686FECAA };
#define P_COFACTOR_FOR_6FG_BITLENGTH 122
static int STRATEGY4[36] = { 15, 9, 5, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 4, 2, 1, 1, 1, 2, 1, 1, 7, 4, 2, 1, 1, 2, 1, 1, 3, 2, 1, 1, 1, 1};
static int sizeI[] = {
0, 2, 4, 6, 6, 7, 12, 14, 28, 1, 2, 3, 3, 5, 6, 6, 6, 6, 9, 8, 10, 12, 12, 12, 16, 16, 18, 22
};
static int sizeJ[] = {
0, 2, 3, 4, 4, 7, 10, 13, 17, 1, 1, 1, 3, 4, 4, 4, 5, 5, 6, 7, 9, 8, 10, 12, 16, 16, 16, 22
};
static int sizeK[] = {
1, 3, 5, 2, 6, 0, 5, 7, 4, 1, 1, 0, 0, 4, 0, 5, 5, 8, 3, 7, 11, 2, 9, 15, 4, 12, 20, 18
};
#define sI_max 28
#define sJ_max 22
#define sK_max 59
#define ceil_log_sI_max 5
#define ceil_log_sJ_max 5
#endif

View File

@@ -0,0 +1,14 @@
#define FP2_ENCODED_BYTES 64
#define EC_CURVE_ENCODED_BYTES 64
#define EC_POINT_ENCODED_BYTES 64
#define EC_BASIS_ENCODED_BYTES 192
#define CHAIN_LENGTH 9
#define QUAT_ALG_ELEM_ENCODED_BITS 425
#define QUAT_ALG_ELEM_ENCODED_BYTES 54
#define ID2ISO_LONG_TWO_ISOG_ENCODED_BYTES 1170
#define ZIP_CHAIN_LEN 14
#define ID2ISO_COMPRESSED_LONG_TWO_ISOG_ZIP_CHAIN_BYTES 10
#define ID2ISO_COMPRESSED_LONG_TWO_ISOG_BYTES 141
#define SIGNATURE_LEN 177
#define PUBLICKEY_BYTES 64
#define SECRETKEY_BYTES 782

View File

@@ -0,0 +1,19 @@
#include <intbig.h>
#include <ec.h>
#include <quaternion.h>
extern const ec_basis_t BASIS_EVEN;
extern const ec_basis_t BASIS_ODD_PLUS;
extern const ec_basis_t BASIS_ODD_MINUS;
extern const ec_basis_t BASIS_COMMITMENT_PLUS;
extern const ec_basis_t BASIS_COMMITMENT_MINUS;
extern const ec_basis_t BASIS_CHALLENGE;
extern const ec_curve_t CURVE_E0;
extern const ec_point_t CURVE_E0_A24;
extern const ibz_mat_2x2_t ACTION_I;
extern const ibz_mat_2x2_t ACTION_J;
extern const ibz_mat_2x2_t ACTION_K;
extern const ibz_mat_2x2_t ACTION_GEN2;
extern const ibz_mat_2x2_t ACTION_GEN3;
extern const ibz_mat_2x2_t ACTION_GEN4;
extern const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN;
extern const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO;

View File

@@ -0,0 +1,4 @@
#define NWORDS_FIELD 4
#define NWORDS_ORDER 4
#define BITS 256
#define LOG2P 8

View File

@@ -0,0 +1,27 @@
#include <intbig.h>
#define KLPT_equiv_bound_coeff 6
#define KLPT_equiv_num_iter 28561
#define KLPT_primality_num_iter 32
#define KLPT_signing_klpt_length 1050
#define KLPT_signing_num_gamma_trial 64
#define KLPT_gamma_exponent_interval_size 0
#define KLPT_gamma_exponent_center_shift 14
#define KLPT_repres_num_gamma_trial 16384
#define KLPT_signing_number_strong_approx 3432
#define KLPT_random_prime_attempts 64
#define KLPT_secret_key_prime_size 64
#define KLPT_keygen_length 675
#define KLPT_keygen_num_gamma_trial 64
#define KLPT_eichler_smallnorm_bitsize 112
#define KLPT_keygen_number_strong_approx 2639
#define KLPT_eichler_number_mu_norm 8
#define KLPT_eichler_strong_approx_log_margin 2
#define KLPT_eichler_num_equiv_ideal 26
#define KLPT_eichler_number_strong_approx 2540
#define SQISIGN_response_attempts 64
#define SQISIGN_random_length 0
#define SQISIGN_signing_total_length 1050
#define SQISIGN_signing_length 14
#define SQISIGN_keygen_length 9
extern const short SMALL_PRIMES_1MOD4[11];
extern const ibz_t PROD_SMALL_PRIMES_3MOD4;

View File

@@ -0,0 +1,7 @@
#include <intbig.h>
#include <quaternion.h>
#define NUM_ALTERNATE_EXTREMAL_ORDERS 7
extern const quat_alg_t QUATALG_PINFTY;
extern const quat_order_t MAXORD_O0;
extern const quat_p_extremal_maximal_order_t STANDARD_EXTREMAL_ORDER;
extern const quat_p_extremal_maximal_order_t ALTERNATE_EXTREMAL_ORDERS[7];

View File

@@ -0,0 +1,24 @@
#include <intbig.h>
#define TORSION_2POWER_BYTES 10
#define TORSION_3POWER_BYTES 8
#define TORSION_23POWER_BYTES 17
extern const uint64_t TORSION_PLUS_EVEN_POWER;
extern const uint64_t TORSION_ODD_PRIMES[28];
extern const uint64_t TORSION_ODD_POWERS[28];
extern const uint64_t TORSION_PLUS_ODD_PRIMES[9];
extern const size_t TORSION_PLUS_ODD_POWERS[9];
extern const uint64_t TORSION_MINUS_ODD_PRIMES[19];
extern const size_t TORSION_MINUS_ODD_POWERS[19];
extern const size_t DEGREE_COMMITMENT_POWERS[28];
extern const ibz_t CHARACTERISTIC;
extern const ibz_t TORSION_ODD;
extern const ibz_t TORSION_ODD_PRIMEPOWERS[28];
extern const ibz_t TORSION_ODD_PLUS;
extern const ibz_t TORSION_ODD_MINUS;
extern const ibz_t TORSION_PLUS_2POWER;
extern const ibz_t TORSION_PLUS_3POWER;
extern const ibz_t TORSION_PLUS_23POWER;
extern const ibz_t DEGREE_COMMITMENT;
extern const ibz_t DEGREE_COMMITMENT_PLUS;
extern const ibz_t DEGREE_COMMITMENT_MINUS;
extern const ibz_t DEGREE_CHALLENGE;

View File

@@ -0,0 +1,14 @@
#include <stddef.h>
#include <stdint.h>
#include <klpt_constants.h>
#if 0
#elif 8*DIGIT_LEN == 16
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x173b,0x80bd,0xa9d7,0xa185}}};
#elif 8*DIGIT_LEN == 32
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x80bd173b,0xa185a9d7}}};
#elif 8*DIGIT_LEN == 64
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xa185a9d780bd173b}}};
#endif

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
lvl = 1
p = 0x34e29e286b95d98c33a6a86587407437252c9e49355147ffffffffffffffffff
B = 2000

View File

@@ -0,0 +1,68 @@
#include <stddef.h>
#include <stdint.h>
#include <torsion_constants.h>
#if 0
#elif 8*DIGIT_LEN == 16
const uint64_t TORSION_PLUS_EVEN_POWER = 0x4b;
const uint64_t TORSION_ODD_PRIMES[28] = {0x3, 0x17, 0x3b, 0x65, 0x6d, 0xc5, 0x1eb, 0x2e7, 0x779, 0x7, 0xb, 0xd, 0x25, 0x59, 0x61, 0x6b, 0x83, 0x89, 0xdf, 0xef, 0x17f, 0x185, 0x1f3, 0x25f, 0x409, 0x419, 0x4a9, 0x7b5};
const uint64_t TORSION_ODD_POWERS[28] = {0x24, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[9] = {0x3, 0x17, 0x3b, 0x65, 0x6d, 0xc5, 0x1eb, 0x2e7, 0x779};
const size_t TORSION_PLUS_ODD_POWERS[9] = {0x24, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
const uint64_t TORSION_MINUS_ODD_PRIMES[19] = {0x7, 0xb, 0xd, 0x25, 0x59, 0x61, 0x6b, 0x83, 0x89, 0xdf, 0xef, 0x17f, 0x185, 0x1f3, 0x25f, 0x409, 0x419, 0x4a9, 0x7b5};
const size_t TORSION_MINUS_ODD_POWERS[19] = {0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[28] = {0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 16, ._mp_d = (mp_limb_t[]) {0xffff,0xffff,0xffff,0xffff,0x47ff,0x3551,0x9e49,0x252c,0x7437,0x8740,0xa865,0x33a6,0xd98c,0x6b95,0x9e28,0x34e2}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 21, ._mp_d = (mp_limb_t[]) {0x9c39,0x8bdf,0x3ada,0xa0cb,0xe195,0xb62c,0xca65,0x18ad,0x4ef2,0xb1c7,0x963f,0xa5f5,0xff2c,0xda91,0x2ce5,0xa54d,0x85bb,0x29e4,0xd6c0,0xfadc,0x17e}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[28] = {{{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0xc6d1,0x8b91,0x3e46,0x215}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x211}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd99}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x27d9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2e69}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9799}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xadb9,0x3}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x6c71,0x8}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xd731,0x37}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x961}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x61}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x6b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x83}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x89}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xdf}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xef}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x17f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x185}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1f3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x409}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x419}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4a9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7b5}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0xaa29,0xc926,0xa593,0x86e4,0xe80e,0xcb0,0x74d5,0x3186,0x72bb,0xc50d,0x9c53,0x6}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xc391,0x81fc,0x4307,0xb45c,0x8cc7,0xa562,0x2134,0x3fea,0xef0a,0x39}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x800}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0xc6d1,0x8b91,0x3e46,0x215}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x8800,0x8e36,0x345c,0xa9f2,0x10}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x28e9,0xc551,0x1238,0xa0b3,0x76c,0x9d7d,0x4579,0xb59d,0xef3,0xb18b,0x664a,0xb2f1,0x383c,0x81df,0xa08,0x85e4,0xb7dc}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0xb3d9,0x59c1,0x9f3b,0x2e,0xecaa,0x686f,0x744b,0x32c}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xc391,0x81fc,0x4307,0xb45c,0x8cc7,0xa562,0x2134,0x3fea,0xef0a,0x39}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x8800,0x8e36,0x345c,0xa9f2,0x10}}};
#elif 8*DIGIT_LEN == 32
const uint64_t TORSION_PLUS_EVEN_POWER = 0x4b;
const uint64_t TORSION_ODD_PRIMES[28] = {0x3, 0x17, 0x3b, 0x65, 0x6d, 0xc5, 0x1eb, 0x2e7, 0x779, 0x7, 0xb, 0xd, 0x25, 0x59, 0x61, 0x6b, 0x83, 0x89, 0xdf, 0xef, 0x17f, 0x185, 0x1f3, 0x25f, 0x409, 0x419, 0x4a9, 0x7b5};
const uint64_t TORSION_ODD_POWERS[28] = {0x24, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[9] = {0x3, 0x17, 0x3b, 0x65, 0x6d, 0xc5, 0x1eb, 0x2e7, 0x779};
const size_t TORSION_PLUS_ODD_POWERS[9] = {0x24, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
const uint64_t TORSION_MINUS_ODD_PRIMES[19] = {0x7, 0xb, 0xd, 0x25, 0x59, 0x61, 0x6b, 0x83, 0x89, 0xdf, 0xef, 0x17f, 0x185, 0x1f3, 0x25f, 0x409, 0x419, 0x4a9, 0x7b5};
const size_t TORSION_MINUS_ODD_POWERS[19] = {0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[28] = {0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0xffffffff,0xffffffff,0x355147ff,0x252c9e49,0x87407437,0x33a6a865,0x6b95d98c,0x34e29e28}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 11, ._mp_d = (mp_limb_t[]) {0x8bdf9c39,0xa0cb3ada,0xb62ce195,0x18adca65,0xb1c74ef2,0xa5f5963f,0xda91ff2c,0xa54d2ce5,0x29e485bb,0xfadcd6c0,0x17e}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[28] = {{{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x8b91c6d1,0x2153e46}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x211}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd99}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x27d9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2e69}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9799}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3adb9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x86c71}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x37d731}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x961}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x61}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x6b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x83}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x89}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xdf}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xef}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x17f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x185}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1f3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x409}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x419}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4a9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7b5}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xc926aa29,0x86e4a593,0xcb0e80e,0x318674d5,0xc50d72bb,0x69c53}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x81fcc391,0xb45c4307,0xa5628cc7,0x3fea2134,0x39ef0a}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x800}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x8b91c6d1,0x2153e46}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x8e368800,0xa9f2345c,0x10}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xc55128e9,0xa0b31238,0x9d7d076c,0xb59d4579,0xb18b0ef3,0xb2f1664a,0x81df383c,0x85e40a08,0xb7dc}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x59c1b3d9,0x2e9f3b,0x686fecaa,0x32c744b}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x81fcc391,0xb45c4307,0xa5628cc7,0x3fea2134,0x39ef0a}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x8e368800,0xa9f2345c,0x10}}};
#elif 8*DIGIT_LEN == 64
const uint64_t TORSION_PLUS_EVEN_POWER = 0x4b;
const uint64_t TORSION_ODD_PRIMES[28] = {0x3, 0x17, 0x3b, 0x65, 0x6d, 0xc5, 0x1eb, 0x2e7, 0x779, 0x7, 0xb, 0xd, 0x25, 0x59, 0x61, 0x6b, 0x83, 0x89, 0xdf, 0xef, 0x17f, 0x185, 0x1f3, 0x25f, 0x409, 0x419, 0x4a9, 0x7b5};
const uint64_t TORSION_ODD_POWERS[28] = {0x24, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[9] = {0x3, 0x17, 0x3b, 0x65, 0x6d, 0xc5, 0x1eb, 0x2e7, 0x779};
const size_t TORSION_PLUS_ODD_POWERS[9] = {0x24, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
const uint64_t TORSION_MINUS_ODD_PRIMES[19] = {0x7, 0xb, 0xd, 0x25, 0x59, 0x61, 0x6b, 0x83, 0x89, 0xdf, 0xef, 0x17f, 0x185, 0x1f3, 0x25f, 0x409, 0x419, 0x4a9, 0x7b5};
const size_t TORSION_MINUS_ODD_POWERS[19] = {0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[28] = {0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0xffffffffffffffff,0x252c9e49355147ff,0x33a6a86587407437,0x34e29e286b95d98c}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xa0cb3ada8bdf9c39,0x18adca65b62ce195,0xa5f5963fb1c74ef2,0xa54d2ce5da91ff2c,0xfadcd6c029e485bb,0x17e}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[28] = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2153e468b91c6d1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x211}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd99}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x27d9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2e69}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9799}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3adb9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x86c71}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x37d731}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x961}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x61}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x6b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x83}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x89}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xdf}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xef}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x17f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x185}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1f3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x409}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x419}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4a9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7b5}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x86e4a593c926aa29,0x318674d50cb0e80e,0x69c53c50d72bb}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0xb45c430781fcc391,0x3fea2134a5628cc7,0x39ef0a}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x0,0x800}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2153e468b91c6d1}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x0,0xa9f2345c8e368800,0x10}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0xa0b31238c55128e9,0xb59d45799d7d076c,0xb2f1664ab18b0ef3,0x85e40a0881df383c,0xb7dc}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x2e9f3b59c1b3d9,0x32c744b686fecaa}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0xb45c430781fcc391,0x3fea2134a5628cc7,0x39ef0a}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x0,0xa9f2345c8e368800,0x10}}};
#endif

View File

@@ -0,0 +1,49 @@
set(SOURCE_FILES_PRECOMP_${SVARIANT_UPPER}_REF
torsion_constants.c
quaternion_data.c
endomorphism_action.c
klpt_constants.c
)
add_library(${LIB_PRECOMP_${SVARIANT_UPPER}} ${SOURCE_FILES_PRECOMP_${SVARIANT_UPPER}_REF})
target_include_directories(${LIB_PRECOMP_${SVARIANT_UPPER}} PRIVATE common ${INC_INTBIG} ${INC_QUATERNION} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src/ec/ref/include ${PROJECT_SOURCE_DIR}/src/ec/ref/${SVARIANT_LOWER}/include ${PROJECT_SOURCE_DIR}/src/gf/ref/${SVARIANT_LOWER}/include ${INC_PRECOMP_${SVARIANT_UPPER}} ${INC_COMMON})
target_compile_options(${LIB_PRECOMP_${SVARIANT_UPPER}} PRIVATE ${C_OPT_FLAGS})
add_custom_command(
OUTPUT
"${CMAKE_CURRENT_SOURCE_DIR}/torsion_constants.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/torsion_constants.h"
"${CMAKE_CURRENT_SOURCE_DIR}/include/klpt_constants.h"
"${CMAKE_CURRENT_SOURCE_DIR}/klpt_constants.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/encoded_sizes.h"
"${PROJECT_SOURCE_DIR}/src/nistapi/lvl3/api.h"
"${CMAKE_CURRENT_SOURCE_DIR}/quaternion_data.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/quaternion_data.h"
"${CMAKE_CURRENT_SOURCE_DIR}/endomorphism_action.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/endomorphism_action.h"
COMMAND
echo "Please run manually: make precomp"
)
find_program(SAGEMATH sage)
add_custom_target(precomp_${SVARIANT_LOWER}
DEPENDS
"./sqisign_parameters.txt"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_torsion_constants.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_klpt_constants.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_sizes.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_quaternion_data.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_endomorphism_action.sage"
WORKING_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}"
)
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
set_target_properties(precomp_${SVARIANT_LOWER} PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(precomp precomp_lvl3)

View File

@@ -0,0 +1,56 @@
#include <stddef.h>
#include <stdint.h>
#include <endomorphism_action.h>
#if 0
#elif 8*DIGIT_LEN == 16
const ec_basis_t BASIS_EVEN = {{{{0x22e6355134b7d255, 0xa7f7f4f4597d08dc, 0xb8eb0e50d5888eec, 0xed36a84e0c7f72ba, 0xb6ed1c0b46f3f28e, 0x282153a62f4d1b8}, {0xd57efea74410a787, 0xea4460d69d71d250, 0xb3d9ad4193397a46, 0x3124b5b93ff1a081, 0x45a800b0c82d3709, 0x24b0e60e1353c61}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x17df8f9d274de7f, 0x351632cce83ec8aa, 0x56e019deae8daf7e, 0x3da35b5dc1820a3b, 0xbb60de7d759b75b1, 0x2e81949d5d0a4d9}, {0xa4efe85f225c5804, 0x9cbd9fc32e16b4f8, 0xa8be541ed7c20bbc, 0xe057875bd571d902, 0x35f5baf03dab21ff, 0x3493d2784699545}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xb37f8fba3f4420f8, 0x8d48f1acb03706df, 0x5f5d4860530ffdbc, 0x3346cb7307f4e98e, 0xebbd3a151d8187ef, 0x14e3e664b5f52b0}, {0xdab91da8f4656795, 0xdbdcf3c3108cac88, 0x272d467ca27bde21, 0x147ed2cd9dc73cf0, 0x67421707fd5d4d50, 0x1c9f704aa559bda}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0xdb68fd6ab36028ee, 0xb67ecbd22b247e6d, 0x3ddb4a10bff4a0, 0x31eccf041ed4eabc, 0x6c93b74e3dbd1615, 0xece18a8a69c342}, {0x3ac922e0d53a3b4e, 0xaaa4c42158564daf, 0x1359d8744b831fce, 0x6f1eb5f50a893a70, 0x290b2fffdf9f083e, 0x56212fe48636bb}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xd64d88142398fc70, 0x8cd791e2b175b8ad, 0x8cf816a594e65996, 0xdc15534f4bbc3e, 0x2ebd5f0fca9cb695, 0x2677728640635e3}, {0x8e859814dd48f154, 0x400b48d3d3fb2e17, 0x9e315059bbc401a9, 0x26c24fc85c0a4034, 0x2095f2ade3a1cc0e, 0x789dae43794796}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x55c5c814e95ff9e, 0x624aa7502d08f66d, 0xfaef96a43369b1b5, 0x6bd0164a386601da, 0xc4624eccbcab4884, 0x10154ec03218312}, {0x4fbfbe9e5f4e4beb, 0x1392132cc9a7a298, 0x87bee2902df2694c, 0x2fd70dedc82c836c, 0xb969a66833ea4330, 0xac80d610eac86e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x4668fbf6837118e1, 0xe3f7541cde4ef86b, 0x6222f4709df362fa, 0xfff04e39c27d3eeb, 0x950a899ed78c3ac4, 0x325b141dae45991}, {0xdcd302b823c975d7, 0x52a74513892de655, 0x71698b3599387e45, 0x190b468017eb95b1, 0x8d1e5211978b6ff3, 0x29dc08516c36f88}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x29ebd3656c338c34, 0x2bfcf65c705b22cb, 0xc34d5916fff804ae, 0x936fa5577596f777, 0x88bc262ea82314b1, 0x3cb841bc5ebf63f}, {0x1cd8d5a530a1914c, 0xaa47dc464b7fe567, 0xb2f6cfba20a12302, 0xbdec2a7f8ed5764a, 0x8d8caffb90342f7, 0x2bc600de26023a0}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xef90e01f16ec0b, 0xbe3b230014cdc8ca, 0x11d8068a91007c6a, 0xef60fc7a468eb46, 0x6ebe6eb84394eacc, 0xb27d0c0b9cc97e}, {0xfb44d144ffbc728, 0x35fed8aabb632fb0, 0xbce80df03ad44c4c, 0x94e973d6d612e79a, 0xf90b559988365d91, 0x1d8b3925fcef701}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xcf4ab671f3581670, 0xfe5bec2006b84191, 0x9c86c3022ef1c1dc, 0xca2fd261142cadc9, 0x615c338c784391f1, 0x220d6a5b67dc16c}, {0x827228cb3c97f27d, 0x62e6cbb0680bb491, 0x595f79839679df49, 0xb532dbc517c50a6e, 0x307360426131c2a7, 0x36d0c506b0ee9bf}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xa40cf5606210efd5, 0xe2a74bde914816ea, 0x3eaded7bce47ee4e, 0x5c13b2fc6d3f0e6f, 0x7c3d8e9de2169375, 0x1ff7fd7dbf97c03}, {0xc35492b3b8cb43e2, 0x3101d6730b5f0690, 0x18bb5b95ff4732ad, 0xc910043b50554bb7, 0xe157f6abd14ab159, 0x136ee8f2b5d364c}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x52706bfd8763b0c3, 0xa42c185c8aff91f3, 0x787da4c24686d040, 0xb481c545c5d853a3, 0xeff30a78ada95338, 0x42de7d5615621e}, {0x9c57da37895bac33, 0x151877b2e03774e0, 0x932f17a8d669aae8, 0xce9262ee9efce8c9, 0x31226e5e998455ab, 0x208b93fdae6a791}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x4668fbf6837118e1, 0xe3f7541cde4ef86b, 0x6222f4709df362fa, 0xfff04e39c27d3eeb, 0x950a899ed78c3ac4, 0x325b141dae45991}, {0xdcd302b823c975d7, 0x52a74513892de655, 0x71698b3599387e45, 0x190b468017eb95b1, 0x8d1e5211978b6ff3, 0x29dc08516c36f88}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x29ebd3656c338c34, 0x2bfcf65c705b22cb, 0xc34d5916fff804ae, 0x936fa5577596f777, 0x88bc262ea82314b1, 0x3cb841bc5ebf63f}, {0x1cd8d5a530a1914c, 0xaa47dc464b7fe567, 0xb2f6cfba20a12302, 0xbdec2a7f8ed5764a, 0x8d8caffb90342f7, 0x2bc600de26023a0}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xef90e01f16ec0b, 0xbe3b230014cdc8ca, 0x11d8068a91007c6a, 0xef60fc7a468eb46, 0x6ebe6eb84394eacc, 0xb27d0c0b9cc97e}, {0xfb44d144ffbc728, 0x35fed8aabb632fb0, 0xbce80df03ad44c4c, 0x94e973d6d612e79a, 0xf90b559988365d91, 0x1d8b3925fcef701}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0xbeb1828b6321b73b, 0x9b4ae33a51041b28, 0xb8eb52edec901458, 0x489f36189fbe40e2, 0x23b52fca75d8097a, 0x1fa77728850feb5}, {0x3c3181fa7491fa00, 0x90610c1cf4b08f0d, 0xc9a4e86e25007aa9, 0x5b71c5a9406460c7, 0xcc87c9e89706249a, 0x35c54d562e37057}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x4660c57fe78f45e1, 0x52046157833495f6, 0x3a046cb27e641924, 0x3d296d4fc4f86278, 0x53eab7beef1edc6b, 0x180b61ad44039e5}, {0x70a4e03a435a0a94, 0xf4446a3f06c86e3b, 0x83264cf9fe7b13b9, 0xded3fc0f6172e26, 0xc0ad14de5a337e74, 0x27cb876a7e80950}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xa6cb0f8ced1d3798, 0x7d2277dc624ef354, 0xed0fc61f3fcf514, 0x80d1db25eb940c0d, 0x5e0af0166b2e4f8f, 0x3a9eaad39577c49}, {0xe3b7bc63514ee9b3, 0x541be4cbdbf35256, 0x4ce81454a8ce471e, 0x97b4f5aca2ab4e14, 0x5e3ef1b3acf3da56, 0x1be60bf81366891}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xf9ad,0x5f9b,0x6ce9,0xbb0,0xd99f,0xfa8,0xd044,0x233e,0x87e8,0xca4e,0x4a37,0x56fc,0x9dca,0x9c29,0x5919,0xe176,0x49f2,0x703,0xedb8,0x79d4,0xee35,0xf59f,0x2616,0xd452,0x2b73,0xbe73,0x59c,0x7105,0xc02b,0x9deb,0xf129,0xd05f,0xa69,0x9aaa,0x470c,0xa988,0x270}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x4602,0x9ac2,0xb4ca,0x4dc4,0x4c48,0x81e5,0x7e0a,0x8b5b,0x89b7,0x7e46,0xfa8f,0x54fa,0x905e,0x76fc,0xb466,0xa68,0x6ea2,0xec93,0x1752,0x3208,0xa003,0x320,0xd8bc,0x5fbe,0x3e0a,0x73c0,0xf878,0x363a,0x288e,0xc25e,0xb565,0xdaee,0x880a,0x793b,0x4f3b,0x6e37,0x92}}}}, {{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xff8b,0xb5e4,0x8708,0x298b,0x12b1,0xd78a,0x68cb,0xb760,0xb439,0x8235,0x4322,0x2444,0xbb26,0x144c,0xcdf3,0x67ce,0x4c77,0x789a,0xe4a0,0xecfa,0x9e7e,0x8163,0x96c,0x510f,0xa6dc,0xf672,0x8152,0x5b7c,0xa824,0x40c,0x1d30,0xaca1,0xc8de,0xda4b,0x75d1,0x17,0xa58}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x653,0xa064,0x9316,0xf44f,0x2660,0xf057,0x96f1,0x46bd,0x1261,0x8b14,0x468e,0xf557,0x4bed,0x4122,0xb58d,0x5aa5,0x981f,0xe023,0x31d,0xfe62,0x8acd,0xcd7c,0xd36d,0xebeb,0x1ff9,0x9212,0xeb42,0xdfcb,0xe015,0xa9d4,0xd889,0xf67,0xdc26,0xc0dd,0xc1fb,0x9018,0xa92}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x5359,0xd834,0x93b2,0xd92d,0x9b7d,0x171d,0xe04c,0xdeef,0x7fd0,0xef48,0xc82f,0x8949,0x679b,0x832,0x868f,0x251d,0xdf6f,0x4f09,0xe75,0x1b2c,0xde6b,0x905,0x730,0x96d8,0x3651,0xf6f3,0xc0fb,0x6341,0xed57,0x8dd3,0x2678,0x6f49,0x905d,0xb032,0xb8e5,0xb1a,0x160}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xeab0,0x5959,0x9779,0xc157,0x9e09,0xabc0,0x4987,0xb2b2,0xc465,0x41cb,0x28f3,0xc425,0x800a,0x52b5,0xa793,0x9aa2,0x1b4d,0xba7d,0x78e3,0x1043,0x62b,0x48fe,0x67a5,0x6ac1,0xe1fd,0x7734,0x5d61,0xee4d,0x12cc,0xa978,0xab4c,0x69cb,0x4efc,0x85fa,0xaf33,0xb815,0xc3}}}}, {{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xa413,0x8161,0xeff,0x6861,0x5ea,0x270d,0x8480,0xa589,0xeec9,0xcd5e,0xd511,0x3613,0xcbc9,0xbce9,0x774e,0xcd73,0x995a,0x8ed7,0x85cb,0x7b1a,0x65de,0xdeb6,0xb79b,0xc9b2,0xb14f,0xa86d,0x5252,0xd55e,0xc3aa,0xe5c2,0xbcf9,0x5e0f,0xc2d7,0x85ad,0x2b48,0xf16e,0x19b}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xaca7,0x27cb,0x6c4d,0x26d2,0x6482,0xe8e2,0x86e9,0x8b0c,0x1a78,0x661a,0xc896,0xc309,0x821c,0xd519,0x8817,0x16fe,0x2a3,0x981d,0xe260,0x5d0a,0x9a98,0xba16,0xf254,0x2965,0x151c,0x5992,0x2fe3,0xed8f,0xb2e9,0xb9ec,0xa33a,0x707e,0x5632,0xab55,0x5022,0x2e86,0xba3}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x5e4b,0xf857,0x15d3,0x5f39,0x327d,0xf49d,0x1206,0x32f8,0x32d,0xb830,0x8d08,0x57bb,0xa63d,0xa3fa,0x31ce,0x4bb0,0xd817,0xa181,0x6a23,0x1056,0xb43c,0xa42d,0xbca9,0x8adf,0xc97c,0x67b5,0xa69b,0xd3e0,0xa039,0x82e0,0xeb8,0x5ea5,0xdad8,0x4264,0xd763,0x1170,0x1a1}}}, {{._mp_alloc = 0, ._mp_size = 36, ._mp_d = (mp_limb_t[]) {0xcc3e,0x8cf3,0xfe19,0x1ea2,0x1b31,0x311a,0x85ef,0x82ef,0xdd53,0xda45,0x6b4c,0x49a7,0xfd6a,0x628d,0x85f1,0x960d,0xf0e9,0x5e12,0xcf21,0xa0a0,0x169d,0x1240,0xb63d,0xee8f,0xaf8c,0x12da,0x802c,0x6d14,0x7027,0x4a5b,0xff7f,0xd76f,0x8a9,0x6a95,0xff1c,0xe83d}}}}, {{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x8c7c,0xdf9f,0xdbf8,0xc3e2,0x3533,0x3b5d,0x39e9,0x89df,0x3202,0x7b1e,0x8bc5,0x1c24,0xaa1e,0x134d,0x2977,0xee57,0x80b9,0xd74d,0x232a,0x3467,0x152a,0xc9cd,0x2f03,0xd2c5,0xd887,0xcda9,0x65cc,0x3bf9,0xc690,0x88d,0x9016,0xdb95,0xec1a,0x413a,0x8321,0xdd30,0xb06}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xa1b5,0x7a8,0xea2c,0xa0c6,0xcd82,0xb62,0x552f,0x3704,0x971c,0x9d32,0x3bd,0xf498,0x437a,0x3951,0xdcd8,0xf06b,0x9fa,0x45a5,0x86b2,0x67e0,0xc4c7,0x1eee,0x3cdb,0x355e,0x81f1,0xe8cf,0x4a43,0x7cf0,0x7,0xc4e0,0xbafa,0x8122,0xbb7,0x1923,0x31a5,0x2830,0xb62}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xf9ad,0x5f9b,0x6ce9,0xbb0,0xd99f,0xfa8,0xd044,0x233e,0x87e8,0xca4e,0x4a37,0x56fc,0x9dca,0x9c29,0x5919,0xe176,0x49f2,0x703,0xedb8,0x79d4,0xee35,0xf59f,0x2616,0xd452,0x2b73,0xbe73,0x59c,0x7105,0xc02b,0x9deb,0xf129,0xd05f,0xa69,0x9aaa,0x470c,0xa988,0x270}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x4602,0x9ac2,0xb4ca,0x4dc4,0x4c48,0x81e5,0x7e0a,0x8b5b,0x89b7,0x7e46,0xfa8f,0x54fa,0x905e,0x76fc,0xb466,0xa68,0x6ea2,0xec93,0x1752,0x3208,0xa003,0x320,0xd8bc,0x5fbe,0x3e0a,0x73c0,0xf878,0x363a,0x288e,0xc25e,0xb565,0xdaee,0x880a,0x793b,0x4f3b,0x6e37,0x92}}}}, {{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xff8b,0xb5e4,0x8708,0x298b,0x12b1,0xd78a,0x68cb,0xb760,0xb439,0x8235,0x4322,0x2444,0xbb26,0x144c,0xcdf3,0x67ce,0x4c77,0x789a,0xe4a0,0xecfa,0x9e7e,0x8163,0x96c,0x510f,0xa6dc,0xf672,0x8152,0x5b7c,0xa824,0x40c,0x1d30,0xaca1,0xc8de,0xda4b,0x75d1,0x17,0xa58}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x653,0xa064,0x9316,0xf44f,0x2660,0xf057,0x96f1,0x46bd,0x1261,0x8b14,0x468e,0xf557,0x4bed,0x4122,0xb58d,0x5aa5,0x981f,0xe023,0x31d,0xfe62,0x8acd,0xcd7c,0xd36d,0xebeb,0x1ff9,0x9212,0xeb42,0xdfcb,0xe015,0xa9d4,0xd889,0xf67,0xdc26,0xc0dd,0xc1fb,0x9018,0xa92}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x2683,0x1be8,0x4e,0x726f,0x3a8e,0x1363,0x8be3,0x3615,0xd101,0x77c,0xd197,0x164c,0xf78f,0xc0d3,0xf727,0x2157,0x5ba,0x9e9a,0xf681,0x69b,0x22d2,0xe0e1,0x1365,0x95b4,0xd699,0x2f5,0xdbbc,0x128b,0x26e2,0xb9c0,0x70aa,0x8fb8,0x40ab,0x5332,0x47d,0xf722,0x869}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x1859,0xfa0e,0x2621,0x78e,0xf529,0x16d2,0xe3c9,0x9f06,0x270e,0x6009,0x11c1,0x8c90,0x834,0xe4d9,0xadfc,0xd285,0x44f7,0x5388,0xc81b,0x2125,0x5317,0xa60f,0x2030,0xe540,0x9003,0xf57a,0x2aec,0x9244,0x1dad,0x35eb,0x3059,0xa25d,0xeb83,0x7f9a,0x7f37,0x1326,0xab}}}}, {{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x51cf,0x1ba3,0x4b04,0xc8f6,0x8c4d,0xff4b,0x2a40,0x6373,0x9ea6,0x527b,0xd47d,0xd355,0x3853,0x5741,0x29f4,0x38af,0x63f2,0xf74c,0x2da0,0x7026,0x3eb0,0x919b,0xdd46,0xed7f,0xd1cc,0x77b2,0xe242,0x40d5,0x608,0x98c8,0x51ee,0xf53c,0xb922,0x5dc0,0x5511,0x9593,0xc7b}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xd97d,0xe417,0xffb1,0x8d90,0xc571,0xec9c,0xdb52,0x33e6,0xc948,0x4de5,0xbf2f,0x3606,0xf229,0x1c77,0x177f,0x1ac4,0xdc58,0x488c,0xfa54,0x719a,0x5631,0xe23b,0xe61e,0x2a89,0x74d4,0x4d8f,0x1523,0x3e45,0x795f,0x8e00,0x5908,0x500f,0xa5e4,0x855,0x48b,0x427f,0x499}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xaf26,0xfc2b,0x8ae9,0xaf9c,0x993e,0x7a4e,0x3c9e,0x4e7a,0x4ebb,0x86c9,0x8ee7,0xd207,0x47fa,0xc0a3,0x203a,0xc3e6,0x5d14,0xc454,0xad7c,0xc446,0x169f,0x33a5,0xdb17,0x258e,0x8a75,0x5c1d,0xcbbd,0x9258,0xa03d,0xe550,0x6c35,0x1f36,0x60b4,0xcef6,0xf035,0x2588,0x752}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xe61f,0xc679,0x7f0c,0x8f51,0xd98,0x988d,0xf692,0x7675,0x3bce,0x97d4,0x7e09,0x4afd,0xf391,0x1fec,0xca4c,0xe914,0xe97d,0xa29c,0xdffb,0x8c6b,0x47d0,0xeaae,0xd7e0,0x5766,0xfd7d,0xb1af,0xb885,0x5ef2,0x834,0x490e,0xe499,0xdb9b,0x779c,0x630e,0x8412,0x10ef,0x682}}}}, {{{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0xc63e,0x6fcf,0x6dfc,0xe1f1,0x9a99,0x9dae,0xd08f,0xf9ed,0x6625,0xe840,0xe45,0x343c,0xc9eb,0xf84c,0x9c0e,0x1539,0x3166,0x5f3a,0xa00,0xd64f,0xc716,0x4674,0x9444,0xc981,0x91fa,0xf17,0x2b56,0xc665,0x3368,0xa827,0xace4,0x5dae,0x6955,0xce61,0xc614,0xb68,0xc05}}}, {{._mp_alloc = 0, ._mp_size = 37, ._mp_d = (mp_limb_t[]) {0x50db,0x3d4,0x7516,0x5063,0x66c1,0x85b1,0x2a97,0x1b82,0x4b8e,0xce99,0x1de,0x7a4c,0xa1bd,0x1ca8,0xee6c,0x7835,0x84fd,0x22d2,0x4359,0xb3f0,0x6263,0x8f77,0x1e6d,0x9aaf,0xc0f8,0xf467,0x2521,0xbe78,0x3,0x6270,0x5d7d,0xc091,0x85db,0x8c91,0x18d2,0x1418,0x5b1}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2}}}, {{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0x5618,0x91a5,0xcb1,0xec10,0x5d13,0x966d,0x2570,0xdd22,0xbd4,0xdd08,0x2a09,0x3bbe,0x5f37,0xd115,0x4654,0x9e06,0x981d,0x14b8,0x39e7,0x8f5f,0xea39,0x3bac,0x3ec9,0x14f3}}}, {{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0xa05f,0xee14,0xb22,0x39f7,0xd1f8,0x2e3b,0x1510,0xe8a4,0xc434,0xe2b9,0xfc70,0xe01f,0xae2e,0x1049,0xa35,0x1f9f,0x966,0x2daa,0x4084,0x4931,0x6e9e,0x907d,0x9561,0x722}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0xa744,0xe0f6,0x4a03,0xd4bd,0xbe44,0xcb47,0x692f,0x814b,0x8ab1,0x6803,0x716f,0x7a91,0x771c,0x9d47,0x39c2,0x70e8,0x1dc1,0xdb8e,0x7444,0x6673,0xe706,0xc21,0x4594,0x353d}}}, {{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0x387,0xa498,0xa53d,0x37dd,0xd4e,0x78a0,0x4d99,0x48b9,0xbcf4,0xc524,0xbdca,0xc972,0x3bd5,0x51be,0xb971,0x6d73,0x9f69,0x3a0d,0x60c,0x4c09,0x4e4,0xb155,0xcf32,0x565e}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0x1b5d,0x8a51,0xdd5d,0x1483,0x3d75,0x8cbe,0x9d34,0x964,0x6d97,0x5409,0x3bb1,0x5e4e,0x9384,0x2ead,0x6dee,0x439d,0xcf8b,0x9c90,0xaf44,0x3f6f,0xf968,0x2120,0x1235,0x1663}}}}};
#elif 8*DIGIT_LEN == 32
const ec_basis_t BASIS_EVEN = {{{{0x22e6355134b7d255, 0xa7f7f4f4597d08dc, 0xb8eb0e50d5888eec, 0xed36a84e0c7f72ba, 0xb6ed1c0b46f3f28e, 0x282153a62f4d1b8}, {0xd57efea74410a787, 0xea4460d69d71d250, 0xb3d9ad4193397a46, 0x3124b5b93ff1a081, 0x45a800b0c82d3709, 0x24b0e60e1353c61}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x17df8f9d274de7f, 0x351632cce83ec8aa, 0x56e019deae8daf7e, 0x3da35b5dc1820a3b, 0xbb60de7d759b75b1, 0x2e81949d5d0a4d9}, {0xa4efe85f225c5804, 0x9cbd9fc32e16b4f8, 0xa8be541ed7c20bbc, 0xe057875bd571d902, 0x35f5baf03dab21ff, 0x3493d2784699545}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xb37f8fba3f4420f8, 0x8d48f1acb03706df, 0x5f5d4860530ffdbc, 0x3346cb7307f4e98e, 0xebbd3a151d8187ef, 0x14e3e664b5f52b0}, {0xdab91da8f4656795, 0xdbdcf3c3108cac88, 0x272d467ca27bde21, 0x147ed2cd9dc73cf0, 0x67421707fd5d4d50, 0x1c9f704aa559bda}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0xdb68fd6ab36028ee, 0xb67ecbd22b247e6d, 0x3ddb4a10bff4a0, 0x31eccf041ed4eabc, 0x6c93b74e3dbd1615, 0xece18a8a69c342}, {0x3ac922e0d53a3b4e, 0xaaa4c42158564daf, 0x1359d8744b831fce, 0x6f1eb5f50a893a70, 0x290b2fffdf9f083e, 0x56212fe48636bb}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xd64d88142398fc70, 0x8cd791e2b175b8ad, 0x8cf816a594e65996, 0xdc15534f4bbc3e, 0x2ebd5f0fca9cb695, 0x2677728640635e3}, {0x8e859814dd48f154, 0x400b48d3d3fb2e17, 0x9e315059bbc401a9, 0x26c24fc85c0a4034, 0x2095f2ade3a1cc0e, 0x789dae43794796}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x55c5c814e95ff9e, 0x624aa7502d08f66d, 0xfaef96a43369b1b5, 0x6bd0164a386601da, 0xc4624eccbcab4884, 0x10154ec03218312}, {0x4fbfbe9e5f4e4beb, 0x1392132cc9a7a298, 0x87bee2902df2694c, 0x2fd70dedc82c836c, 0xb969a66833ea4330, 0xac80d610eac86e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x4668fbf6837118e1, 0xe3f7541cde4ef86b, 0x6222f4709df362fa, 0xfff04e39c27d3eeb, 0x950a899ed78c3ac4, 0x325b141dae45991}, {0xdcd302b823c975d7, 0x52a74513892de655, 0x71698b3599387e45, 0x190b468017eb95b1, 0x8d1e5211978b6ff3, 0x29dc08516c36f88}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x29ebd3656c338c34, 0x2bfcf65c705b22cb, 0xc34d5916fff804ae, 0x936fa5577596f777, 0x88bc262ea82314b1, 0x3cb841bc5ebf63f}, {0x1cd8d5a530a1914c, 0xaa47dc464b7fe567, 0xb2f6cfba20a12302, 0xbdec2a7f8ed5764a, 0x8d8caffb90342f7, 0x2bc600de26023a0}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xef90e01f16ec0b, 0xbe3b230014cdc8ca, 0x11d8068a91007c6a, 0xef60fc7a468eb46, 0x6ebe6eb84394eacc, 0xb27d0c0b9cc97e}, {0xfb44d144ffbc728, 0x35fed8aabb632fb0, 0xbce80df03ad44c4c, 0x94e973d6d612e79a, 0xf90b559988365d91, 0x1d8b3925fcef701}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xcf4ab671f3581670, 0xfe5bec2006b84191, 0x9c86c3022ef1c1dc, 0xca2fd261142cadc9, 0x615c338c784391f1, 0x220d6a5b67dc16c}, {0x827228cb3c97f27d, 0x62e6cbb0680bb491, 0x595f79839679df49, 0xb532dbc517c50a6e, 0x307360426131c2a7, 0x36d0c506b0ee9bf}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xa40cf5606210efd5, 0xe2a74bde914816ea, 0x3eaded7bce47ee4e, 0x5c13b2fc6d3f0e6f, 0x7c3d8e9de2169375, 0x1ff7fd7dbf97c03}, {0xc35492b3b8cb43e2, 0x3101d6730b5f0690, 0x18bb5b95ff4732ad, 0xc910043b50554bb7, 0xe157f6abd14ab159, 0x136ee8f2b5d364c}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x52706bfd8763b0c3, 0xa42c185c8aff91f3, 0x787da4c24686d040, 0xb481c545c5d853a3, 0xeff30a78ada95338, 0x42de7d5615621e}, {0x9c57da37895bac33, 0x151877b2e03774e0, 0x932f17a8d669aae8, 0xce9262ee9efce8c9, 0x31226e5e998455ab, 0x208b93fdae6a791}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x4668fbf6837118e1, 0xe3f7541cde4ef86b, 0x6222f4709df362fa, 0xfff04e39c27d3eeb, 0x950a899ed78c3ac4, 0x325b141dae45991}, {0xdcd302b823c975d7, 0x52a74513892de655, 0x71698b3599387e45, 0x190b468017eb95b1, 0x8d1e5211978b6ff3, 0x29dc08516c36f88}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x29ebd3656c338c34, 0x2bfcf65c705b22cb, 0xc34d5916fff804ae, 0x936fa5577596f777, 0x88bc262ea82314b1, 0x3cb841bc5ebf63f}, {0x1cd8d5a530a1914c, 0xaa47dc464b7fe567, 0xb2f6cfba20a12302, 0xbdec2a7f8ed5764a, 0x8d8caffb90342f7, 0x2bc600de26023a0}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xef90e01f16ec0b, 0xbe3b230014cdc8ca, 0x11d8068a91007c6a, 0xef60fc7a468eb46, 0x6ebe6eb84394eacc, 0xb27d0c0b9cc97e}, {0xfb44d144ffbc728, 0x35fed8aabb632fb0, 0xbce80df03ad44c4c, 0x94e973d6d612e79a, 0xf90b559988365d91, 0x1d8b3925fcef701}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0xbeb1828b6321b73b, 0x9b4ae33a51041b28, 0xb8eb52edec901458, 0x489f36189fbe40e2, 0x23b52fca75d8097a, 0x1fa77728850feb5}, {0x3c3181fa7491fa00, 0x90610c1cf4b08f0d, 0xc9a4e86e25007aa9, 0x5b71c5a9406460c7, 0xcc87c9e89706249a, 0x35c54d562e37057}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x4660c57fe78f45e1, 0x52046157833495f6, 0x3a046cb27e641924, 0x3d296d4fc4f86278, 0x53eab7beef1edc6b, 0x180b61ad44039e5}, {0x70a4e03a435a0a94, 0xf4446a3f06c86e3b, 0x83264cf9fe7b13b9, 0xded3fc0f6172e26, 0xc0ad14de5a337e74, 0x27cb876a7e80950}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xa6cb0f8ced1d3798, 0x7d2277dc624ef354, 0xed0fc61f3fcf514, 0x80d1db25eb940c0d, 0x5e0af0166b2e4f8f, 0x3a9eaad39577c49}, {0xe3b7bc63514ee9b3, 0x541be4cbdbf35256, 0x4ce81454a8ce471e, 0x97b4f5aca2ab4e14, 0x5e3ef1b3acf3da56, 0x1be60bf81366891}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x5f9bf9ad,0xbb06ce9,0xfa8d99f,0x233ed044,0xca4e87e8,0x56fc4a37,0x9c299dca,0xe1765919,0x70349f2,0x79d4edb8,0xf59fee35,0xd4522616,0xbe732b73,0x7105059c,0x9debc02b,0xd05ff129,0x9aaa0a69,0xa988470c,0x270}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x9ac24602,0x4dc4b4ca,0x81e54c48,0x8b5b7e0a,0x7e4689b7,0x54fafa8f,0x76fc905e,0xa68b466,0xec936ea2,0x32081752,0x320a003,0x5fbed8bc,0x73c03e0a,0x363af878,0xc25e288e,0xdaeeb565,0x793b880a,0x6e374f3b,0x92}}}}, {{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xb5e4ff8b,0x298b8708,0xd78a12b1,0xb76068cb,0x8235b439,0x24444322,0x144cbb26,0x67cecdf3,0x789a4c77,0xecfae4a0,0x81639e7e,0x510f096c,0xf672a6dc,0x5b7c8152,0x40ca824,0xaca11d30,0xda4bc8de,0x1775d1,0xa58}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xa0640653,0xf44f9316,0xf0572660,0x46bd96f1,0x8b141261,0xf557468e,0x41224bed,0x5aa5b58d,0xe023981f,0xfe62031d,0xcd7c8acd,0xebebd36d,0x92121ff9,0xdfcbeb42,0xa9d4e015,0xf67d889,0xc0dddc26,0x9018c1fb,0xa92}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xd8345359,0xd92d93b2,0x171d9b7d,0xdeefe04c,0xef487fd0,0x8949c82f,0x832679b,0x251d868f,0x4f09df6f,0x1b2c0e75,0x905de6b,0x96d80730,0xf6f33651,0x6341c0fb,0x8dd3ed57,0x6f492678,0xb032905d,0xb1ab8e5,0x160}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x5959eab0,0xc1579779,0xabc09e09,0xb2b24987,0x41cbc465,0xc42528f3,0x52b5800a,0x9aa2a793,0xba7d1b4d,0x104378e3,0x48fe062b,0x6ac167a5,0x7734e1fd,0xee4d5d61,0xa97812cc,0x69cbab4c,0x85fa4efc,0xb815af33,0xc3}}}}, {{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x8161a413,0x68610eff,0x270d05ea,0xa5898480,0xcd5eeec9,0x3613d511,0xbce9cbc9,0xcd73774e,0x8ed7995a,0x7b1a85cb,0xdeb665de,0xc9b2b79b,0xa86db14f,0xd55e5252,0xe5c2c3aa,0x5e0fbcf9,0x85adc2d7,0xf16e2b48,0x19b}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x27cbaca7,0x26d26c4d,0xe8e26482,0x8b0c86e9,0x661a1a78,0xc309c896,0xd519821c,0x16fe8817,0x981d02a3,0x5d0ae260,0xba169a98,0x2965f254,0x5992151c,0xed8f2fe3,0xb9ecb2e9,0x707ea33a,0xab555632,0x2e865022,0xba3}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xf8575e4b,0x5f3915d3,0xf49d327d,0x32f81206,0xb830032d,0x57bb8d08,0xa3faa63d,0x4bb031ce,0xa181d817,0x10566a23,0xa42db43c,0x8adfbca9,0x67b5c97c,0xd3e0a69b,0x82e0a039,0x5ea50eb8,0x4264dad8,0x1170d763,0x1a1}}}, {{._mp_alloc = 0, ._mp_size = 18, ._mp_d = (mp_limb_t[]) {0x8cf3cc3e,0x1ea2fe19,0x311a1b31,0x82ef85ef,0xda45dd53,0x49a76b4c,0x628dfd6a,0x960d85f1,0x5e12f0e9,0xa0a0cf21,0x1240169d,0xee8fb63d,0x12daaf8c,0x6d14802c,0x4a5b7027,0xd76fff7f,0x6a9508a9,0xe83dff1c}}}}, {{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xdf9f8c7c,0xc3e2dbf8,0x3b5d3533,0x89df39e9,0x7b1e3202,0x1c248bc5,0x134daa1e,0xee572977,0xd74d80b9,0x3467232a,0xc9cd152a,0xd2c52f03,0xcda9d887,0x3bf965cc,0x88dc690,0xdb959016,0x413aec1a,0xdd308321,0xb06}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x7a8a1b5,0xa0c6ea2c,0xb62cd82,0x3704552f,0x9d32971c,0xf49803bd,0x3951437a,0xf06bdcd8,0x45a509fa,0x67e086b2,0x1eeec4c7,0x355e3cdb,0xe8cf81f1,0x7cf04a43,0xc4e00007,0x8122bafa,0x19230bb7,0x283031a5,0xb62}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x5f9bf9ad,0xbb06ce9,0xfa8d99f,0x233ed044,0xca4e87e8,0x56fc4a37,0x9c299dca,0xe1765919,0x70349f2,0x79d4edb8,0xf59fee35,0xd4522616,0xbe732b73,0x7105059c,0x9debc02b,0xd05ff129,0x9aaa0a69,0xa988470c,0x270}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x9ac24602,0x4dc4b4ca,0x81e54c48,0x8b5b7e0a,0x7e4689b7,0x54fafa8f,0x76fc905e,0xa68b466,0xec936ea2,0x32081752,0x320a003,0x5fbed8bc,0x73c03e0a,0x363af878,0xc25e288e,0xdaeeb565,0x793b880a,0x6e374f3b,0x92}}}}, {{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xb5e4ff8b,0x298b8708,0xd78a12b1,0xb76068cb,0x8235b439,0x24444322,0x144cbb26,0x67cecdf3,0x789a4c77,0xecfae4a0,0x81639e7e,0x510f096c,0xf672a6dc,0x5b7c8152,0x40ca824,0xaca11d30,0xda4bc8de,0x1775d1,0xa58}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xa0640653,0xf44f9316,0xf0572660,0x46bd96f1,0x8b141261,0xf557468e,0x41224bed,0x5aa5b58d,0xe023981f,0xfe62031d,0xcd7c8acd,0xebebd36d,0x92121ff9,0xdfcbeb42,0xa9d4e015,0xf67d889,0xc0dddc26,0x9018c1fb,0xa92}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x1be82683,0x726f004e,0x13633a8e,0x36158be3,0x77cd101,0x164cd197,0xc0d3f78f,0x2157f727,0x9e9a05ba,0x69bf681,0xe0e122d2,0x95b41365,0x2f5d699,0x128bdbbc,0xb9c026e2,0x8fb870aa,0x533240ab,0xf722047d,0x869}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xfa0e1859,0x78e2621,0x16d2f529,0x9f06e3c9,0x6009270e,0x8c9011c1,0xe4d90834,0xd285adfc,0x538844f7,0x2125c81b,0xa60f5317,0xe5402030,0xf57a9003,0x92442aec,0x35eb1dad,0xa25d3059,0x7f9aeb83,0x13267f37,0xab}}}}, {{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x1ba351cf,0xc8f64b04,0xff4b8c4d,0x63732a40,0x527b9ea6,0xd355d47d,0x57413853,0x38af29f4,0xf74c63f2,0x70262da0,0x919b3eb0,0xed7fdd46,0x77b2d1cc,0x40d5e242,0x98c80608,0xf53c51ee,0x5dc0b922,0x95935511,0xc7b}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xe417d97d,0x8d90ffb1,0xec9cc571,0x33e6db52,0x4de5c948,0x3606bf2f,0x1c77f229,0x1ac4177f,0x488cdc58,0x719afa54,0xe23b5631,0x2a89e61e,0x4d8f74d4,0x3e451523,0x8e00795f,0x500f5908,0x855a5e4,0x427f048b,0x499}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xfc2baf26,0xaf9c8ae9,0x7a4e993e,0x4e7a3c9e,0x86c94ebb,0xd2078ee7,0xc0a347fa,0xc3e6203a,0xc4545d14,0xc446ad7c,0x33a5169f,0x258edb17,0x5c1d8a75,0x9258cbbd,0xe550a03d,0x1f366c35,0xcef660b4,0x2588f035,0x752}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xc679e61f,0x8f517f0c,0x988d0d98,0x7675f692,0x97d43bce,0x4afd7e09,0x1fecf391,0xe914ca4c,0xa29ce97d,0x8c6bdffb,0xeaae47d0,0x5766d7e0,0xb1affd7d,0x5ef2b885,0x490e0834,0xdb9be499,0x630e779c,0x10ef8412,0x682}}}}, {{{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x6fcfc63e,0xe1f16dfc,0x9dae9a99,0xf9edd08f,0xe8406625,0x343c0e45,0xf84cc9eb,0x15399c0e,0x5f3a3166,0xd64f0a00,0x4674c716,0xc9819444,0xf1791fa,0xc6652b56,0xa8273368,0x5daeace4,0xce616955,0xb68c614,0xc05}}}, {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0x3d450db,0x50637516,0x85b166c1,0x1b822a97,0xce994b8e,0x7a4c01de,0x1ca8a1bd,0x7835ee6c,0x22d284fd,0xb3f04359,0x8f776263,0x9aaf1e6d,0xf467c0f8,0xbe782521,0x62700003,0xc0915d7d,0x8c9185db,0x141818d2,0x5b1}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2}}}, {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0x91a55618,0xec100cb1,0x966d5d13,0xdd222570,0xdd080bd4,0x3bbe2a09,0xd1155f37,0x9e064654,0x14b8981d,0x8f5f39e7,0x3bacea39,0x14f33ec9}}}, {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0xee14a05f,0x39f70b22,0x2e3bd1f8,0xe8a41510,0xe2b9c434,0xe01ffc70,0x1049ae2e,0x1f9f0a35,0x2daa0966,0x49314084,0x907d6e9e,0x7229561}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0xe0f6a744,0xd4bd4a03,0xcb47be44,0x814b692f,0x68038ab1,0x7a91716f,0x9d47771c,0x70e839c2,0xdb8e1dc1,0x66737444,0xc21e706,0x353d4594}}}, {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0xa4980387,0x37dda53d,0x78a00d4e,0x48b94d99,0xc524bcf4,0xc972bdca,0x51be3bd5,0x6d73b971,0x3a0d9f69,0x4c09060c,0xb15504e4,0x565ecf32}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0x8a511b5d,0x1483dd5d,0x8cbe3d75,0x9649d34,0x54096d97,0x5e4e3bb1,0x2ead9384,0x439d6dee,0x9c90cf8b,0x3f6faf44,0x2120f968,0x16631235}}}}};
#elif 8*DIGIT_LEN == 64
const ec_basis_t BASIS_EVEN = {{{{0x22e6355134b7d255, 0xa7f7f4f4597d08dc, 0xb8eb0e50d5888eec, 0xed36a84e0c7f72ba, 0xb6ed1c0b46f3f28e, 0x282153a62f4d1b8}, {0xd57efea74410a787, 0xea4460d69d71d250, 0xb3d9ad4193397a46, 0x3124b5b93ff1a081, 0x45a800b0c82d3709, 0x24b0e60e1353c61}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x17df8f9d274de7f, 0x351632cce83ec8aa, 0x56e019deae8daf7e, 0x3da35b5dc1820a3b, 0xbb60de7d759b75b1, 0x2e81949d5d0a4d9}, {0xa4efe85f225c5804, 0x9cbd9fc32e16b4f8, 0xa8be541ed7c20bbc, 0xe057875bd571d902, 0x35f5baf03dab21ff, 0x3493d2784699545}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xb37f8fba3f4420f8, 0x8d48f1acb03706df, 0x5f5d4860530ffdbc, 0x3346cb7307f4e98e, 0xebbd3a151d8187ef, 0x14e3e664b5f52b0}, {0xdab91da8f4656795, 0xdbdcf3c3108cac88, 0x272d467ca27bde21, 0x147ed2cd9dc73cf0, 0x67421707fd5d4d50, 0x1c9f704aa559bda}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0xdb68fd6ab36028ee, 0xb67ecbd22b247e6d, 0x3ddb4a10bff4a0, 0x31eccf041ed4eabc, 0x6c93b74e3dbd1615, 0xece18a8a69c342}, {0x3ac922e0d53a3b4e, 0xaaa4c42158564daf, 0x1359d8744b831fce, 0x6f1eb5f50a893a70, 0x290b2fffdf9f083e, 0x56212fe48636bb}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xd64d88142398fc70, 0x8cd791e2b175b8ad, 0x8cf816a594e65996, 0xdc15534f4bbc3e, 0x2ebd5f0fca9cb695, 0x2677728640635e3}, {0x8e859814dd48f154, 0x400b48d3d3fb2e17, 0x9e315059bbc401a9, 0x26c24fc85c0a4034, 0x2095f2ade3a1cc0e, 0x789dae43794796}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x55c5c814e95ff9e, 0x624aa7502d08f66d, 0xfaef96a43369b1b5, 0x6bd0164a386601da, 0xc4624eccbcab4884, 0x10154ec03218312}, {0x4fbfbe9e5f4e4beb, 0x1392132cc9a7a298, 0x87bee2902df2694c, 0x2fd70dedc82c836c, 0xb969a66833ea4330, 0xac80d610eac86e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x4668fbf6837118e1, 0xe3f7541cde4ef86b, 0x6222f4709df362fa, 0xfff04e39c27d3eeb, 0x950a899ed78c3ac4, 0x325b141dae45991}, {0xdcd302b823c975d7, 0x52a74513892de655, 0x71698b3599387e45, 0x190b468017eb95b1, 0x8d1e5211978b6ff3, 0x29dc08516c36f88}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x29ebd3656c338c34, 0x2bfcf65c705b22cb, 0xc34d5916fff804ae, 0x936fa5577596f777, 0x88bc262ea82314b1, 0x3cb841bc5ebf63f}, {0x1cd8d5a530a1914c, 0xaa47dc464b7fe567, 0xb2f6cfba20a12302, 0xbdec2a7f8ed5764a, 0x8d8caffb90342f7, 0x2bc600de26023a0}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xef90e01f16ec0b, 0xbe3b230014cdc8ca, 0x11d8068a91007c6a, 0xef60fc7a468eb46, 0x6ebe6eb84394eacc, 0xb27d0c0b9cc97e}, {0xfb44d144ffbc728, 0x35fed8aabb632fb0, 0xbce80df03ad44c4c, 0x94e973d6d612e79a, 0xf90b559988365d91, 0x1d8b3925fcef701}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xcf4ab671f3581670, 0xfe5bec2006b84191, 0x9c86c3022ef1c1dc, 0xca2fd261142cadc9, 0x615c338c784391f1, 0x220d6a5b67dc16c}, {0x827228cb3c97f27d, 0x62e6cbb0680bb491, 0x595f79839679df49, 0xb532dbc517c50a6e, 0x307360426131c2a7, 0x36d0c506b0ee9bf}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xa40cf5606210efd5, 0xe2a74bde914816ea, 0x3eaded7bce47ee4e, 0x5c13b2fc6d3f0e6f, 0x7c3d8e9de2169375, 0x1ff7fd7dbf97c03}, {0xc35492b3b8cb43e2, 0x3101d6730b5f0690, 0x18bb5b95ff4732ad, 0xc910043b50554bb7, 0xe157f6abd14ab159, 0x136ee8f2b5d364c}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x52706bfd8763b0c3, 0xa42c185c8aff91f3, 0x787da4c24686d040, 0xb481c545c5d853a3, 0xeff30a78ada95338, 0x42de7d5615621e}, {0x9c57da37895bac33, 0x151877b2e03774e0, 0x932f17a8d669aae8, 0xce9262ee9efce8c9, 0x31226e5e998455ab, 0x208b93fdae6a791}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x4668fbf6837118e1, 0xe3f7541cde4ef86b, 0x6222f4709df362fa, 0xfff04e39c27d3eeb, 0x950a899ed78c3ac4, 0x325b141dae45991}, {0xdcd302b823c975d7, 0x52a74513892de655, 0x71698b3599387e45, 0x190b468017eb95b1, 0x8d1e5211978b6ff3, 0x29dc08516c36f88}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x29ebd3656c338c34, 0x2bfcf65c705b22cb, 0xc34d5916fff804ae, 0x936fa5577596f777, 0x88bc262ea82314b1, 0x3cb841bc5ebf63f}, {0x1cd8d5a530a1914c, 0xaa47dc464b7fe567, 0xb2f6cfba20a12302, 0xbdec2a7f8ed5764a, 0x8d8caffb90342f7, 0x2bc600de26023a0}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xef90e01f16ec0b, 0xbe3b230014cdc8ca, 0x11d8068a91007c6a, 0xef60fc7a468eb46, 0x6ebe6eb84394eacc, 0xb27d0c0b9cc97e}, {0xfb44d144ffbc728, 0x35fed8aabb632fb0, 0xbce80df03ad44c4c, 0x94e973d6d612e79a, 0xf90b559988365d91, 0x1d8b3925fcef701}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0xbeb1828b6321b73b, 0x9b4ae33a51041b28, 0xb8eb52edec901458, 0x489f36189fbe40e2, 0x23b52fca75d8097a, 0x1fa77728850feb5}, {0x3c3181fa7491fa00, 0x90610c1cf4b08f0d, 0xc9a4e86e25007aa9, 0x5b71c5a9406460c7, 0xcc87c9e89706249a, 0x35c54d562e37057}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x4660c57fe78f45e1, 0x52046157833495f6, 0x3a046cb27e641924, 0x3d296d4fc4f86278, 0x53eab7beef1edc6b, 0x180b61ad44039e5}, {0x70a4e03a435a0a94, 0xf4446a3f06c86e3b, 0x83264cf9fe7b13b9, 0xded3fc0f6172e26, 0xc0ad14de5a337e74, 0x27cb876a7e80950}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xa6cb0f8ced1d3798, 0x7d2277dc624ef354, 0xed0fc61f3fcf514, 0x80d1db25eb940c0d, 0x5e0af0166b2e4f8f, 0x3a9eaad39577c49}, {0xe3b7bc63514ee9b3, 0x541be4cbdbf35256, 0x4ce81454a8ce471e, 0x97b4f5aca2ab4e14, 0x5e3ef1b3acf3da56, 0x1be60bf81366891}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xbb06ce95f9bf9ad,0x233ed0440fa8d99f,0x56fc4a37ca4e87e8,0xe17659199c299dca,0x79d4edb8070349f2,0xd4522616f59fee35,0x7105059cbe732b73,0xd05ff1299debc02b,0xa988470c9aaa0a69,0x270}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x4dc4b4ca9ac24602,0x8b5b7e0a81e54c48,0x54fafa8f7e4689b7,0xa68b46676fc905e,0x32081752ec936ea2,0x5fbed8bc0320a003,0x363af87873c03e0a,0xdaeeb565c25e288e,0x6e374f3b793b880a,0x92}}}}, {{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x298b8708b5e4ff8b,0xb76068cbd78a12b1,0x244443228235b439,0x67cecdf3144cbb26,0xecfae4a0789a4c77,0x510f096c81639e7e,0x5b7c8152f672a6dc,0xaca11d30040ca824,0x1775d1da4bc8de,0xa58}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xf44f9316a0640653,0x46bd96f1f0572660,0xf557468e8b141261,0x5aa5b58d41224bed,0xfe62031de023981f,0xebebd36dcd7c8acd,0xdfcbeb4292121ff9,0xf67d889a9d4e015,0x9018c1fbc0dddc26,0xa92}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xd92d93b2d8345359,0xdeefe04c171d9b7d,0x8949c82fef487fd0,0x251d868f0832679b,0x1b2c0e754f09df6f,0x96d807300905de6b,0x6341c0fbf6f33651,0x6f4926788dd3ed57,0xb1ab8e5b032905d,0x160}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xc15797795959eab0,0xb2b24987abc09e09,0xc42528f341cbc465,0x9aa2a79352b5800a,0x104378e3ba7d1b4d,0x6ac167a548fe062b,0xee4d5d617734e1fd,0x69cbab4ca97812cc,0xb815af3385fa4efc,0xc3}}}}, {{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x68610eff8161a413,0xa5898480270d05ea,0x3613d511cd5eeec9,0xcd73774ebce9cbc9,0x7b1a85cb8ed7995a,0xc9b2b79bdeb665de,0xd55e5252a86db14f,0x5e0fbcf9e5c2c3aa,0xf16e2b4885adc2d7,0x19b}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x26d26c4d27cbaca7,0x8b0c86e9e8e26482,0xc309c896661a1a78,0x16fe8817d519821c,0x5d0ae260981d02a3,0x2965f254ba169a98,0xed8f2fe35992151c,0x707ea33ab9ecb2e9,0x2e865022ab555632,0xba3}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x5f3915d3f8575e4b,0x32f81206f49d327d,0x57bb8d08b830032d,0x4bb031cea3faa63d,0x10566a23a181d817,0x8adfbca9a42db43c,0xd3e0a69b67b5c97c,0x5ea50eb882e0a039,0x1170d7634264dad8,0x1a1}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x1ea2fe198cf3cc3e,0x82ef85ef311a1b31,0x49a76b4cda45dd53,0x960d85f1628dfd6a,0xa0a0cf215e12f0e9,0xee8fb63d1240169d,0x6d14802c12daaf8c,0xd76fff7f4a5b7027,0xe83dff1c6a9508a9}}}}, {{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xc3e2dbf8df9f8c7c,0x89df39e93b5d3533,0x1c248bc57b1e3202,0xee572977134daa1e,0x3467232ad74d80b9,0xd2c52f03c9cd152a,0x3bf965cccda9d887,0xdb959016088dc690,0xdd308321413aec1a,0xb06}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xa0c6ea2c07a8a1b5,0x3704552f0b62cd82,0xf49803bd9d32971c,0xf06bdcd83951437a,0x67e086b245a509fa,0x355e3cdb1eeec4c7,0x7cf04a43e8cf81f1,0x8122bafac4e00007,0x283031a519230bb7,0xb62}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xbb06ce95f9bf9ad,0x233ed0440fa8d99f,0x56fc4a37ca4e87e8,0xe17659199c299dca,0x79d4edb8070349f2,0xd4522616f59fee35,0x7105059cbe732b73,0xd05ff1299debc02b,0xa988470c9aaa0a69,0x270}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x4dc4b4ca9ac24602,0x8b5b7e0a81e54c48,0x54fafa8f7e4689b7,0xa68b46676fc905e,0x32081752ec936ea2,0x5fbed8bc0320a003,0x363af87873c03e0a,0xdaeeb565c25e288e,0x6e374f3b793b880a,0x92}}}}, {{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x298b8708b5e4ff8b,0xb76068cbd78a12b1,0x244443228235b439,0x67cecdf3144cbb26,0xecfae4a0789a4c77,0x510f096c81639e7e,0x5b7c8152f672a6dc,0xaca11d30040ca824,0x1775d1da4bc8de,0xa58}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xf44f9316a0640653,0x46bd96f1f0572660,0xf557468e8b141261,0x5aa5b58d41224bed,0xfe62031de023981f,0xebebd36dcd7c8acd,0xdfcbeb4292121ff9,0xf67d889a9d4e015,0x9018c1fbc0dddc26,0xa92}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x726f004e1be82683,0x36158be313633a8e,0x164cd197077cd101,0x2157f727c0d3f78f,0x69bf6819e9a05ba,0x95b41365e0e122d2,0x128bdbbc02f5d699,0x8fb870aab9c026e2,0xf722047d533240ab,0x869}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x78e2621fa0e1859,0x9f06e3c916d2f529,0x8c9011c16009270e,0xd285adfce4d90834,0x2125c81b538844f7,0xe5402030a60f5317,0x92442aecf57a9003,0xa25d305935eb1dad,0x13267f377f9aeb83,0xab}}}}, {{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xc8f64b041ba351cf,0x63732a40ff4b8c4d,0xd355d47d527b9ea6,0x38af29f457413853,0x70262da0f74c63f2,0xed7fdd46919b3eb0,0x40d5e24277b2d1cc,0xf53c51ee98c80608,0x959355115dc0b922,0xc7b}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x8d90ffb1e417d97d,0x33e6db52ec9cc571,0x3606bf2f4de5c948,0x1ac4177f1c77f229,0x719afa54488cdc58,0x2a89e61ee23b5631,0x3e4515234d8f74d4,0x500f59088e00795f,0x427f048b0855a5e4,0x499}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xaf9c8ae9fc2baf26,0x4e7a3c9e7a4e993e,0xd2078ee786c94ebb,0xc3e6203ac0a347fa,0xc446ad7cc4545d14,0x258edb1733a5169f,0x9258cbbd5c1d8a75,0x1f366c35e550a03d,0x2588f035cef660b4,0x752}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x8f517f0cc679e61f,0x7675f692988d0d98,0x4afd7e0997d43bce,0xe914ca4c1fecf391,0x8c6bdffba29ce97d,0x5766d7e0eaae47d0,0x5ef2b885b1affd7d,0xdb9be499490e0834,0x10ef8412630e779c,0x682}}}}, {{{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xe1f16dfc6fcfc63e,0xf9edd08f9dae9a99,0x343c0e45e8406625,0x15399c0ef84cc9eb,0xd64f0a005f3a3166,0xc98194444674c716,0xc6652b560f1791fa,0x5daeace4a8273368,0xb68c614ce616955,0xc05}}}, {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x5063751603d450db,0x1b822a9785b166c1,0x7a4c01dece994b8e,0x7835ee6c1ca8a1bd,0xb3f0435922d284fd,0x9aaf1e6d8f776263,0xbe782521f467c0f8,0xc0915d7d62700003,0x141818d28c9185db,0x5b1}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2}}}, {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xec100cb191a55618,0xdd222570966d5d13,0x3bbe2a09dd080bd4,0x9e064654d1155f37,0x8f5f39e714b8981d,0x14f33ec93bacea39}}}, {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0x39f70b22ee14a05f,0xe8a415102e3bd1f8,0xe01ffc70e2b9c434,0x1f9f0a351049ae2e,0x493140842daa0966,0x7229561907d6e9e}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xd4bd4a03e0f6a744,0x814b692fcb47be44,0x7a91716f68038ab1,0x70e839c29d47771c,0x66737444db8e1dc1,0x353d45940c21e706}}}, {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0x37dda53da4980387,0x48b94d9978a00d4e,0xc972bdcac524bcf4,0x6d73b97151be3bd5,0x4c09060c3a0d9f69,0x565ecf32b15504e4}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0x1483dd5d8a511b5d,0x9649d348cbe3d75,0x5e4e3bb154096d97,0x439d6dee2ead9384,0x3f6faf449c90cf8b,0x166312352120f968}}}}};
#endif

View File

@@ -0,0 +1,69 @@
#ifndef EC_PARAMS_H
#define EC_PARAMS_H
#define POWER_OF_2 97
#define POWER_OF_3 68
static digit_t TWOpF[NWORDS_ORDER] = {0x0, 0x200000000, 0x0, 0x0, 0x0, 0x0}; // 2^g
static digit_t TWOpFm1[NWORDS_ORDER] = {0x0, 0x100000000, 0x0, 0x0, 0x0, 0x0}; // 2^(g-1)
static digit_t THREEpE[NWORDS_ORDER] = {0x003B3FCEF3103289, 0x0, 0x0, 0x0, 0x0, 0x0}; // 3^e
static digit_t THREEpF[NWORDS_ORDER] = {0x58DE83727119CD51, 0x00000DB6794B8C65, 0x0, 0x0, 0x0, 0x0}; // 3^f
static digit_t THREEpFdiv2[NWORDS_ORDER] = {0xAC6F41B9388CE6A8, 0x000006DB3CA5C632, 0x0, 0x0, 0x0, 0x0}; // Floor(3^f/2)
#define scaled 1 // unscaled (0) or scaled (1) remainder tree approach
#define gap 83
#define P_LEN 7
#define M_LEN 21
static digit_t p_plus_minus_bitlength[P_LEN + M_LEN] =
{ 2, 3, 4, 6, 8, 9, 10, 3, 4, 7, 7, 8, 8, 8, 8, 9, 10, 11, 12,
12, 13, 13, 13, 13, 14, 15, 16, 16};
static digit_t p_cofactor_for_2f[5] = {
0x9AB752342630BA61,
0x48575BA8E3917B34,
0x22E8856B32DE1705,
0x558438D163573025,
0x0000000001EFB777
};
#define P_COFACTOR_FOR_2F_BITLENGTH 281
static digit_t p_cofactor_for_3g[5] = {
0x0000000000000000,
0x97E5302200000000,
0xEE54EDDA13CFE081,
0xC6BFE309D9209F3F,
0x000000000000484C
};
#define P_COFACTOR_FOR_3G_BITLENGTH 271
static digit_t p_cofactor_for_6fg[3] = {
0x09E7F040CBF29811,
0xEC904F9FF72A76ED,
0x00002426635FF184
};
#define P_COFACTOR_FOR_6FG_BITLENGTH 174
static int STRATEGY4[47] = { 19, 12, 7, 4, 2, 1, 1, 1, 2, 1, 1, 3, 2, 1, 1, 1, 1, 5, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 7, 5, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 1, 1, 1, 1};
static int sizeI[P_LEN+M_LEN] = {
0, 1, 2, 3, 6, 14, 14, 1, 3, 5, 5, 7, 8, 8, 10, 11, 14, 19, 26, 30, 35, 40, 44, 44, 52, 88, 114, 114
};
static int sizeJ[P_LEN+M_LEN] = {
0, 1, 1, 3, 6, 9, 13, 1, 1, 4, 5, 6, 7, 7, 6, 10, 10, 16, 23, 28, 32, 32, 32, 33, 45, 76, 87, 104
};
static int sizeK[P_LEN+M_LEN] = {
1, 1, 1, 5, 6, 2, 16, 0, 0, 4, 6, 2, 4, 7, 0, 1, 4, 6, 0, 5, 18, 13, 30, 2, 18, 12, 3, 8
};
#define sI_max 114
#define sJ_max 104
#define sK_max 47
#define ceil_log_sI_max 7
#define ceil_log_sJ_max 7
#endif

View File

@@ -0,0 +1,14 @@
#define FP2_ENCODED_BYTES 96
#define EC_CURVE_ENCODED_BYTES 96
#define EC_POINT_ENCODED_BYTES 96
#define EC_BASIS_ENCODED_BYTES 288
#define CHAIN_LENGTH 10
#define QUAT_ALG_ELEM_ENCODED_BITS 588
#define QUAT_ALG_ELEM_ENCODED_BYTES 74
#define ID2ISO_LONG_TWO_ISOG_ENCODED_BYTES 1940
#define ZIP_CHAIN_LEN 16
#define ID2ISO_COMPRESSED_LONG_TWO_ISOG_ZIP_CHAIN_BYTES 13
#define ID2ISO_COMPRESSED_LONG_TWO_ISOG_BYTES 209
#define SIGNATURE_LEN 263
#define PUBLICKEY_BYTES 96
#define SECRETKEY_BYTES 1138

View File

@@ -0,0 +1,19 @@
#include <intbig.h>
#include <ec.h>
#include <quaternion.h>
extern const ec_basis_t BASIS_EVEN;
extern const ec_basis_t BASIS_ODD_PLUS;
extern const ec_basis_t BASIS_ODD_MINUS;
extern const ec_basis_t BASIS_COMMITMENT_PLUS;
extern const ec_basis_t BASIS_COMMITMENT_MINUS;
extern const ec_basis_t BASIS_CHALLENGE;
extern const ec_curve_t CURVE_E0;
extern const ec_point_t CURVE_E0_A24;
extern const ibz_mat_2x2_t ACTION_I;
extern const ibz_mat_2x2_t ACTION_J;
extern const ibz_mat_2x2_t ACTION_K;
extern const ibz_mat_2x2_t ACTION_GEN2;
extern const ibz_mat_2x2_t ACTION_GEN3;
extern const ibz_mat_2x2_t ACTION_GEN4;
extern const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN;
extern const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO;

View File

@@ -0,0 +1,4 @@
#define NWORDS_FIELD 6
#define NWORDS_ORDER 6
#define BITS 384
#define LOG2P 9

View File

@@ -0,0 +1,27 @@
#include <intbig.h>
#define KLPT_equiv_bound_coeff 7
#define KLPT_equiv_num_iter 50625
#define KLPT_primality_num_iter 32
#define KLPT_signing_klpt_length 1552
#define KLPT_signing_num_gamma_trial 64
#define KLPT_gamma_exponent_interval_size 0
#define KLPT_gamma_exponent_center_shift 15
#define KLPT_repres_num_gamma_trial 32768
#define KLPT_signing_number_strong_approx 5108
#define KLPT_random_prime_attempts 64
#define KLPT_secret_key_prime_size 95
#define KLPT_keygen_length 970
#define KLPT_keygen_num_gamma_trial 64
#define KLPT_eichler_smallnorm_bitsize 165
#define KLPT_keygen_number_strong_approx 3929
#define KLPT_eichler_number_mu_norm 12
#define KLPT_eichler_strong_approx_log_margin 2
#define KLPT_eichler_num_equiv_ideal 38
#define KLPT_eichler_number_strong_approx 3780
#define SQISIGN_response_attempts 64
#define SQISIGN_random_length 0
#define SQISIGN_signing_total_length 1552
#define SQISIGN_signing_length 16
#define SQISIGN_keygen_length 10
extern const short SMALL_PRIMES_1MOD4[11];
extern const ibz_t PROD_SMALL_PRIMES_3MOD4;

View File

@@ -0,0 +1,7 @@
#include <intbig.h>
#include <quaternion.h>
#define NUM_ALTERNATE_EXTREMAL_ORDERS 7
extern const quat_alg_t QUATALG_PINFTY;
extern const quat_order_t MAXORD_O0;
extern const quat_p_extremal_maximal_order_t STANDARD_EXTREMAL_ORDER;
extern const quat_p_extremal_maximal_order_t ALTERNATE_EXTREMAL_ORDERS[7];

View File

@@ -0,0 +1,24 @@
#include <intbig.h>
#define TORSION_2POWER_BYTES 13
#define TORSION_3POWER_BYTES 14
#define TORSION_23POWER_BYTES 26
extern const uint64_t TORSION_PLUS_EVEN_POWER;
extern const uint64_t TORSION_ODD_PRIMES[28];
extern const uint64_t TORSION_ODD_POWERS[28];
extern const uint64_t TORSION_PLUS_ODD_PRIMES[7];
extern const size_t TORSION_PLUS_ODD_POWERS[7];
extern const uint64_t TORSION_MINUS_ODD_PRIMES[21];
extern const size_t TORSION_MINUS_ODD_POWERS[21];
extern const size_t DEGREE_COMMITMENT_POWERS[28];
extern const ibz_t CHARACTERISTIC;
extern const ibz_t TORSION_ODD;
extern const ibz_t TORSION_ODD_PRIMEPOWERS[28];
extern const ibz_t TORSION_ODD_PLUS;
extern const ibz_t TORSION_ODD_MINUS;
extern const ibz_t TORSION_PLUS_2POWER;
extern const ibz_t TORSION_PLUS_3POWER;
extern const ibz_t TORSION_PLUS_23POWER;
extern const ibz_t DEGREE_COMMITMENT;
extern const ibz_t DEGREE_COMMITMENT_PLUS;
extern const ibz_t DEGREE_COMMITMENT_MINUS;
extern const ibz_t DEGREE_CHALLENGE;

View File

@@ -0,0 +1,14 @@
#include <stddef.h>
#include <stdint.h>
#include <klpt_constants.h>
#if 0
#elif 8*DIGIT_LEN == 16
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x173b,0x80bd,0xa9d7,0xa185}}};
#elif 8*DIGIT_LEN == 32
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x80bd173b,0xa185a9d7}}};
#elif 8*DIGIT_LEN == 64
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xa185a9d780bd173b}}};
#endif

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
lvl = 3
p = 0x3df6eeeab0871a2c6ae604a45d10ad665bc2e0a90aeb751c722f669356ea4684c6174c1ffffffffffffffffffffffff
B = 48000

View File

@@ -0,0 +1,68 @@
#include <stddef.h>
#include <stdint.h>
#include <torsion_constants.h>
#if 0
#elif 8*DIGIT_LEN == 16
const uint64_t TORSION_PLUS_EVEN_POWER = 0x61;
const uint64_t TORSION_ODD_PRIMES[28] = {0x3, 0x7, 0xb, 0x2f, 0x9d, 0x1fd, 0x2f9, 0x5, 0xd, 0x59, 0x71, 0xad, 0xe9, 0xef, 0xf1, 0x1bb, 0x239, 0x4cd, 0x959, 0xd2b, 0x11a5, 0x141b, 0x163d, 0x16b5, 0x24b5, 0x6899, 0x9aff, 0xb951};
const uint64_t TORSION_ODD_POWERS[28] = {0x44, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[7] = {0x3, 0x7, 0xb, 0x2f, 0x9d, 0x1fd, 0x2f9};
const size_t TORSION_PLUS_ODD_POWERS[7] = {0x44, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4};
const uint64_t TORSION_MINUS_ODD_PRIMES[21] = {0x5, 0xd, 0x59, 0x71, 0xad, 0xe9, 0xef, 0xf1, 0x1bb, 0x239, 0x4cd, 0x959, 0xd2b, 0x11a5, 0x141b, 0x163d, 0x16b5, 0x24b5, 0x6899, 0x9aff, 0xb951};
const size_t TORSION_MINUS_ODD_POWERS[21] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[28] = {0x0, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x74c1,0x4c61,0xa468,0x356e,0xf669,0xc722,0xb751,0x90ae,0x2e0a,0x65bc,0xad6,0x45d1,0x604a,0xc6ae,0x71a2,0xab08,0x6eee,0x3df}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 31, ._mp_d = (mp_limb_t[]) {0x339b,0xb4fe,0x4d24,0x2ab1,0xc863,0x2629,0xf4dc,0x6ea5,0x753,0x1e0e,0x7109,0xf393,0x786a,0xbc1b,0x3c81,0x618e,0xfcc2,0xe01e,0xa5b6,0xa842,0x786f,0xa868,0x5020,0xa3e0,0xe4d9,0xefe3,0xf347,0x2dc3,0x8484,0x9cd0,0x681}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[28] = {{{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xcd51,0x7119,0x8372,0x58de,0x8c65,0x794b,0xdb6}}}, {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x4821,0x3901,0x3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3931}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x7541,0x4a}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xd4d1,0x2436}}}, {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x2851,0xa0d7,0xf}}}, {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0xf561,0x1645,0x4e}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x71}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xad}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xe9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xef}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xf1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1bb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x239}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4cd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x959}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd2b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11a5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x141b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x163d}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x16b5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x24b5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x6899}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9aff}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xb951}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 18, ._mp_d = (mp_limb_t[]) {0xba61,0x2630,0x5234,0x9ab7,0x7b34,0xe391,0x5ba8,0x4857,0x1705,0x32de,0x856b,0x22e8,0x3025,0x6357,0x38d1,0x5584,0xb777,0x1ef}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 14, ._mp_d = (mp_limb_t[]) {0x77b,0xeffc,0x1f3,0x9185,0x14e6,0x6206,0x1598,0x97dd,0x54d7,0xf6ce,0xab08,0x9035,0x5c29,0x3}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x0,0x0,0x2}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xcd51,0x7119,0x8372,0x58de,0x8c65,0x794b,0xdb6}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x0,0x0,0x9aa2,0xe233,0x6e4,0xb1bd,0x18ca,0xf297,0x1b6c}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 24, ._mp_d = (mp_limb_t[]) {0x872b,0x2f73,0xdc9e,0x43e5,0x8784,0x5ec0,0x2835,0xe933,0xbdb4,0x5490,0x1a83,0x3cb,0xfec3,0x48dc,0xafb,0xf32d,0x47fe,0x6014,0xd35c,0xabe0,0xac24,0x65b7,0xd459,0x7976}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 11, ._mp_d = (mp_limb_t[]) {0x9811,0xcbf2,0xf040,0x9e7,0x76ed,0xf72a,0x4f9f,0xec90,0xf184,0x635f,0x2426}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 14, ._mp_d = (mp_limb_t[]) {0x77b,0xeffc,0x1f3,0x9185,0x14e6,0x6206,0x1598,0x97dd,0x54d7,0xf6ce,0xab08,0x9035,0x5c29,0x3}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x0,0x0,0x9aa2,0xe233,0x6e4,0xb1bd,0x18ca,0xf297,0x1b6c}}};
#elif 8*DIGIT_LEN == 32
const uint64_t TORSION_PLUS_EVEN_POWER = 0x61;
const uint64_t TORSION_ODD_PRIMES[28] = {0x3, 0x7, 0xb, 0x2f, 0x9d, 0x1fd, 0x2f9, 0x5, 0xd, 0x59, 0x71, 0xad, 0xe9, 0xef, 0xf1, 0x1bb, 0x239, 0x4cd, 0x959, 0xd2b, 0x11a5, 0x141b, 0x163d, 0x16b5, 0x24b5, 0x6899, 0x9aff, 0xb951};
const uint64_t TORSION_ODD_POWERS[28] = {0x44, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[7] = {0x3, 0x7, 0xb, 0x2f, 0x9d, 0x1fd, 0x2f9};
const size_t TORSION_PLUS_ODD_POWERS[7] = {0x44, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4};
const uint64_t TORSION_MINUS_ODD_PRIMES[21] = {0x5, 0xd, 0x59, 0x71, 0xad, 0xe9, 0xef, 0xf1, 0x1bb, 0x239, 0x4cd, 0x959, 0xd2b, 0x11a5, 0x141b, 0x163d, 0x16b5, 0x24b5, 0x6899, 0x9aff, 0xb951};
const size_t TORSION_MINUS_ODD_POWERS[21] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[28] = {0x0, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0xffffffff,0xffffffff,0xffffffff,0x4c6174c1,0x356ea468,0xc722f669,0x90aeb751,0x65bc2e0a,0x45d10ad6,0xc6ae604a,0xab0871a2,0x3df6eee}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 16, ._mp_d = (mp_limb_t[]) {0xb4fe339b,0x2ab14d24,0x2629c863,0x6ea5f4dc,0x1e0e0753,0xf3937109,0xbc1b786a,0x618e3c81,0xe01efcc2,0xa842a5b6,0xa868786f,0xa3e05020,0xefe3e4d9,0x2dc3f347,0x9cd08484,0x681}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[28] = {{{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x7119cd51,0x58de8372,0x794b8c65,0xdb6}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x39014821,0x3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3931}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4a7541}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2436d4d1}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xa0d72851,0xf}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x1645f561,0x4e}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x71}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xad}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xe9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xef}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xf1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1bb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x239}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4cd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x959}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd2b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11a5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x141b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x163d}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x16b5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x24b5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x6899}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9aff}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xb951}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x2630ba61,0x9ab75234,0xe3917b34,0x48575ba8,0x32de1705,0x22e8856b,0x63573025,0x558438d1,0x1efb777}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xeffc077b,0x918501f3,0x620614e6,0x97dd1598,0xf6ce54d7,0x9035ab08,0x35c29}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x2}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x7119cd51,0x58de8372,0x794b8c65,0xdb6}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0xe2339aa2,0xb1bd06e4,0xf29718ca,0x1b6c}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0x2f73872b,0x43e5dc9e,0x5ec08784,0xe9332835,0x5490bdb4,0x3cb1a83,0x48dcfec3,0xf32d0afb,0x601447fe,0xabe0d35c,0x65b7ac24,0x7976d459}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xcbf29811,0x9e7f040,0xf72a76ed,0xec904f9f,0x635ff184,0x2426}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0xeffc077b,0x918501f3,0x620614e6,0x97dd1598,0xf6ce54d7,0x9035ab08,0x35c29}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 7, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0xe2339aa2,0xb1bd06e4,0xf29718ca,0x1b6c}}};
#elif 8*DIGIT_LEN == 64
const uint64_t TORSION_PLUS_EVEN_POWER = 0x61;
const uint64_t TORSION_ODD_PRIMES[28] = {0x3, 0x7, 0xb, 0x2f, 0x9d, 0x1fd, 0x2f9, 0x5, 0xd, 0x59, 0x71, 0xad, 0xe9, 0xef, 0xf1, 0x1bb, 0x239, 0x4cd, 0x959, 0xd2b, 0x11a5, 0x141b, 0x163d, 0x16b5, 0x24b5, 0x6899, 0x9aff, 0xb951};
const uint64_t TORSION_ODD_POWERS[28] = {0x44, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[7] = {0x3, 0x7, 0xb, 0x2f, 0x9d, 0x1fd, 0x2f9};
const size_t TORSION_PLUS_ODD_POWERS[7] = {0x44, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4};
const uint64_t TORSION_MINUS_ODD_PRIMES[21] = {0x5, 0xd, 0x59, 0x71, 0xad, 0xe9, 0xef, 0xf1, 0x1bb, 0x239, 0x4cd, 0x959, 0xd2b, 0x11a5, 0x141b, 0x163d, 0x16b5, 0x24b5, 0x6899, 0x9aff, 0xb951};
const size_t TORSION_MINUS_ODD_POWERS[21] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[28] = {0x0, 0xc, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xffffffffffffffff,0x4c6174c1ffffffff,0xc722f669356ea468,0x65bc2e0a90aeb751,0xc6ae604a45d10ad6,0x3df6eeeab0871a2}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0x2ab14d24b4fe339b,0x6ea5f4dc2629c863,0xf39371091e0e0753,0x618e3c81bc1b786a,0xa842a5b6e01efcc2,0xa3e05020a868786f,0x2dc3f347efe3e4d9,0x6819cd08484}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[28] = {{{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x58de83727119cd51,0xdb6794b8c65}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x339014821}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3931}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4a7541}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2436d4d1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xfa0d72851}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4e1645f561}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x71}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xad}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xe9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xef}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xf1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1bb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x239}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4cd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x959}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xd2b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11a5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x141b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x163d}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x16b5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x24b5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x6899}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9aff}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xb951}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x9ab752342630ba61,0x48575ba8e3917b34,0x22e8856b32de1705,0x558438d163573025,0x1efb777}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x918501f3effc077b,0x97dd1598620614e6,0x9035ab08f6ce54d7,0x35c29}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x0,0x200000000}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x58de83727119cd51,0xdb6794b8c65}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x0,0xe2339aa200000000,0xf29718cab1bd06e4,0x1b6c}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0x43e5dc9e2f73872b,0xe93328355ec08784,0x3cb1a835490bdb4,0xf32d0afb48dcfec3,0xabe0d35c601447fe,0x7976d45965b7ac24}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x9e7f040cbf29811,0xec904f9ff72a76ed,0x2426635ff184}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x918501f3effc077b,0x97dd1598620614e6,0x9035ab08f6ce54d7,0x35c29}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x0,0xe2339aa200000000,0xf29718cab1bd06e4,0x1b6c}}};
#endif

View File

@@ -0,0 +1,49 @@
set(SOURCE_FILES_PRECOMP_${SVARIANT_UPPER}_REF
torsion_constants.c
quaternion_data.c
endomorphism_action.c
klpt_constants.c
)
add_library(${LIB_PRECOMP_${SVARIANT_UPPER}} ${SOURCE_FILES_PRECOMP_${SVARIANT_UPPER}_REF})
target_include_directories(${LIB_PRECOMP_${SVARIANT_UPPER}} PRIVATE common ${INC_INTBIG} ${INC_QUATERNION} ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src/ec/ref/include ${PROJECT_SOURCE_DIR}/src/ec/ref/${SVARIANT_LOWER}/include ${PROJECT_SOURCE_DIR}/src/gf/ref/${SVARIANT_LOWER}/include ${INC_PRECOMP_${SVARIANT_UPPER}} ${INC_COMMON})
target_compile_options(${LIB_PRECOMP_${SVARIANT_UPPER}} PRIVATE ${C_OPT_FLAGS})
add_custom_command(
OUTPUT
"${CMAKE_CURRENT_SOURCE_DIR}/torsion_constants.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/torsion_constants.h"
"${CMAKE_CURRENT_SOURCE_DIR}/include/klpt_constants.h"
"${CMAKE_CURRENT_SOURCE_DIR}/klpt_constants.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/encoded_sizes.h"
"${PROJECT_SOURCE_DIR}/src/nistapi/lvl5/api.h"
"${CMAKE_CURRENT_SOURCE_DIR}/quaternion_data.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/quaternion_data.h"
"${CMAKE_CURRENT_SOURCE_DIR}/endomorphism_action.c"
"${CMAKE_CURRENT_SOURCE_DIR}/include/endomorphism_action.h"
COMMAND
echo "Please run manually: make precomp"
)
find_program(SAGEMATH sage)
add_custom_target(precomp_${SVARIANT_LOWER}
DEPENDS
"./sqisign_parameters.txt"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_torsion_constants.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_klpt_constants.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_sizes.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_quaternion_data.sage"
COMMAND
"${SAGEMATH}" "${PROJECT_SOURCE_DIR}/scripts/precompute_endomorphism_action.sage"
WORKING_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}"
)
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
set_target_properties(precomp_${SVARIANT_LOWER} PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(precomp precomp_lvl5)

View File

@@ -0,0 +1,56 @@
#include <stddef.h>
#include <stdint.h>
#include <endomorphism_action.h>
#if 0
#elif 8*DIGIT_LEN == 16
const ec_basis_t BASIS_EVEN = {{{{0xf893b25235cd05, 0xcfad0c31816a3767, 0x24d6633b878c9852, 0x947ef3f6bd7e54a9, 0xcfcc6931acebc9ec, 0x7a593c6f226d62a7, 0xd773da3276d4514e, 0xf93f309a42dec}, {0x70e6b5b84d87aff3, 0x3b39ea4b8a9af50f, 0x33bb72fc45f05294, 0x1103f3d679fb626a, 0x29e23daba686e722, 0xd7683a594c898767, 0x41c4ad3db823bae1, 0x13f1daa2e21221}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xac16948532220971, 0x5652f704391431a5, 0xca5ee11424c4943d, 0xaa2208832540971a, 0x9e289f9c846e5c2b, 0xde48d5cd32bd5fe2, 0x913b3efa3bc42565, 0xd203dedb14213}, {0x5872c77992dd67c0, 0xb937a740922a8754, 0x21f7d1669ef949f, 0x2a7139b6c8587d0f, 0xf8bab24328aa27ab, 0xdab9bd3b2ddeec79, 0xe83b475f203bcb65, 0x556741a934ed3}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x90f4d4d80ba9ed72, 0xc8b9a440304ca99d, 0xc943b3a8997d4b88, 0xf08d352edc87530f, 0x767ca098b77d7071, 0x50dba761679c1732, 0x545a298536db6db9, 0x1381accb5f9aff}, {0x97233d48b02e6714, 0x684847c5bc2333e7, 0x18886606aeba8b01, 0xe4d42f848dafb6fc, 0xcc8ac9374d922260, 0x63189d0ed97c756, 0xa21cc3b155e35e31, 0x17400333e40769}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0xcde42ca0952857f6, 0x43986ee6663ef6cd, 0x55871379b845a923, 0x76ed1adf6ebef960, 0xabc4b150fc745f1e, 0x1c8a9c2defeb0f13, 0x13dd17be34fd733, 0x19e43fe41e4c43}, {0x2fa1833df935bc09, 0x69f359ab51c26ad9, 0xf9586cab92e541d6, 0x7362de7c9a12a54, 0xf971e28525d978bc, 0xf9e36a9529d0f3bd, 0xaea48e8b461db588, 0x1c33797cdc407}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x89c16fec8e55f16c, 0x1ff4d48fd451c2bb, 0x7b18fb54214c6532, 0x9ef491c4f579c67e, 0x38cd883c7d0cd40e, 0x499dc1361f2d123, 0x1335e051324fdbc7, 0xfd4fddbdc2a7f}, {0xcb3f9f71c926dc70, 0xebc2bb04385445c8, 0x6fd7a4eaca478a40, 0x151e3f61abfba2cb, 0x761770fecf1ee8c0, 0xd021aa20f5cd88a9, 0xbfcf8539dcdfb928, 0x18506735ab454e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x2df9cd51f27fb63e, 0x70ba06f5979446db, 0xa3fbb7300b16af8d, 0x992c1287f9a1c577, 0xb243e4491d37450e, 0x8473713e201019e0, 0xef9c23305e454581, 0x67b9998e13889}, {0x452150d05e768c9b, 0x4fe2b493696f8226, 0xac671e6158fedc93, 0x670fe96577281a7c, 0xa28c4be3e9ad4931, 0x6f20e70a714aae4b, 0x9890ecbc08f30c2e, 0x24a2c3ff722e18}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x2d2d051047dbd624, 0xfca1b15a916f7be5, 0x441312cd63f16c3f, 0xff7438fdce0ea446, 0x9fdef5936357fab, 0xf9ae02a9421f5416, 0xf7b77ef02bd1c1f8, 0x16f3f63378f96e}, {0x407ce7ffebc92b8e, 0x55fe79acf73aa929, 0x3337fb9216805495, 0xf6db0b7b43176f92, 0x853ee17ab74bf23d, 0xec5cbc949d4b0709, 0xce952df77dfd072f, 0xb16ebf531bef1}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x230916c16a0947e7, 0xa5a77aa3652d437b, 0x945736cf18a280b2, 0xe714d31d874572f1, 0x41bfcb5db198a4ac, 0x33c4ca4686e96f44, 0xe393b5d625debb73, 0x13895d37996b33}, {0xada606e483b73739, 0xe88daed540f3341d, 0xf398a06307ae9e8e, 0x61c2dfd85ef3c1a5, 0xbd29fb1cf683401c, 0x9aae565349a44142, 0x87a7c3de59a75f0d, 0x24c83660611a31}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x102024e8a598a5e8, 0x2bc941882c5f9245, 0xd6d60580934ea556, 0x86a4552d3207e718, 0x96eee147b2e294b5, 0x3ab66e6e93801f2e, 0xc8a390dff6441c41, 0x86407d5d6eb31}, {0xbd273dcfdc4cc333, 0x739eb9e099d67c56, 0x72a7fb0c255bdc52, 0x478eeb66fd200a09, 0x18965b28ca1ee442, 0xafff9738826e71d0, 0xa5a3e52397324a99, 0x22814353549863}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xf74e278739139769, 0x58be58577063e414, 0x7eb0edc56149472a, 0xcca10962fd516fae, 0x1ff09b1f54235f02, 0xfaba3bd39b494a4e, 0x59131f688c981aa3, 0x1d51b125134e7b}, {0x65f0988abfc680f0, 0xa7ec54e82f4f2ab4, 0x9cf1b55adef48a73, 0xcd7037d25eae0ef2, 0xf92fd0cacb35869a, 0x4afc0821a671bcfa, 0x2d0ff9a442d5b9a3, 0x2478f31e1b0ea8}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x357c1914bd227f58, 0x8c0d19f6290630f6, 0x49b100de6a80c2b8, 0xa1d365344bbb92d1, 0x20457092ad863380, 0x8274b2b3309427b, 0x57f899ef3140dadd, 0x25503c1a2afc85}, {0x85cd3fa621493a3d, 0x92741aa3b1184149, 0x57dc1c77e580e8ac, 0xd58459bf1d974197, 0x7a88578d886499ce, 0x22ca10e6b3805ca4, 0x2762f95867f32794, 0x1f3dac32b57131}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x2f94ba52e8516cfd, 0xc0cc95a65ef5d3f0, 0x78cd1286af1a549, 0xc58dfb5ca45bda4f, 0xfcb50d3ddcf80ec3, 0x90c191d252c72d27, 0x33d25fd46c7f1402, 0x1c30b1fd3aa2f7}, {0x2a5802b9b8b9188f, 0xeb15e1196bf95ce6, 0x8667c8dd3375a95d, 0x6c5e7827fd12c65d, 0x7b22fdd30e62d493, 0xc59204eeb4f57f61, 0x4c18ee49e098a97f, 0x230ac44ef70718}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x2d2d051047dbd624, 0xfca1b15a916f7be5, 0x441312cd63f16c3f, 0xff7438fdce0ea446, 0x9fdef5936357fab, 0xf9ae02a9421f5416, 0xf7b77ef02bd1c1f8, 0x16f3f63378f96e}, {0x407ce7ffebc92b8e, 0x55fe79acf73aa929, 0x3337fb9216805495, 0xf6db0b7b43176f92, 0x853ee17ab74bf23d, 0xec5cbc949d4b0709, 0xce952df77dfd072f, 0xb16ebf531bef1}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x230916c16a0947e7, 0xa5a77aa3652d437b, 0x945736cf18a280b2, 0xe714d31d874572f1, 0x41bfcb5db198a4ac, 0x33c4ca4686e96f44, 0xe393b5d625debb73, 0x13895d37996b33}, {0xada606e483b73739, 0xe88daed540f3341d, 0xf398a06307ae9e8e, 0x61c2dfd85ef3c1a5, 0xbd29fb1cf683401c, 0x9aae565349a44142, 0x87a7c3de59a75f0d, 0x24c83660611a31}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x102024e8a598a5e8, 0x2bc941882c5f9245, 0xd6d60580934ea556, 0x86a4552d3207e718, 0x96eee147b2e294b5, 0x3ab66e6e93801f2e, 0xc8a390dff6441c41, 0x86407d5d6eb31}, {0xbd273dcfdc4cc333, 0x739eb9e099d67c56, 0x72a7fb0c255bdc52, 0x478eeb66fd200a09, 0x18965b28ca1ee442, 0xafff9738826e71d0, 0xa5a3e52397324a99, 0x22814353549863}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0x6e2338651dd6b809, 0xa0b4a74a516bc856, 0xcef4dc03ae64bc, 0x7e04105e61ad1ccc, 0x824a280776a0a61a, 0xb0cbb7066de4598f, 0x91147e22289f3e7c, 0x1159e486ae42c7}, {0x4ad227aedc9e33c9, 0xe3050d4ccb8cd5e6, 0x859f12c8125c3c76, 0xc70299649231184f, 0xde2bae7b1651dfd, 0x38ae5d76b98a0bf5, 0x4afcb9cdd51c75ac, 0x1cd37f9c7ba50e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x9712f28d07df37f6, 0x3c0fdc3f6b148b77, 0x498753d83c208925, 0x3e9d6e57123afc04, 0xff41fe276d7b38de, 0x6fd059cabd88b549, 0x206a33c3360330d5, 0x5b66cd2ad497f}, {0x9b6c484b0169169b, 0x6854e01c5c87805c, 0x3217830c5fa9e618, 0x26b5dc3839eb347d, 0xc1b369290ec7c6b1, 0x7a2f3702ffd2460d, 0x2a17887c3a6da2f1, 0x16971eee1d9a05}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x6274b50ea5c661fa, 0xe3c3462c17e5a676, 0x73863c6c6e3e939d, 0x36adea15c2e668ab, 0x20ea8297e2acacbb, 0x720c5bd322a623a1, 0xa914186e4ebaa9a2, 0x4e9c355009afd}, {0x8dbb2dc3278a80f0, 0x9c6baecf247fbe32, 0x2fca5dddae71c5fd, 0x6e944e9e7de384cd, 0xeef1669c4da7aede, 0x6fb68320ff68c3a7, 0x9150f158b68d6cdb, 0x22c905c30fedc8}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x822e,0xa4c8,0x4610,0x5a8b,0x2415,0xfeac,0x27bd,0xb1f5,0x1e46,0xb5f,0x52cf,0xf527,0x53e,0x2406,0x8456,0x58a3,0x55b0,0x54e8,0x90e1,0x5e13,0x3229,0x4390,0x8aba,0x2806,0xb85f,0xfabd,0xf21c,0x5c49,0x2802,0x1c51,0x64aa,0x7530,0x8d3f,0x229a,0x2de7,0x3aab,0xfa6,0x4f85,0xca7b,0x5c65,0x1198,0xaa3,0x4a56,0xcad6,0xa026,0xe372,0xd9e3,0x99a0,0x1ab2,0x38}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x257b,0x88f,0xfa56,0x95aa,0xf879,0x9e34,0x5ab5,0xfea2,0x4f0b,0x7758,0x41d9,0x1edc,0x2b25,0x4ef,0x23a0,0xedeb,0xfe6f,0x9288,0x8fed,0xb5ee,0xb32c,0x240b,0x753d,0x9ce5,0x5aeb,0xdeca,0x191,0xa317,0xf4e6,0x2c6f,0x6fed,0xf7f0,0xfb81,0xa76f,0xcb2f,0x21c4,0x5d27,0x5125,0xb7ae,0x7953,0x3ff5,0x9b6c,0x21c2,0x6861,0x4476,0xcc4d,0xcfe,0x75eb,0x10dc,0x68}}}}, {{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x9ac1,0x5782,0xe01b,0x8f27,0x73fc,0x2e55,0x613d,0x3632,0xba61,0x3dc1,0xcfeb,0x7133,0x4a27,0xd9f8,0xd3ae,0xd0f,0x6ce5,0xa488,0x75cd,0xfecc,0x50d3,0x3560,0x5752,0x8933,0x5c00,0x3c5b,0x583d,0x303f,0x69c5,0x3a5c,0xd22,0x4af1,0x52a1,0x3fb9,0x797b,0xcc3b,0xc5ff,0x2557,0x8699,0x562d,0x2e84,0x4437,0xc1f7,0xe16d,0x17b6,0xeed8,0x6dda,0x75d9,0x7954,0x38}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x7dd2,0x5b37,0xb9ef,0xa574,0xdbea,0x153,0xd842,0x4e0a,0xe1b9,0xbd26,0x3743,0x35e3,0x1d37,0xb434,0x9134,0xcdd8,0x1fe9,0x2753,0xf73c,0x7d67,0x92d,0xbb80,0x7f34,0xd0e,0x96a0,0x9889,0x4088,0xd457,0x238f,0xa756,0xb8b0,0x294b,0x4357,0x8b14,0xf093,0xa16b,0xa910,0x8b65,0x8a58,0xf9c,0xcdcf,0xe3db,0x3f9e,0xc7e2,0xe1a,0x1fe6,0xfd20,0x5411,0x475,0xb8}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x53e2,0xb9aa,0x7cd,0xfbce,0x1786,0x909,0xcbe1,0x91b7,0x6c2f,0x3100,0x8ce2,0x6711,0xfad9,0xcb2,0x320d,0x1698,0x9936,0xbcd1,0xf50d,0x2ce4,0xd029,0xc55c,0xa859,0x4872,0x7c20,0xf3ac,0x11d9,0xe67c,0xf3e,0x8965,0x8b84,0x3900,0x4281,0x5674,0x8d53,0x6101,0x31a5,0xbf38,0xcf4d,0x4e17,0x5651,0x1d6d,0x5c60,0x48a,0xde9,0xf8e2,0x6a63,0x88ca,0xc38e,0x36}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xc805,0x885a,0xd41e,0xacd,0x15f1,0x3188,0x690b,0x64a4,0x8291,0xed45,0xa35d,0xed6f,0x1b45,0x37f3,0x1f5,0xfb40,0x48fe,0x3599,0x7340,0xd12e,0xa8a8,0x9fb7,0x22b4,0x9977,0xb379,0x8172,0x574c,0x6ff6,0x2c45,0x589e,0x1bd2,0x3868,0x24e6,0x8eaf,0x4af3,0xad81,0x3d8b,0x9011,0x1195,0xe06,0x8bd4,0xc1ee,0xcbad,0x3653,0x3365,0x35d7,0x4728,0x51e5,0xdce,0x5b}}}}, {{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xd419,0xdb92,0xdb57,0xe34b,0x69cd,0xbc6e,0x768a,0x8c63,0xf85c,0x1fca,0xd738,0x293,0xf4fb,0xe1bb,0x3f5d,0xa950,0x9c75,0x17e1,0x3f25,0x1832,0x1847,0x6a78,0x1768,0xd9e3,0xedf6,0x6f05,0x6bdc,0x5e0f,0x8dbd,0xdb9f,0xfc08,0x669b,0xbbbe,0x8b9e,0xfd0d,0x6942,0xdc1c,0x29a6,0x401e,0xcca4,0x8a3e,0x9ee2,0x9a7d,0x23a0,0x239f,0x448e,0xb7b5,0x716b,0x9da3,0x2b}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xac1e,0x4655,0xf832,0x431,0xe879,0xf6f6,0x341e,0x6e48,0x93d0,0x9785,0xfd30,0xc3f8,0x279c,0xcb87,0xe37d,0xfe3,0xdc64,0xbf69,0x930f,0xae96,0x6b2d,0x39b3,0x6195,0xeca2,0xd2de,0x9f9a,0x20cb,0x4a25,0x3c53,0x3a42,0x91d6,0x657b,0x8e15,0x573a,0x9127,0x7b15,0x8711,0x1bb2,0x8586,0x1dea,0x8916,0xd111,0x2d94,0x8e2e,0xa058,0xa76,0x6ca0,0x64e8,0x5b99,0xb9}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x5b9f,0x25ee,0x122c,0xed15,0xbaee,0x4d2c,0x2a4b,0xf9df,0xddb0,0xa7de,0xbfc9,0xc687,0xa41,0x793a,0x5337,0x94c7,0xf7e5,0xae44,0xf53d,0xd1be,0xc28d,0x16b8,0x25e0,0x18d9,0xef55,0x7fc1,0xf8dd,0xa414,0x867e,0x69b6,0xa158,0xd472,0x8197,0xac11,0x1d8e,0xbba1,0xa476,0x3a0f,0x698b,0x14a7,0xed3f,0xabd3,0xea8,0xa036,0xf3df,0x828a,0xc3f,0x32d0,0x2cb8,0xc9}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x8350,0x5396,0xc5bc,0xf2ef,0xddf2,0xb7eb,0x8199,0x9019,0x2bc2,0xaad8,0xc8cc,0x783d,0x2106,0xb3ac,0xee4d,0x933d,0xe79,0xd197,0x6276,0x72e,0x94e2,0xda67,0x2fdb,0x6857,0x58d0,0x5bb8,0x5564,0x8a78,0xfdab,0x5b1a,0xfd2d,0xeb82,0x524e,0x3b70,0x22e5,0x4f48,0x78bf,0x3823,0x3b77,0x3874,0xac01,0xba36,0xd345,0xcd62,0xe28d,0xcf00,0xa286,0x6fe7,0x4eab,0x31}}}}, {{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x62e4,0x1b04,0xae30,0x7650,0xf5e0,0x65cf,0x1fcc,0x8486,0xe766,0x1861,0xae85,0x1df5,0x87e,0xcd2f,0xaf4c,0x4e45,0xf712,0xf583,0x8287,0xb4a3,0x473,0xd091,0x2015,0xe441,0x437c,0xe472,0x9b77,0x3adf,0x5de5,0xd627,0xb1d5,0x5f80,0x910,0x5175,0x69d0,0x7af3,0x4a2,0x5348,0x140e,0x1f3a,0x57c0,0xc9e2,0x532,0xeda6,0x93a9,0x55ee,0x1001,0xd3ec,0xfd1a,0xd5}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xa461,0xda11,0xedd3,0x12ea,0x4511,0xb2d3,0xd5b4,0x620,0x224f,0x20a7,0xca49,0x6482,0x1834,0x5f00,0xc253,0x91b4,0x7db4,0xcdf6,0x92df,0x9bc,0x78c9,0xe857,0xe40e,0x1c3b,0x5faa,0x1385,0x39c8,0x8c8c,0xc513,0x59f0,0x7c02,0xca09,0x4efe,0x19d,0xec,0x2076,0x1440,0xa0db,0xeb48,0x575a,0xf228,0x42aa,0x7b4c,0xf282,0xba61,0x80cd,0xcac4,0xbae2,0xf26f,0x26}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x822e,0xa4c8,0x4610,0x5a8b,0x2415,0xfeac,0x27bd,0xb1f5,0x1e46,0xb5f,0x52cf,0xf527,0x53e,0x2406,0x8456,0x58a3,0x55b0,0x54e8,0x90e1,0x5e13,0x3229,0x4390,0x8aba,0x2806,0xb85f,0xfabd,0xf21c,0x5c49,0x2802,0x1c51,0x64aa,0x7530,0x8d3f,0x229a,0x2de7,0x3aab,0xfa6,0x4f85,0xca7b,0x5c65,0x1198,0xaa3,0x4a56,0xcad6,0xa026,0xe372,0xd9e3,0x99a0,0x1ab2,0x38}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x257b,0x88f,0xfa56,0x95aa,0xf879,0x9e34,0x5ab5,0xfea2,0x4f0b,0x7758,0x41d9,0x1edc,0x2b25,0x4ef,0x23a0,0xedeb,0xfe6f,0x9288,0x8fed,0xb5ee,0xb32c,0x240b,0x753d,0x9ce5,0x5aeb,0xdeca,0x191,0xa317,0xf4e6,0x2c6f,0x6fed,0xf7f0,0xfb81,0xa76f,0xcb2f,0x21c4,0x5d27,0x5125,0xb7ae,0x7953,0x3ff5,0x9b6c,0x21c2,0x6861,0x4476,0xcc4d,0xcfe,0x75eb,0x10dc,0x68}}}}, {{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x9ac1,0x5782,0xe01b,0x8f27,0x73fc,0x2e55,0x613d,0x3632,0xba61,0x3dc1,0xcfeb,0x7133,0x4a27,0xd9f8,0xd3ae,0xd0f,0x6ce5,0xa488,0x75cd,0xfecc,0x50d3,0x3560,0x5752,0x8933,0x5c00,0x3c5b,0x583d,0x303f,0x69c5,0x3a5c,0xd22,0x4af1,0x52a1,0x3fb9,0x797b,0xcc3b,0xc5ff,0x2557,0x8699,0x562d,0x2e84,0x4437,0xc1f7,0xe16d,0x17b6,0xeed8,0x6dda,0x75d9,0x7954,0x38}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x7dd2,0x5b37,0xb9ef,0xa574,0xdbea,0x153,0xd842,0x4e0a,0xe1b9,0xbd26,0x3743,0x35e3,0x1d37,0xb434,0x9134,0xcdd8,0x1fe9,0x2753,0xf73c,0x7d67,0x92d,0xbb80,0x7f34,0xd0e,0x96a0,0x9889,0x4088,0xd457,0x238f,0xa756,0xb8b0,0x294b,0x4357,0x8b14,0xf093,0xa16b,0xa910,0x8b65,0x8a58,0xf9c,0xcdcf,0xe3db,0x3f9e,0xc7e2,0xe1a,0x1fe6,0xfd20,0x5411,0x475,0xb8}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x6b08,0x2f39,0xa6ef,0x2b2c,0x9dce,0x83da,0x79cf,0x21d6,0xc53b,0x272,0xb4e2,0x43a1,0x9147,0x479,0xe5f7,0x4adb,0xb240,0x46fa,0x706,0xb33a,0x9ed4,0x83fe,0x1e81,0x52c7,0xc1bf,0x40d8,0x9b4e,0xb9b3,0xc169,0xb4ae,0x86c4,0xa656,0xd02b,0x935e,0xecda,0x3be1,0xfd01,0x74d3,0xf74e,0x8b3f,0xa3a8,0x8b47,0x9855,0xb10c,0xae28,0xefd6,0xda5,0x880f,0x7eb4,0xaf}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xf6c0,0x4874,0x673a,0x503c,0x8735,0x67de,0x61e0,0xb1a3,0xe8ce,0xb24e,0xf29b,0x8625,0x2335,0x9e71,0x92ca,0x7495,0x23b7,0xe411,0x8196,0xc38e,0xadea,0xe1e1,0x4bf8,0x9b2e,0x8732,0x301e,0xac6f,0x986,0x1096,0xc287,0x45df,0x182c,0x9034,0x9b0f,0xb11,0x67a3,0x4d59,0xf09b,0xe4a1,0xc3ac,0x65e4,0x2ead,0x76b8,0xcf5a,0x3bed,0x8112,0x2a13,0x63e8,0x8f55,0x61}}}}, {{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xb76d,0x998a,0xddb9,0x3939,0xeee5,0xf561,0xebe3,0xe14a,0x595e,0xaec6,0xd391,0x39e3,0x1f91,0x5dda,0x986,0x5b30,0x4ad,0x5e35,0x5a79,0x8b7f,0x348d,0x4fec,0x375d,0xb18b,0xa4fb,0xd5b0,0x620c,0x4727,0xfbc1,0x8afd,0x8495,0xd8c6,0x72f,0x65ac,0x3b44,0x1abf,0x510e,0xa77f,0xe35b,0x9168,0xdc61,0x718c,0x2e3a,0x287,0x1dab,0x19b3,0x92c8,0xf3a2,0xb7b,0x32}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x94f8,0xd0c6,0x5910,0xd4d3,0x6231,0x7c25,0x8630,0xde29,0x3ac4,0xc613,0xd530,0xe768,0x912e,0xd3c0,0x2f93,0xdba0,0xc359,0x3540,0x8117,0x2841,0x9c82,0x7b11,0xeb6d,0xe24d,0x8d3f,0x526e,0x9757,0x76ed,0x8a28,0xef8,0x9696,0xf825,0x6a,0x1a50,0x31a0,0xa035,0xbbb5,0x6616,0x5d85,0xe0c2,0x3bbe,0x6337,0xf19f,0xe1ab,0x18,0x1382,0xc95e,0x65a3,0xa073,0x40}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x2dd0,0x12f7,0x8916,0x768a,0x5d77,0xa696,0x9525,0x7cef,0x6ed8,0xd3ef,0xdfe4,0xe343,0x520,0xbc9d,0xa99b,0xca63,0x7bf2,0xd722,0x7a9e,0xe8df,0x6146,0xb5c,0x92f0,0x8c6c,0xf7aa,0xbfe0,0x7c6e,0x520a,0x433f,0x34db,0x50ac,0xea39,0xc0cb,0x5608,0x8ec7,0x5dd0,0xd23b,0x9d07,0xb4c5,0x8a53,0xf69f,0x55e9,0x754,0xd01b,0x79ef,0xc145,0x61f,0x1968,0x965c,0x64}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x41a8,0x29cb,0xe2de,0x7977,0xeef9,0xdbf5,0xc0cc,0x480c,0x15e1,0x556c,0xe466,0x3c1e,0x1083,0xd9d6,0xf726,0xc99e,0x873c,0x68cb,0x313b,0x397,0xca71,0xed33,0x97ed,0x342b,0x2c68,0x2ddc,0x2ab2,0xc53c,0x7ed5,0xad8d,0x7e96,0x75c1,0x2927,0x9db8,0x1172,0xa7a4,0xbc5f,0x9c11,0x1dbb,0x9c3a,0x5600,0xdd1b,0x69a2,0xe6b1,0x7146,0x6780,0xd143,0xb7f3,0xa755,0x18}}}}, {{{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0x3172,0xd82,0x5718,0x3b28,0xfaf0,0x32e7,0xfe6,0x4243,0xf3b3,0x8c30,0xd742,0xefa,0x843f,0x6697,0xd7a6,0x2722,0xfb89,0xfac1,0xc143,0xda51,0x8239,0xe848,0x900a,0x7220,0x21be,0xf239,0xcdbb,0x9d6f,0xaef2,0xeb13,0x58ea,0x2fc0,0x8488,0x28ba,0xb4e8,0x3d79,0x251,0x29a4,0xa07,0xf9d,0x2be0,0x64f1,0x299,0xf6d3,0x49d4,0xaaf7,0x800,0x69f6,0xfe8d,0x6a}}}, {{._mp_alloc = 0, ._mp_size = 50, ._mp_d = (mp_limb_t[]) {0xd231,0xed08,0x76e9,0x8975,0xa288,0x5969,0x6ada,0x8310,0x9127,0xf496,0xaa2d,0x47c6,0x1d55,0x1b9d,0x6bef,0x5c18,0xf9a7,0xa518,0xd7e,0xf29c,0xda0f,0xf3b3,0x76fe,0xa8a8,0x5754,0xd366,0xb636,0xde96,0x852,0x8ecc,0xccae,0xb442,0xfca,0x57a6,0x8fb3,0x7e46,0xe67b,0x3de2,0xa00e,0xe1ae,0xe8c7,0x9894,0x82a0,0xc29d,0x3451,0x4213,0xd0e4,0xd44a,0x88cb,0x8b}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2f}}}, {{._mp_alloc = 0, ._mp_size = 33, ._mp_d = (mp_limb_t[]) {0xd1c1,0x4acf,0xea1c,0x9efb,0xde65,0x1c30,0xe5e,0x92ff,0x9031,0xadb3,0xac6b,0xa6e1,0x40c9,0xcfdf,0xd9f6,0x3fcb,0x6ca9,0xfde9,0x3e37,0xa52e,0xe3c5,0x1855,0xa01,0x11fd,0x3cdf,0x1ecc,0x318a,0x9c0c,0x31c6,0xda41,0x2065,0xd27f,0x148f}}}, {{._mp_alloc = 0, ._mp_size = 34, ._mp_d = (mp_limb_t[]) {0x2651,0x5ce6,0x8d81,0xc6c,0x8011,0xe8,0x76e8,0xf200,0x83a6,0x53dd,0x21c8,0x4a4c,0xcdfe,0xd5e6,0x8812,0x2d1,0x13b0,0x7da5,0x638f,0xe681,0x397f,0xcba6,0x2308,0x8001,0x90ee,0x9192,0xeb6c,0x66fc,0x4f59,0xd7c8,0x865f,0x32e2,0x641f,0x2}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 34, ._mp_d = (mp_limb_t[]) {0x6411,0x75eb,0x930b,0x5585,0xa500,0x63ee,0x180f,0xf861,0x366a,0x1e88,0xebd2,0x2f7,0x80da,0xeec4,0x5e4b,0xb27b,0x9c18,0x974a,0xa082,0x8f32,0x3c1,0x62b1,0x80f3,0x2258,0xcfd,0xa073,0x5874,0x4603,0x22c8,0xa576,0x292b,0xb895,0xac23,0xb}}}, {{._mp_alloc = 0, ._mp_size = 33, ._mp_d = (mp_limb_t[]) {0xcbaf,0xa2ff,0xe66d,0xf297,0x48aa,0xd8da,0x9c8e,0x46de,0x64f4,0x77e2,0x9ac5,0x7c21,0x5419,0xb16b,0x4768,0x60c9,0xd3ad,0x864,0x2dc1,0x2,0xb239,0xe38,0x26d3,0x176c,0x2111,0x1b64,0xfdbc,0x4b36,0x249f,0x1151,0x8a54,0x332d,0x143a}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 34, ._mp_d = (mp_limb_t[]) {0xb8d4,0xc97b,0x68a5,0xf1fc,0xcaea,0x1cfa,0xcc66,0x1af8,0x9a15,0x9012,0x7ea,0x390a,0x75fd,0x9a00,0x8094,0xb3db,0x4547,0x9ce8,0x99a1,0x91fc,0x46a6,0xb0b0,0x56e9,0x6c5c,0x128c,0x5d38,0x7b27,0x2240,0xea36,0xd094,0x20,0xb736,0xe1ff,0x15}}}}};
#elif 8*DIGIT_LEN == 32
const ec_basis_t BASIS_EVEN = {{{{0xf893b25235cd05, 0xcfad0c31816a3767, 0x24d6633b878c9852, 0x947ef3f6bd7e54a9, 0xcfcc6931acebc9ec, 0x7a593c6f226d62a7, 0xd773da3276d4514e, 0xf93f309a42dec}, {0x70e6b5b84d87aff3, 0x3b39ea4b8a9af50f, 0x33bb72fc45f05294, 0x1103f3d679fb626a, 0x29e23daba686e722, 0xd7683a594c898767, 0x41c4ad3db823bae1, 0x13f1daa2e21221}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xac16948532220971, 0x5652f704391431a5, 0xca5ee11424c4943d, 0xaa2208832540971a, 0x9e289f9c846e5c2b, 0xde48d5cd32bd5fe2, 0x913b3efa3bc42565, 0xd203dedb14213}, {0x5872c77992dd67c0, 0xb937a740922a8754, 0x21f7d1669ef949f, 0x2a7139b6c8587d0f, 0xf8bab24328aa27ab, 0xdab9bd3b2ddeec79, 0xe83b475f203bcb65, 0x556741a934ed3}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x90f4d4d80ba9ed72, 0xc8b9a440304ca99d, 0xc943b3a8997d4b88, 0xf08d352edc87530f, 0x767ca098b77d7071, 0x50dba761679c1732, 0x545a298536db6db9, 0x1381accb5f9aff}, {0x97233d48b02e6714, 0x684847c5bc2333e7, 0x18886606aeba8b01, 0xe4d42f848dafb6fc, 0xcc8ac9374d922260, 0x63189d0ed97c756, 0xa21cc3b155e35e31, 0x17400333e40769}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0xcde42ca0952857f6, 0x43986ee6663ef6cd, 0x55871379b845a923, 0x76ed1adf6ebef960, 0xabc4b150fc745f1e, 0x1c8a9c2defeb0f13, 0x13dd17be34fd733, 0x19e43fe41e4c43}, {0x2fa1833df935bc09, 0x69f359ab51c26ad9, 0xf9586cab92e541d6, 0x7362de7c9a12a54, 0xf971e28525d978bc, 0xf9e36a9529d0f3bd, 0xaea48e8b461db588, 0x1c33797cdc407}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x89c16fec8e55f16c, 0x1ff4d48fd451c2bb, 0x7b18fb54214c6532, 0x9ef491c4f579c67e, 0x38cd883c7d0cd40e, 0x499dc1361f2d123, 0x1335e051324fdbc7, 0xfd4fddbdc2a7f}, {0xcb3f9f71c926dc70, 0xebc2bb04385445c8, 0x6fd7a4eaca478a40, 0x151e3f61abfba2cb, 0x761770fecf1ee8c0, 0xd021aa20f5cd88a9, 0xbfcf8539dcdfb928, 0x18506735ab454e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x2df9cd51f27fb63e, 0x70ba06f5979446db, 0xa3fbb7300b16af8d, 0x992c1287f9a1c577, 0xb243e4491d37450e, 0x8473713e201019e0, 0xef9c23305e454581, 0x67b9998e13889}, {0x452150d05e768c9b, 0x4fe2b493696f8226, 0xac671e6158fedc93, 0x670fe96577281a7c, 0xa28c4be3e9ad4931, 0x6f20e70a714aae4b, 0x9890ecbc08f30c2e, 0x24a2c3ff722e18}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x2d2d051047dbd624, 0xfca1b15a916f7be5, 0x441312cd63f16c3f, 0xff7438fdce0ea446, 0x9fdef5936357fab, 0xf9ae02a9421f5416, 0xf7b77ef02bd1c1f8, 0x16f3f63378f96e}, {0x407ce7ffebc92b8e, 0x55fe79acf73aa929, 0x3337fb9216805495, 0xf6db0b7b43176f92, 0x853ee17ab74bf23d, 0xec5cbc949d4b0709, 0xce952df77dfd072f, 0xb16ebf531bef1}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x230916c16a0947e7, 0xa5a77aa3652d437b, 0x945736cf18a280b2, 0xe714d31d874572f1, 0x41bfcb5db198a4ac, 0x33c4ca4686e96f44, 0xe393b5d625debb73, 0x13895d37996b33}, {0xada606e483b73739, 0xe88daed540f3341d, 0xf398a06307ae9e8e, 0x61c2dfd85ef3c1a5, 0xbd29fb1cf683401c, 0x9aae565349a44142, 0x87a7c3de59a75f0d, 0x24c83660611a31}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x102024e8a598a5e8, 0x2bc941882c5f9245, 0xd6d60580934ea556, 0x86a4552d3207e718, 0x96eee147b2e294b5, 0x3ab66e6e93801f2e, 0xc8a390dff6441c41, 0x86407d5d6eb31}, {0xbd273dcfdc4cc333, 0x739eb9e099d67c56, 0x72a7fb0c255bdc52, 0x478eeb66fd200a09, 0x18965b28ca1ee442, 0xafff9738826e71d0, 0xa5a3e52397324a99, 0x22814353549863}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xf74e278739139769, 0x58be58577063e414, 0x7eb0edc56149472a, 0xcca10962fd516fae, 0x1ff09b1f54235f02, 0xfaba3bd39b494a4e, 0x59131f688c981aa3, 0x1d51b125134e7b}, {0x65f0988abfc680f0, 0xa7ec54e82f4f2ab4, 0x9cf1b55adef48a73, 0xcd7037d25eae0ef2, 0xf92fd0cacb35869a, 0x4afc0821a671bcfa, 0x2d0ff9a442d5b9a3, 0x2478f31e1b0ea8}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x357c1914bd227f58, 0x8c0d19f6290630f6, 0x49b100de6a80c2b8, 0xa1d365344bbb92d1, 0x20457092ad863380, 0x8274b2b3309427b, 0x57f899ef3140dadd, 0x25503c1a2afc85}, {0x85cd3fa621493a3d, 0x92741aa3b1184149, 0x57dc1c77e580e8ac, 0xd58459bf1d974197, 0x7a88578d886499ce, 0x22ca10e6b3805ca4, 0x2762f95867f32794, 0x1f3dac32b57131}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x2f94ba52e8516cfd, 0xc0cc95a65ef5d3f0, 0x78cd1286af1a549, 0xc58dfb5ca45bda4f, 0xfcb50d3ddcf80ec3, 0x90c191d252c72d27, 0x33d25fd46c7f1402, 0x1c30b1fd3aa2f7}, {0x2a5802b9b8b9188f, 0xeb15e1196bf95ce6, 0x8667c8dd3375a95d, 0x6c5e7827fd12c65d, 0x7b22fdd30e62d493, 0xc59204eeb4f57f61, 0x4c18ee49e098a97f, 0x230ac44ef70718}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x2d2d051047dbd624, 0xfca1b15a916f7be5, 0x441312cd63f16c3f, 0xff7438fdce0ea446, 0x9fdef5936357fab, 0xf9ae02a9421f5416, 0xf7b77ef02bd1c1f8, 0x16f3f63378f96e}, {0x407ce7ffebc92b8e, 0x55fe79acf73aa929, 0x3337fb9216805495, 0xf6db0b7b43176f92, 0x853ee17ab74bf23d, 0xec5cbc949d4b0709, 0xce952df77dfd072f, 0xb16ebf531bef1}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x230916c16a0947e7, 0xa5a77aa3652d437b, 0x945736cf18a280b2, 0xe714d31d874572f1, 0x41bfcb5db198a4ac, 0x33c4ca4686e96f44, 0xe393b5d625debb73, 0x13895d37996b33}, {0xada606e483b73739, 0xe88daed540f3341d, 0xf398a06307ae9e8e, 0x61c2dfd85ef3c1a5, 0xbd29fb1cf683401c, 0x9aae565349a44142, 0x87a7c3de59a75f0d, 0x24c83660611a31}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x102024e8a598a5e8, 0x2bc941882c5f9245, 0xd6d60580934ea556, 0x86a4552d3207e718, 0x96eee147b2e294b5, 0x3ab66e6e93801f2e, 0xc8a390dff6441c41, 0x86407d5d6eb31}, {0xbd273dcfdc4cc333, 0x739eb9e099d67c56, 0x72a7fb0c255bdc52, 0x478eeb66fd200a09, 0x18965b28ca1ee442, 0xafff9738826e71d0, 0xa5a3e52397324a99, 0x22814353549863}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0x6e2338651dd6b809, 0xa0b4a74a516bc856, 0xcef4dc03ae64bc, 0x7e04105e61ad1ccc, 0x824a280776a0a61a, 0xb0cbb7066de4598f, 0x91147e22289f3e7c, 0x1159e486ae42c7}, {0x4ad227aedc9e33c9, 0xe3050d4ccb8cd5e6, 0x859f12c8125c3c76, 0xc70299649231184f, 0xde2bae7b1651dfd, 0x38ae5d76b98a0bf5, 0x4afcb9cdd51c75ac, 0x1cd37f9c7ba50e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x9712f28d07df37f6, 0x3c0fdc3f6b148b77, 0x498753d83c208925, 0x3e9d6e57123afc04, 0xff41fe276d7b38de, 0x6fd059cabd88b549, 0x206a33c3360330d5, 0x5b66cd2ad497f}, {0x9b6c484b0169169b, 0x6854e01c5c87805c, 0x3217830c5fa9e618, 0x26b5dc3839eb347d, 0xc1b369290ec7c6b1, 0x7a2f3702ffd2460d, 0x2a17887c3a6da2f1, 0x16971eee1d9a05}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x6274b50ea5c661fa, 0xe3c3462c17e5a676, 0x73863c6c6e3e939d, 0x36adea15c2e668ab, 0x20ea8297e2acacbb, 0x720c5bd322a623a1, 0xa914186e4ebaa9a2, 0x4e9c355009afd}, {0x8dbb2dc3278a80f0, 0x9c6baecf247fbe32, 0x2fca5dddae71c5fd, 0x6e944e9e7de384cd, 0xeef1669c4da7aede, 0x6fb68320ff68c3a7, 0x9150f158b68d6cdb, 0x22c905c30fedc8}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xa4c8822e,0x5a8b4610,0xfeac2415,0xb1f527bd,0xb5f1e46,0xf52752cf,0x2406053e,0x58a38456,0x54e855b0,0x5e1390e1,0x43903229,0x28068aba,0xfabdb85f,0x5c49f21c,0x1c512802,0x753064aa,0x229a8d3f,0x3aab2de7,0x4f850fa6,0x5c65ca7b,0xaa31198,0xcad64a56,0xe372a026,0x99a0d9e3,0x381ab2}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x88f257b,0x95aafa56,0x9e34f879,0xfea25ab5,0x77584f0b,0x1edc41d9,0x4ef2b25,0xedeb23a0,0x9288fe6f,0xb5ee8fed,0x240bb32c,0x9ce5753d,0xdeca5aeb,0xa3170191,0x2c6ff4e6,0xf7f06fed,0xa76ffb81,0x21c4cb2f,0x51255d27,0x7953b7ae,0x9b6c3ff5,0x686121c2,0xcc4d4476,0x75eb0cfe,0x6810dc}}}}, {{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x57829ac1,0x8f27e01b,0x2e5573fc,0x3632613d,0x3dc1ba61,0x7133cfeb,0xd9f84a27,0xd0fd3ae,0xa4886ce5,0xfecc75cd,0x356050d3,0x89335752,0x3c5b5c00,0x303f583d,0x3a5c69c5,0x4af10d22,0x3fb952a1,0xcc3b797b,0x2557c5ff,0x562d8699,0x44372e84,0xe16dc1f7,0xeed817b6,0x75d96dda,0x387954}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x5b377dd2,0xa574b9ef,0x153dbea,0x4e0ad842,0xbd26e1b9,0x35e33743,0xb4341d37,0xcdd89134,0x27531fe9,0x7d67f73c,0xbb80092d,0xd0e7f34,0x988996a0,0xd4574088,0xa756238f,0x294bb8b0,0x8b144357,0xa16bf093,0x8b65a910,0xf9c8a58,0xe3dbcdcf,0xc7e23f9e,0x1fe60e1a,0x5411fd20,0xb80475}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xb9aa53e2,0xfbce07cd,0x9091786,0x91b7cbe1,0x31006c2f,0x67118ce2,0xcb2fad9,0x1698320d,0xbcd19936,0x2ce4f50d,0xc55cd029,0x4872a859,0xf3ac7c20,0xe67c11d9,0x89650f3e,0x39008b84,0x56744281,0x61018d53,0xbf3831a5,0x4e17cf4d,0x1d6d5651,0x48a5c60,0xf8e20de9,0x88ca6a63,0x36c38e}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x885ac805,0xacdd41e,0x318815f1,0x64a4690b,0xed458291,0xed6fa35d,0x37f31b45,0xfb4001f5,0x359948fe,0xd12e7340,0x9fb7a8a8,0x997722b4,0x8172b379,0x6ff6574c,0x589e2c45,0x38681bd2,0x8eaf24e6,0xad814af3,0x90113d8b,0xe061195,0xc1ee8bd4,0x3653cbad,0x35d73365,0x51e54728,0x5b0dce}}}}, {{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xdb92d419,0xe34bdb57,0xbc6e69cd,0x8c63768a,0x1fcaf85c,0x293d738,0xe1bbf4fb,0xa9503f5d,0x17e19c75,0x18323f25,0x6a781847,0xd9e31768,0x6f05edf6,0x5e0f6bdc,0xdb9f8dbd,0x669bfc08,0x8b9ebbbe,0x6942fd0d,0x29a6dc1c,0xcca4401e,0x9ee28a3e,0x23a09a7d,0x448e239f,0x716bb7b5,0x2b9da3}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x4655ac1e,0x431f832,0xf6f6e879,0x6e48341e,0x978593d0,0xc3f8fd30,0xcb87279c,0xfe3e37d,0xbf69dc64,0xae96930f,0x39b36b2d,0xeca26195,0x9f9ad2de,0x4a2520cb,0x3a423c53,0x657b91d6,0x573a8e15,0x7b159127,0x1bb28711,0x1dea8586,0xd1118916,0x8e2e2d94,0xa76a058,0x64e86ca0,0xb95b99}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x25ee5b9f,0xed15122c,0x4d2cbaee,0xf9df2a4b,0xa7deddb0,0xc687bfc9,0x793a0a41,0x94c75337,0xae44f7e5,0xd1bef53d,0x16b8c28d,0x18d925e0,0x7fc1ef55,0xa414f8dd,0x69b6867e,0xd472a158,0xac118197,0xbba11d8e,0x3a0fa476,0x14a7698b,0xabd3ed3f,0xa0360ea8,0x828af3df,0x32d00c3f,0xc92cb8}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x53968350,0xf2efc5bc,0xb7ebddf2,0x90198199,0xaad82bc2,0x783dc8cc,0xb3ac2106,0x933dee4d,0xd1970e79,0x72e6276,0xda6794e2,0x68572fdb,0x5bb858d0,0x8a785564,0x5b1afdab,0xeb82fd2d,0x3b70524e,0x4f4822e5,0x382378bf,0x38743b77,0xba36ac01,0xcd62d345,0xcf00e28d,0x6fe7a286,0x314eab}}}}, {{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x1b0462e4,0x7650ae30,0x65cff5e0,0x84861fcc,0x1861e766,0x1df5ae85,0xcd2f087e,0x4e45af4c,0xf583f712,0xb4a38287,0xd0910473,0xe4412015,0xe472437c,0x3adf9b77,0xd6275de5,0x5f80b1d5,0x51750910,0x7af369d0,0x534804a2,0x1f3a140e,0xc9e257c0,0xeda60532,0x55ee93a9,0xd3ec1001,0xd5fd1a}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xda11a461,0x12eaedd3,0xb2d34511,0x620d5b4,0x20a7224f,0x6482ca49,0x5f001834,0x91b4c253,0xcdf67db4,0x9bc92df,0xe85778c9,0x1c3be40e,0x13855faa,0x8c8c39c8,0x59f0c513,0xca097c02,0x19d4efe,0x207600ec,0xa0db1440,0x575aeb48,0x42aaf228,0xf2827b4c,0x80cdba61,0xbae2cac4,0x26f26f}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xa4c8822e,0x5a8b4610,0xfeac2415,0xb1f527bd,0xb5f1e46,0xf52752cf,0x2406053e,0x58a38456,0x54e855b0,0x5e1390e1,0x43903229,0x28068aba,0xfabdb85f,0x5c49f21c,0x1c512802,0x753064aa,0x229a8d3f,0x3aab2de7,0x4f850fa6,0x5c65ca7b,0xaa31198,0xcad64a56,0xe372a026,0x99a0d9e3,0x381ab2}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x88f257b,0x95aafa56,0x9e34f879,0xfea25ab5,0x77584f0b,0x1edc41d9,0x4ef2b25,0xedeb23a0,0x9288fe6f,0xb5ee8fed,0x240bb32c,0x9ce5753d,0xdeca5aeb,0xa3170191,0x2c6ff4e6,0xf7f06fed,0xa76ffb81,0x21c4cb2f,0x51255d27,0x7953b7ae,0x9b6c3ff5,0x686121c2,0xcc4d4476,0x75eb0cfe,0x6810dc}}}}, {{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x57829ac1,0x8f27e01b,0x2e5573fc,0x3632613d,0x3dc1ba61,0x7133cfeb,0xd9f84a27,0xd0fd3ae,0xa4886ce5,0xfecc75cd,0x356050d3,0x89335752,0x3c5b5c00,0x303f583d,0x3a5c69c5,0x4af10d22,0x3fb952a1,0xcc3b797b,0x2557c5ff,0x562d8699,0x44372e84,0xe16dc1f7,0xeed817b6,0x75d96dda,0x387954}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x5b377dd2,0xa574b9ef,0x153dbea,0x4e0ad842,0xbd26e1b9,0x35e33743,0xb4341d37,0xcdd89134,0x27531fe9,0x7d67f73c,0xbb80092d,0xd0e7f34,0x988996a0,0xd4574088,0xa756238f,0x294bb8b0,0x8b144357,0xa16bf093,0x8b65a910,0xf9c8a58,0xe3dbcdcf,0xc7e23f9e,0x1fe60e1a,0x5411fd20,0xb80475}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x2f396b08,0x2b2ca6ef,0x83da9dce,0x21d679cf,0x272c53b,0x43a1b4e2,0x4799147,0x4adbe5f7,0x46fab240,0xb33a0706,0x83fe9ed4,0x52c71e81,0x40d8c1bf,0xb9b39b4e,0xb4aec169,0xa65686c4,0x935ed02b,0x3be1ecda,0x74d3fd01,0x8b3ff74e,0x8b47a3a8,0xb10c9855,0xefd6ae28,0x880f0da5,0xaf7eb4}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x4874f6c0,0x503c673a,0x67de8735,0xb1a361e0,0xb24ee8ce,0x8625f29b,0x9e712335,0x749592ca,0xe41123b7,0xc38e8196,0xe1e1adea,0x9b2e4bf8,0x301e8732,0x986ac6f,0xc2871096,0x182c45df,0x9b0f9034,0x67a30b11,0xf09b4d59,0xc3ace4a1,0x2ead65e4,0xcf5a76b8,0x81123bed,0x63e82a13,0x618f55}}}}, {{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x998ab76d,0x3939ddb9,0xf561eee5,0xe14aebe3,0xaec6595e,0x39e3d391,0x5dda1f91,0x5b300986,0x5e3504ad,0x8b7f5a79,0x4fec348d,0xb18b375d,0xd5b0a4fb,0x4727620c,0x8afdfbc1,0xd8c68495,0x65ac072f,0x1abf3b44,0xa77f510e,0x9168e35b,0x718cdc61,0x2872e3a,0x19b31dab,0xf3a292c8,0x320b7b}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xd0c694f8,0xd4d35910,0x7c256231,0xde298630,0xc6133ac4,0xe768d530,0xd3c0912e,0xdba02f93,0x3540c359,0x28418117,0x7b119c82,0xe24deb6d,0x526e8d3f,0x76ed9757,0xef88a28,0xf8259696,0x1a50006a,0xa03531a0,0x6616bbb5,0xe0c25d85,0x63373bbe,0xe1abf19f,0x13820018,0x65a3c95e,0x40a073}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x12f72dd0,0x768a8916,0xa6965d77,0x7cef9525,0xd3ef6ed8,0xe343dfe4,0xbc9d0520,0xca63a99b,0xd7227bf2,0xe8df7a9e,0xb5c6146,0x8c6c92f0,0xbfe0f7aa,0x520a7c6e,0x34db433f,0xea3950ac,0x5608c0cb,0x5dd08ec7,0x9d07d23b,0x8a53b4c5,0x55e9f69f,0xd01b0754,0xc14579ef,0x1968061f,0x64965c}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0x29cb41a8,0x7977e2de,0xdbf5eef9,0x480cc0cc,0x556c15e1,0x3c1ee466,0xd9d61083,0xc99ef726,0x68cb873c,0x397313b,0xed33ca71,0x342b97ed,0x2ddc2c68,0xc53c2ab2,0xad8d7ed5,0x75c17e96,0x9db82927,0xa7a41172,0x9c11bc5f,0x9c3a1dbb,0xdd1b5600,0xe6b169a2,0x67807146,0xb7f3d143,0x18a755}}}}, {{{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xd823172,0x3b285718,0x32e7faf0,0x42430fe6,0x8c30f3b3,0xefad742,0x6697843f,0x2722d7a6,0xfac1fb89,0xda51c143,0xe8488239,0x7220900a,0xf23921be,0x9d6fcdbb,0xeb13aef2,0x2fc058ea,0x28ba8488,0x3d79b4e8,0x29a40251,0xf9d0a07,0x64f12be0,0xf6d30299,0xaaf749d4,0x69f60800,0x6afe8d}}}, {{._mp_alloc = 0, ._mp_size = 25, ._mp_d = (mp_limb_t[]) {0xed08d231,0x897576e9,0x5969a288,0x83106ada,0xf4969127,0x47c6aa2d,0x1b9d1d55,0x5c186bef,0xa518f9a7,0xf29c0d7e,0xf3b3da0f,0xa8a876fe,0xd3665754,0xde96b636,0x8ecc0852,0xb442ccae,0x57a60fca,0x7e468fb3,0x3de2e67b,0xe1aea00e,0x9894e8c7,0xc29d82a0,0x42133451,0xd44ad0e4,0x8b88cb}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2f}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x4acfd1c1,0x9efbea1c,0x1c30de65,0x92ff0e5e,0xadb39031,0xa6e1ac6b,0xcfdf40c9,0x3fcbd9f6,0xfde96ca9,0xa52e3e37,0x1855e3c5,0x11fd0a01,0x1ecc3cdf,0x9c0c318a,0xda4131c6,0xd27f2065,0x148f}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x5ce62651,0xc6c8d81,0xe88011,0xf20076e8,0x53dd83a6,0x4a4c21c8,0xd5e6cdfe,0x2d18812,0x7da513b0,0xe681638f,0xcba6397f,0x80012308,0x919290ee,0x66fceb6c,0xd7c84f59,0x32e2865f,0x2641f}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x75eb6411,0x5585930b,0x63eea500,0xf861180f,0x1e88366a,0x2f7ebd2,0xeec480da,0xb27b5e4b,0x974a9c18,0x8f32a082,0x62b103c1,0x225880f3,0xa0730cfd,0x46035874,0xa57622c8,0xb895292b,0xbac23}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0xa2ffcbaf,0xf297e66d,0xd8da48aa,0x46de9c8e,0x77e264f4,0x7c219ac5,0xb16b5419,0x60c94768,0x864d3ad,0x22dc1,0xe38b239,0x176c26d3,0x1b642111,0x4b36fdbc,0x1151249f,0x332d8a54,0x143a}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0xc97bb8d4,0xf1fc68a5,0x1cfacaea,0x1af8cc66,0x90129a15,0x390a07ea,0x9a0075fd,0xb3db8094,0x9ce84547,0x91fc99a1,0xb0b046a6,0x6c5c56e9,0x5d38128c,0x22407b27,0xd094ea36,0xb7360020,0x15e1ff}}}}};
#elif 8*DIGIT_LEN == 64
const ec_basis_t BASIS_EVEN = {{{{0xf893b25235cd05, 0xcfad0c31816a3767, 0x24d6633b878c9852, 0x947ef3f6bd7e54a9, 0xcfcc6931acebc9ec, 0x7a593c6f226d62a7, 0xd773da3276d4514e, 0xf93f309a42dec}, {0x70e6b5b84d87aff3, 0x3b39ea4b8a9af50f, 0x33bb72fc45f05294, 0x1103f3d679fb626a, 0x29e23daba686e722, 0xd7683a594c898767, 0x41c4ad3db823bae1, 0x13f1daa2e21221}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0xac16948532220971, 0x5652f704391431a5, 0xca5ee11424c4943d, 0xaa2208832540971a, 0x9e289f9c846e5c2b, 0xde48d5cd32bd5fe2, 0x913b3efa3bc42565, 0xd203dedb14213}, {0x5872c77992dd67c0, 0xb937a740922a8754, 0x21f7d1669ef949f, 0x2a7139b6c8587d0f, 0xf8bab24328aa27ab, 0xdab9bd3b2ddeec79, 0xe83b475f203bcb65, 0x556741a934ed3}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x90f4d4d80ba9ed72, 0xc8b9a440304ca99d, 0xc943b3a8997d4b88, 0xf08d352edc87530f, 0x767ca098b77d7071, 0x50dba761679c1732, 0x545a298536db6db9, 0x1381accb5f9aff}, {0x97233d48b02e6714, 0x684847c5bc2333e7, 0x18886606aeba8b01, 0xe4d42f848dafb6fc, 0xcc8ac9374d922260, 0x63189d0ed97c756, 0xa21cc3b155e35e31, 0x17400333e40769}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_PLUS = {{{{0xcde42ca0952857f6, 0x43986ee6663ef6cd, 0x55871379b845a923, 0x76ed1adf6ebef960, 0xabc4b150fc745f1e, 0x1c8a9c2defeb0f13, 0x13dd17be34fd733, 0x19e43fe41e4c43}, {0x2fa1833df935bc09, 0x69f359ab51c26ad9, 0xf9586cab92e541d6, 0x7362de7c9a12a54, 0xf971e28525d978bc, 0xf9e36a9529d0f3bd, 0xaea48e8b461db588, 0x1c33797cdc407}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x89c16fec8e55f16c, 0x1ff4d48fd451c2bb, 0x7b18fb54214c6532, 0x9ef491c4f579c67e, 0x38cd883c7d0cd40e, 0x499dc1361f2d123, 0x1335e051324fdbc7, 0xfd4fddbdc2a7f}, {0xcb3f9f71c926dc70, 0xebc2bb04385445c8, 0x6fd7a4eaca478a40, 0x151e3f61abfba2cb, 0x761770fecf1ee8c0, 0xd021aa20f5cd88a9, 0xbfcf8539dcdfb928, 0x18506735ab454e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x2df9cd51f27fb63e, 0x70ba06f5979446db, 0xa3fbb7300b16af8d, 0x992c1287f9a1c577, 0xb243e4491d37450e, 0x8473713e201019e0, 0xef9c23305e454581, 0x67b9998e13889}, {0x452150d05e768c9b, 0x4fe2b493696f8226, 0xac671e6158fedc93, 0x670fe96577281a7c, 0xa28c4be3e9ad4931, 0x6f20e70a714aae4b, 0x9890ecbc08f30c2e, 0x24a2c3ff722e18}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_ODD_MINUS = {{{{0x2d2d051047dbd624, 0xfca1b15a916f7be5, 0x441312cd63f16c3f, 0xff7438fdce0ea446, 0x9fdef5936357fab, 0xf9ae02a9421f5416, 0xf7b77ef02bd1c1f8, 0x16f3f63378f96e}, {0x407ce7ffebc92b8e, 0x55fe79acf73aa929, 0x3337fb9216805495, 0xf6db0b7b43176f92, 0x853ee17ab74bf23d, 0xec5cbc949d4b0709, 0xce952df77dfd072f, 0xb16ebf531bef1}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x230916c16a0947e7, 0xa5a77aa3652d437b, 0x945736cf18a280b2, 0xe714d31d874572f1, 0x41bfcb5db198a4ac, 0x33c4ca4686e96f44, 0xe393b5d625debb73, 0x13895d37996b33}, {0xada606e483b73739, 0xe88daed540f3341d, 0xf398a06307ae9e8e, 0x61c2dfd85ef3c1a5, 0xbd29fb1cf683401c, 0x9aae565349a44142, 0x87a7c3de59a75f0d, 0x24c83660611a31}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x102024e8a598a5e8, 0x2bc941882c5f9245, 0xd6d60580934ea556, 0x86a4552d3207e718, 0x96eee147b2e294b5, 0x3ab66e6e93801f2e, 0xc8a390dff6441c41, 0x86407d5d6eb31}, {0xbd273dcfdc4cc333, 0x739eb9e099d67c56, 0x72a7fb0c255bdc52, 0x478eeb66fd200a09, 0x18965b28ca1ee442, 0xafff9738826e71d0, 0xa5a3e52397324a99, 0x22814353549863}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_PLUS = {{{{0xf74e278739139769, 0x58be58577063e414, 0x7eb0edc56149472a, 0xcca10962fd516fae, 0x1ff09b1f54235f02, 0xfaba3bd39b494a4e, 0x59131f688c981aa3, 0x1d51b125134e7b}, {0x65f0988abfc680f0, 0xa7ec54e82f4f2ab4, 0x9cf1b55adef48a73, 0xcd7037d25eae0ef2, 0xf92fd0cacb35869a, 0x4afc0821a671bcfa, 0x2d0ff9a442d5b9a3, 0x2478f31e1b0ea8}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x357c1914bd227f58, 0x8c0d19f6290630f6, 0x49b100de6a80c2b8, 0xa1d365344bbb92d1, 0x20457092ad863380, 0x8274b2b3309427b, 0x57f899ef3140dadd, 0x25503c1a2afc85}, {0x85cd3fa621493a3d, 0x92741aa3b1184149, 0x57dc1c77e580e8ac, 0xd58459bf1d974197, 0x7a88578d886499ce, 0x22ca10e6b3805ca4, 0x2762f95867f32794, 0x1f3dac32b57131}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x2f94ba52e8516cfd, 0xc0cc95a65ef5d3f0, 0x78cd1286af1a549, 0xc58dfb5ca45bda4f, 0xfcb50d3ddcf80ec3, 0x90c191d252c72d27, 0x33d25fd46c7f1402, 0x1c30b1fd3aa2f7}, {0x2a5802b9b8b9188f, 0xeb15e1196bf95ce6, 0x8667c8dd3375a95d, 0x6c5e7827fd12c65d, 0x7b22fdd30e62d493, 0xc59204eeb4f57f61, 0x4c18ee49e098a97f, 0x230ac44ef70718}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_COMMITMENT_MINUS = {{{{0x2d2d051047dbd624, 0xfca1b15a916f7be5, 0x441312cd63f16c3f, 0xff7438fdce0ea446, 0x9fdef5936357fab, 0xf9ae02a9421f5416, 0xf7b77ef02bd1c1f8, 0x16f3f63378f96e}, {0x407ce7ffebc92b8e, 0x55fe79acf73aa929, 0x3337fb9216805495, 0xf6db0b7b43176f92, 0x853ee17ab74bf23d, 0xec5cbc949d4b0709, 0xce952df77dfd072f, 0xb16ebf531bef1}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x230916c16a0947e7, 0xa5a77aa3652d437b, 0x945736cf18a280b2, 0xe714d31d874572f1, 0x41bfcb5db198a4ac, 0x33c4ca4686e96f44, 0xe393b5d625debb73, 0x13895d37996b33}, {0xada606e483b73739, 0xe88daed540f3341d, 0xf398a06307ae9e8e, 0x61c2dfd85ef3c1a5, 0xbd29fb1cf683401c, 0x9aae565349a44142, 0x87a7c3de59a75f0d, 0x24c83660611a31}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x102024e8a598a5e8, 0x2bc941882c5f9245, 0xd6d60580934ea556, 0x86a4552d3207e718, 0x96eee147b2e294b5, 0x3ab66e6e93801f2e, 0xc8a390dff6441c41, 0x86407d5d6eb31}, {0xbd273dcfdc4cc333, 0x739eb9e099d67c56, 0x72a7fb0c255bdc52, 0x478eeb66fd200a09, 0x18965b28ca1ee442, 0xafff9738826e71d0, 0xa5a3e52397324a99, 0x22814353549863}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_basis_t BASIS_CHALLENGE = {{{{0x6e2338651dd6b809, 0xa0b4a74a516bc856, 0xcef4dc03ae64bc, 0x7e04105e61ad1ccc, 0x824a280776a0a61a, 0xb0cbb7066de4598f, 0x91147e22289f3e7c, 0x1159e486ae42c7}, {0x4ad227aedc9e33c9, 0xe3050d4ccb8cd5e6, 0x859f12c8125c3c76, 0xc70299649231184f, 0xde2bae7b1651dfd, 0x38ae5d76b98a0bf5, 0x4afcb9cdd51c75ac, 0x1cd37f9c7ba50e}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x9712f28d07df37f6, 0x3c0fdc3f6b148b77, 0x498753d83c208925, 0x3e9d6e57123afc04, 0xff41fe276d7b38de, 0x6fd059cabd88b549, 0x206a33c3360330d5, 0x5b66cd2ad497f}, {0x9b6c484b0169169b, 0x6854e01c5c87805c, 0x3217830c5fa9e618, 0x26b5dc3839eb347d, 0xc1b369290ec7c6b1, 0x7a2f3702ffd2460d, 0x2a17887c3a6da2f1, 0x16971eee1d9a05}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}, {{{0x6274b50ea5c661fa, 0xe3c3462c17e5a676, 0x73863c6c6e3e939d, 0x36adea15c2e668ab, 0x20ea8297e2acacbb, 0x720c5bd322a623a1, 0xa914186e4ebaa9a2, 0x4e9c355009afd}, {0x8dbb2dc3278a80f0, 0x9c6baecf247fbe32, 0x2fca5dddae71c5fd, 0x6e944e9e7de384cd, 0xeef1669c4da7aede, 0x6fb68320ff68c3a7, 0x9150f158b68d6cdb, 0x22c905c30fedc8}}, {{0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}};
const ec_curve_t CURVE_E0 = {{{0x0}}, {{0x1}}};
const ec_point_t CURVE_E0_A24 = {{{0x0}}, {{0x1}}};
const ibz_mat_2x2_t ACTION_I = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x5a8b4610a4c8822e,0xb1f527bdfeac2415,0xf52752cf0b5f1e46,0x58a384562406053e,0x5e1390e154e855b0,0x28068aba43903229,0x5c49f21cfabdb85f,0x753064aa1c512802,0x3aab2de7229a8d3f,0x5c65ca7b4f850fa6,0xcad64a560aa31198,0x99a0d9e3e372a026,0x381ab2}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x95aafa56088f257b,0xfea25ab59e34f879,0x1edc41d977584f0b,0xedeb23a004ef2b25,0xb5ee8fed9288fe6f,0x9ce5753d240bb32c,0xa3170191deca5aeb,0xf7f06fed2c6ff4e6,0x21c4cb2fa76ffb81,0x7953b7ae51255d27,0x686121c29b6c3ff5,0x75eb0cfecc4d4476,0x6810dc}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x8f27e01b57829ac1,0x3632613d2e5573fc,0x7133cfeb3dc1ba61,0xd0fd3aed9f84a27,0xfecc75cda4886ce5,0x89335752356050d3,0x303f583d3c5b5c00,0x4af10d223a5c69c5,0xcc3b797b3fb952a1,0x562d86992557c5ff,0xe16dc1f744372e84,0x75d96ddaeed817b6,0x387954}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xa574b9ef5b377dd2,0x4e0ad8420153dbea,0x35e33743bd26e1b9,0xcdd89134b4341d37,0x7d67f73c27531fe9,0xd0e7f34bb80092d,0xd4574088988996a0,0x294bb8b0a756238f,0xa16bf0938b144357,0xf9c8a588b65a910,0xc7e23f9ee3dbcdcf,0x5411fd201fe60e1a,0xb80475}}}}};
const ibz_mat_2x2_t ACTION_J = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xfbce07cdb9aa53e2,0x91b7cbe109091786,0x67118ce231006c2f,0x1698320d0cb2fad9,0x2ce4f50dbcd19936,0x4872a859c55cd029,0xe67c11d9f3ac7c20,0x39008b8489650f3e,0x61018d5356744281,0x4e17cf4dbf3831a5,0x48a5c601d6d5651,0x88ca6a63f8e20de9,0x36c38e}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xacdd41e885ac805,0x64a4690b318815f1,0xed6fa35ded458291,0xfb4001f537f31b45,0xd12e7340359948fe,0x997722b49fb7a8a8,0x6ff6574c8172b379,0x38681bd2589e2c45,0xad814af38eaf24e6,0xe06119590113d8b,0x3653cbadc1ee8bd4,0x51e5472835d73365,0x5b0dce}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xe34bdb57db92d419,0x8c63768abc6e69cd,0x293d7381fcaf85c,0xa9503f5de1bbf4fb,0x18323f2517e19c75,0xd9e317686a781847,0x5e0f6bdc6f05edf6,0x669bfc08db9f8dbd,0x6942fd0d8b9ebbbe,0xcca4401e29a6dc1c,0x23a09a7d9ee28a3e,0x716bb7b5448e239f,0x2b9da3}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x431f8324655ac1e,0x6e48341ef6f6e879,0xc3f8fd30978593d0,0xfe3e37dcb87279c,0xae96930fbf69dc64,0xeca2619539b36b2d,0x4a2520cb9f9ad2de,0x657b91d63a423c53,0x7b159127573a8e15,0x1dea85861bb28711,0x8e2e2d94d1118916,0x64e86ca00a76a058,0xb95b99}}}}};
const ibz_mat_2x2_t ACTION_K = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xed15122c25ee5b9f,0xf9df2a4b4d2cbaee,0xc687bfc9a7deddb0,0x94c75337793a0a41,0xd1bef53dae44f7e5,0x18d925e016b8c28d,0xa414f8dd7fc1ef55,0xd472a15869b6867e,0xbba11d8eac118197,0x14a7698b3a0fa476,0xa0360ea8abd3ed3f,0x32d00c3f828af3df,0xc92cb8}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xf2efc5bc53968350,0x90198199b7ebddf2,0x783dc8ccaad82bc2,0x933dee4db3ac2106,0x72e6276d1970e79,0x68572fdbda6794e2,0x8a7855645bb858d0,0xeb82fd2d5b1afdab,0x4f4822e53b70524e,0x38743b77382378bf,0xcd62d345ba36ac01,0x6fe7a286cf00e28d,0x314eab}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x7650ae301b0462e4,0x84861fcc65cff5e0,0x1df5ae851861e766,0x4e45af4ccd2f087e,0xb4a38287f583f712,0xe4412015d0910473,0x3adf9b77e472437c,0x5f80b1d5d6275de5,0x7af369d051750910,0x1f3a140e534804a2,0xeda60532c9e257c0,0xd3ec100155ee93a9,0xd5fd1a}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x12eaedd3da11a461,0x620d5b4b2d34511,0x6482ca4920a7224f,0x91b4c2535f001834,0x9bc92dfcdf67db4,0x1c3be40ee85778c9,0x8c8c39c813855faa,0xca097c0259f0c513,0x207600ec019d4efe,0x575aeb48a0db1440,0xf2827b4c42aaf228,0xbae2cac480cdba61,0x26f26f}}}}};
const ibz_mat_2x2_t ACTION_GEN2 = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x5a8b4610a4c8822e,0xb1f527bdfeac2415,0xf52752cf0b5f1e46,0x58a384562406053e,0x5e1390e154e855b0,0x28068aba43903229,0x5c49f21cfabdb85f,0x753064aa1c512802,0x3aab2de7229a8d3f,0x5c65ca7b4f850fa6,0xcad64a560aa31198,0x99a0d9e3e372a026,0x381ab2}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x95aafa56088f257b,0xfea25ab59e34f879,0x1edc41d977584f0b,0xedeb23a004ef2b25,0xb5ee8fed9288fe6f,0x9ce5753d240bb32c,0xa3170191deca5aeb,0xf7f06fed2c6ff4e6,0x21c4cb2fa76ffb81,0x7953b7ae51255d27,0x686121c29b6c3ff5,0x75eb0cfecc4d4476,0x6810dc}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x8f27e01b57829ac1,0x3632613d2e5573fc,0x7133cfeb3dc1ba61,0xd0fd3aed9f84a27,0xfecc75cda4886ce5,0x89335752356050d3,0x303f583d3c5b5c00,0x4af10d223a5c69c5,0xcc3b797b3fb952a1,0x562d86992557c5ff,0xe16dc1f744372e84,0x75d96ddaeed817b6,0x387954}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xa574b9ef5b377dd2,0x4e0ad8420153dbea,0x35e33743bd26e1b9,0xcdd89134b4341d37,0x7d67f73c27531fe9,0xd0e7f34bb80092d,0xd4574088988996a0,0x294bb8b0a756238f,0xa16bf0938b144357,0xf9c8a588b65a910,0xc7e23f9ee3dbcdcf,0x5411fd201fe60e1a,0xb80475}}}}};
const ibz_mat_2x2_t ACTION_GEN3 = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x2b2ca6ef2f396b08,0x21d679cf83da9dce,0x43a1b4e20272c53b,0x4adbe5f704799147,0xb33a070646fab240,0x52c71e8183fe9ed4,0xb9b39b4e40d8c1bf,0xa65686c4b4aec169,0x3be1ecda935ed02b,0x8b3ff74e74d3fd01,0xb10c98558b47a3a8,0x880f0da5efd6ae28,0xaf7eb4}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x503c673a4874f6c0,0xb1a361e067de8735,0x8625f29bb24ee8ce,0x749592ca9e712335,0xc38e8196e41123b7,0x9b2e4bf8e1e1adea,0x986ac6f301e8732,0x182c45dfc2871096,0x67a30b119b0f9034,0xc3ace4a1f09b4d59,0xcf5a76b82ead65e4,0x63e82a1381123bed,0x618f55}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x3939ddb9998ab76d,0xe14aebe3f561eee5,0x39e3d391aec6595e,0x5b3009865dda1f91,0x8b7f5a795e3504ad,0xb18b375d4fec348d,0x4727620cd5b0a4fb,0xd8c684958afdfbc1,0x1abf3b4465ac072f,0x9168e35ba77f510e,0x2872e3a718cdc61,0xf3a292c819b31dab,0x320b7b}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0xd4d35910d0c694f8,0xde2986307c256231,0xe768d530c6133ac4,0xdba02f93d3c0912e,0x284181173540c359,0xe24deb6d7b119c82,0x76ed9757526e8d3f,0xf82596960ef88a28,0xa03531a01a50006a,0xe0c25d856616bbb5,0xe1abf19f63373bbe,0x65a3c95e13820018,0x40a073}}}}};
const ibz_mat_2x2_t ACTION_GEN4 = {{{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x768a891612f72dd0,0x7cef9525a6965d77,0xe343dfe4d3ef6ed8,0xca63a99bbc9d0520,0xe8df7a9ed7227bf2,0x8c6c92f00b5c6146,0x520a7c6ebfe0f7aa,0xea3950ac34db433f,0x5dd08ec75608c0cb,0x8a53b4c59d07d23b,0xd01b075455e9f69f,0x1968061fc14579ef,0x64965c}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x7977e2de29cb41a8,0x480cc0ccdbf5eef9,0x3c1ee466556c15e1,0xc99ef726d9d61083,0x397313b68cb873c,0x342b97eded33ca71,0xc53c2ab22ddc2c68,0x75c17e96ad8d7ed5,0xa7a411729db82927,0x9c3a1dbb9c11bc5f,0xe6b169a2dd1b5600,0xb7f3d14367807146,0x18a755}}}}, {{{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x3b2857180d823172,0x42430fe632e7faf0,0xefad7428c30f3b3,0x2722d7a66697843f,0xda51c143fac1fb89,0x7220900ae8488239,0x9d6fcdbbf23921be,0x2fc058eaeb13aef2,0x3d79b4e828ba8488,0xf9d0a0729a40251,0xf6d3029964f12be0,0x69f60800aaf749d4,0x6afe8d}}}, {{._mp_alloc = 0, ._mp_size = 13, ._mp_d = (mp_limb_t[]) {0x897576e9ed08d231,0x83106ada5969a288,0x47c6aa2df4969127,0x5c186bef1b9d1d55,0xf29c0d7ea518f9a7,0xa8a876fef3b3da0f,0xde96b636d3665754,0xb442ccae8ecc0852,0x7e468fb357a60fca,0xe1aea00e3de2e67b,0xc29d82a09894e8c7,0xd44ad0e442133451,0x8b88cb}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2f}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x9efbea1c4acfd1c1,0x92ff0e5e1c30de65,0xa6e1ac6badb39031,0x3fcbd9f6cfdf40c9,0xa52e3e37fde96ca9,0x11fd0a011855e3c5,0x9c0c318a1ecc3cdf,0xd27f2065da4131c6,0x148f}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xc6c8d815ce62651,0xf20076e800e88011,0x4a4c21c853dd83a6,0x2d18812d5e6cdfe,0xe681638f7da513b0,0x80012308cba6397f,0x66fceb6c919290ee,0x32e2865fd7c84f59,0x2641f}}}}};
const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO = {{{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1}}}, {{{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x5585930b75eb6411,0xf861180f63eea500,0x2f7ebd21e88366a,0xb27b5e4beec480da,0x8f32a082974a9c18,0x225880f362b103c1,0x46035874a0730cfd,0xb895292ba57622c8,0xbac23}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xf297e66da2ffcbaf,0x46de9c8ed8da48aa,0x7c219ac577e264f4,0x60c94768b16b5419,0x22dc10864d3ad,0x176c26d30e38b239,0x4b36fdbc1b642111,0x332d8a541151249f,0x143a}}}, {{._mp_alloc = 0, ._mp_size = 0, ._mp_d = (mp_limb_t[]) {0x0}}}, {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xf1fc68a5c97bb8d4,0x1af8cc661cfacaea,0x390a07ea90129a15,0xb3db80949a0075fd,0x91fc99a19ce84547,0x6c5c56e9b0b046a6,0x22407b275d38128c,0xb7360020d094ea36,0x15e1ff}}}}};
#endif

View File

@@ -0,0 +1,76 @@
#ifndef EC_PARAMS_H
#define EC_PARAMS_H
#define POWER_OF_2 145
#define POWER_OF_3 72
static digit_t TWOpF[NWORDS_ORDER] = {0x0, 0x0, 0x20000, 0x0, 0x0, 0x0, 0x0, 0x0}; // 2^g
static digit_t TWOpFm1[NWORDS_ORDER] = {0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x0}; // 2^(g-1)
static digit_t THREEpE[NWORDS_ORDER] = {0x2153E468B91C6D1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; // 3^e
static digit_t THREEpF[NWORDS_ORDER] = {0x1E679735C929F6A1, 0x000456BC60E76C11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; // 3^f
static digit_t THREEpFdiv2[NWORDS_ORDER] = {0x8F33CB9AE494FB50, 0x00022B5E3073B608, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; // Floor(3^f/2)
#define scaled 1 // unscaled (0) or scaled (1) remainder tree approach
#define gap 83
#define P_LEN 7
#define M_LEN 27
static long p_plus_minus_bitlength[P_LEN + M_LEN] ={
2, 4, 6, 7, 7, 9, 10, 3, 3, 5, 6, 6, 7, 7, 8, 10,
10, 10, 10, 12, 13, 13, 13, 14, 14, 14, 14, 14,
15, 15, 16, 16, 16, 19
};
static digit_t p_cofactor_for_2f[6] = {
0xBA674CA63456D371,
0xF532FD78514D3C0C,
0x3E80FF1D62C82506,
0x73C9015EDF319328,
0x4DE3460AD801B49B,
0x00000012ACA35443
};
#define P_COFACTOR_FOR_2F_BITLENGTH 357
static digit_t p_cofactor_for_3g[7] = {
0x0000000000000000,
0x0000000000000000,
0x0F469D6875A20000,
0x10CAFA623AD43E00,
0x27F3E11532C58F78,
0x9BA98880DA1DC006,
0x0000000000000008
};
#define P_COFACTOR_FOR_3G_BITLENGTH 388
static digit_t p_cofactor_for_6fg[4] = {
0x1F0007A34EB43AD1,
0xC7BC08657D311D6A,
0xE00313F9F08A9962,
0x00044DD4C4406D0E
};
#define P_COFACTOR_FOR_6FG_BITLENGTH 243
static int STRATEGY4[71] = { 28, 16, 11, 7, 4, 2, 1, 1, 1, 2, 1, 1, 3, 2, 1, 1, 1, 1, 4, 3, 2, 1, 1, 1, 1, 2, 1, 1, 7, 4, 2, 1, 1, 1, 2, 1, 1, 3, 2, 1, 1, 1, 1, 12, 7, 4, 2, 1, 1, 1, 2, 1, 1, 3, 2, 1, 1, 1, 1, 5, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1};
static int sizeI[P_LEN+M_LEN] = {
0, 3, 3, 4, 6, 11, 14, 1, 1, 2, 3, 4, 4, 6, 6, 13, 14, 14, 18, 26, 32, 38, 48, 54, 60, 62, 62, 64, 72, 92, 118, 126, 130, 310
};
static int sizeJ[P_LEN+M_LEN] = {
0, 1, 3, 4, 4, 10, 14, 1, 1, 2, 3, 3, 4, 5, 6, 12, 13, 13, 14, 24, 32, 33, 37, 49, 56, 60, 62, 62, 64, 63, 102, 125, 126, 256
};
static int sizeK[P_LEN+M_LEN] = {
1, 0, 2, 1, 3, 10, 21, 0, 1, 0, 0, 2, 4, 3, 3, 9, 2, 5, 0, 21, 28, 21, 11, 6, 75, 21, 82, 59, 75, 21, 21, 123, 0, 396
};
#define sI_max 310
#define sJ_max 256
#define sK_max 396
#define ceil_log_sI_max 9
#define ceil_log_sJ_max 9
#endif

View File

@@ -0,0 +1,14 @@
#define FP2_ENCODED_BYTES 128
#define EC_CURVE_ENCODED_BYTES 128
#define EC_POINT_ENCODED_BYTES 128
#define EC_BASIS_ENCODED_BYTES 384
#define CHAIN_LENGTH 9
#define QUAT_ALG_ELEM_ENCODED_BITS 771
#define QUAT_ALG_ELEM_ENCODED_BYTES 97
#define ID2ISO_LONG_TWO_ISOG_ENCODED_BYTES 2322
#define ZIP_CHAIN_LEN 14
#define ID2ISO_COMPRESSED_LONG_TWO_ISOG_ZIP_CHAIN_BYTES 19
#define ID2ISO_COMPRESSED_LONG_TWO_ISOG_BYTES 267
#define SIGNATURE_LEN 335
#define PUBLICKEY_BYTES 128
#define SECRETKEY_BYTES 1509

View File

@@ -0,0 +1,19 @@
#include <intbig.h>
#include <ec.h>
#include <quaternion.h>
extern const ec_basis_t BASIS_EVEN;
extern const ec_basis_t BASIS_ODD_PLUS;
extern const ec_basis_t BASIS_ODD_MINUS;
extern const ec_basis_t BASIS_COMMITMENT_PLUS;
extern const ec_basis_t BASIS_COMMITMENT_MINUS;
extern const ec_basis_t BASIS_CHALLENGE;
extern const ec_curve_t CURVE_E0;
extern const ec_point_t CURVE_E0_A24;
extern const ibz_mat_2x2_t ACTION_I;
extern const ibz_mat_2x2_t ACTION_J;
extern const ibz_mat_2x2_t ACTION_K;
extern const ibz_mat_2x2_t ACTION_GEN2;
extern const ibz_mat_2x2_t ACTION_GEN3;
extern const ibz_mat_2x2_t ACTION_GEN4;
extern const quat_alg_elem_t COMMITMENT_IDEAL_UNDISTORTED_GEN;
extern const quat_alg_elem_t COMMITMENT_IDEAL_DISTORTION_ENDO;

View File

@@ -0,0 +1,4 @@
#define NWORDS_FIELD 8
#define NWORDS_ORDER 8
#define BITS 512
#define LOG2P 9

View File

@@ -0,0 +1,27 @@
#include <intbig.h>
#define KLPT_equiv_bound_coeff 7
#define KLPT_equiv_num_iter 50625
#define KLPT_primality_num_iter 32
#define KLPT_signing_klpt_length 2030
#define KLPT_signing_num_gamma_trial 64
#define KLPT_gamma_exponent_interval_size 0
#define KLPT_gamma_exponent_center_shift 15
#define KLPT_repres_num_gamma_trial 32768
#define KLPT_signing_number_strong_approx 6784
#define KLPT_random_prime_attempts 64
#define KLPT_secret_key_prime_size 126
#define KLPT_keygen_length 1305
#define KLPT_keygen_num_gamma_trial 64
#define KLPT_eichler_smallnorm_bitsize 225
#define KLPT_keygen_number_strong_approx 5218
#define KLPT_eichler_number_mu_norm 13
#define KLPT_eichler_strong_approx_log_margin 2
#define KLPT_eichler_num_equiv_ideal 51
#define KLPT_eichler_number_strong_approx 5020
#define SQISIGN_response_attempts 64
#define SQISIGN_random_length 0
#define SQISIGN_signing_total_length 2030
#define SQISIGN_signing_length 14
#define SQISIGN_keygen_length 9
extern const short SMALL_PRIMES_1MOD4[11];
extern const ibz_t PROD_SMALL_PRIMES_3MOD4;

View File

@@ -0,0 +1,7 @@
#include <intbig.h>
#include <quaternion.h>
#define NUM_ALTERNATE_EXTREMAL_ORDERS 7
extern const quat_alg_t QUATALG_PINFTY;
extern const quat_order_t MAXORD_O0;
extern const quat_p_extremal_maximal_order_t STANDARD_EXTREMAL_ORDER;
extern const quat_p_extremal_maximal_order_t ALTERNATE_EXTREMAL_ORDERS[7];

View File

@@ -0,0 +1,24 @@
#include <intbig.h>
#define TORSION_2POWER_BYTES 19
#define TORSION_3POWER_BYTES 15
#define TORSION_23POWER_BYTES 33
extern const uint64_t TORSION_PLUS_EVEN_POWER;
extern const uint64_t TORSION_ODD_PRIMES[34];
extern const uint64_t TORSION_ODD_POWERS[34];
extern const uint64_t TORSION_PLUS_ODD_PRIMES[7];
extern const size_t TORSION_PLUS_ODD_POWERS[7];
extern const uint64_t TORSION_MINUS_ODD_PRIMES[27];
extern const size_t TORSION_MINUS_ODD_POWERS[27];
extern const size_t DEGREE_COMMITMENT_POWERS[34];
extern const ibz_t CHARACTERISTIC;
extern const ibz_t TORSION_ODD;
extern const ibz_t TORSION_ODD_PRIMEPOWERS[34];
extern const ibz_t TORSION_ODD_PLUS;
extern const ibz_t TORSION_ODD_MINUS;
extern const ibz_t TORSION_PLUS_2POWER;
extern const ibz_t TORSION_PLUS_3POWER;
extern const ibz_t TORSION_PLUS_23POWER;
extern const ibz_t DEGREE_COMMITMENT;
extern const ibz_t DEGREE_COMMITMENT_PLUS;
extern const ibz_t DEGREE_COMMITMENT_MINUS;
extern const ibz_t DEGREE_CHALLENGE;

View File

@@ -0,0 +1,14 @@
#include <stddef.h>
#include <stdint.h>
#include <klpt_constants.h>
#if 0
#elif 8*DIGIT_LEN == 16
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x173b,0x80bd,0xa9d7,0xa185}}};
#elif 8*DIGIT_LEN == 32
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x80bd173b,0xa185a9d7}}};
#elif 8*DIGIT_LEN == 64
const short SMALL_PRIMES_1MOD4[11] = {0x5, 0xd, 0x11, 0x1d, 0x25, 0x29, 0x35, 0x3d, 0x49, 0x59, 0x61};
const ibz_t PROD_SMALL_PRIMES_3MOD4 = {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xa185a9d780bd173b}}};
#endif

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
lvl = 5
p = 0x255946a8869bc68c15b0036936e79202bdbe6326507d01fe3ac5904a0dea65faf0a29a781974ce994c68ada6e1ffffffffffffffffffffffffffffffffffff
B = 320000

View File

@@ -0,0 +1,68 @@
#include <stddef.h>
#include <stdint.h>
#include <torsion_constants.h>
#if 0
#elif 8*DIGIT_LEN == 16
const uint64_t TORSION_PLUS_EVEN_POWER = 0x91;
const uint64_t TORSION_ODD_PRIMES[34] = {0x3, 0xd, 0x29, 0x43, 0x67, 0x1cd, 0x33b, 0x5, 0x7, 0x11, 0x25, 0x35, 0x49, 0x7f, 0x97, 0x283, 0x2dd, 0x2e3, 0x3f1, 0x9eb, 0x1039, 0x13c3, 0x1bd7, 0x2965, 0x3517, 0x3a4b, 0x3cb5, 0x3e77, 0x4897, 0x5abb, 0xbc3b, 0xf70f, 0xfff1, 0x4db19};
const uint64_t TORSION_ODD_POWERS[34] = {0x48, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[7] = {0x3, 0xd, 0x29, 0x43, 0x67, 0x1cd, 0x33b};
const size_t TORSION_PLUS_ODD_POWERS[7] = {0x48, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6};
const uint64_t TORSION_MINUS_ODD_PRIMES[27] = {0x5, 0x7, 0x11, 0x25, 0x35, 0x49, 0x7f, 0x97, 0x283, 0x2dd, 0x2e3, 0x3f1, 0x9eb, 0x1039, 0x13c3, 0x1bd7, 0x2965, 0x3517, 0x3a4b, 0x3cb5, 0x3e77, 0x4897, 0x5abb, 0xbc3b, 0xf70f, 0xfff1, 0x4db19};
const size_t TORSION_MINUS_ODD_POWERS[27] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[34] = {0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 32, ._mp_d = (mp_limb_t[]) {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa6e1,0x68ad,0x994c,0x74ce,0x7819,0xa29a,0xfaf0,0xea65,0x4a0d,0xc590,0xfe3a,0x7d01,0x2650,0xbe63,0x2bd,0xe792,0x6936,0xb003,0x8c15,0x9bc6,0xa886,0x5946,0x25}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 41, ._mp_d = (mp_limb_t[]) {0x6443,0x4509,0x1585,0x113b,0x6c1d,0xac5,0x133e,0xbacd,0xbe1d,0xc40e,0x6dbd,0x1dab,0x7f88,0x84f7,0x9a8a,0xa77f,0xc9a3,0x9952,0x1850,0xa5c9,0x61d3,0xead,0x4f3e,0x684b,0x56d7,0x8f3d,0x6e0b,0x5c5b,0xed75,0x2a69,0xb601,0x6fb3,0x773f,0x44fa,0xc95c,0x5720,0x1ac,0x6b82,0xf6d9,0xf93,0x78}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[34] = {{{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0xf6a1,0xc929,0x9735,0x1e67,0x6c11,0x60e7,0x56bc,0x4}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xa6b9,0x49}}}, {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0xd6b1,0x1b20,0x1}}}, {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x5f59,0xfbd,0x15}}}, {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x1f51,0x310,0x116}}}, {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x6739,0x2acb,0x19d4,0x22}}}, {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0xa389,0x2c91,0x8ff6,0x470}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x35}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x49}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x97}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x283}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2dd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2e3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3f1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9eb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1039}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x13c3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1bd7}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2965}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3517}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3a4b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3cb5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3e77}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4897}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5abb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xbc3b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xf70f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xfff1}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xdb19,0x4}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 23, ._mp_d = (mp_limb_t[]) {0xd371,0x3456,0x4ca6,0xba67,0x3c0c,0x514d,0xfd78,0xf532,0x2506,0x62c8,0xff1d,0x3e80,0x9328,0xdf31,0x15e,0x73c9,0xb49b,0xd801,0x460a,0x4de3,0x5443,0xaca3,0x12}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xb0f3,0xa6d1,0x9048,0x1def,0x2075,0x4e99,0xa926,0xc786,0x4dda,0xdcb1,0xa4b,0x6123,0xe306,0x599e,0xfd2a,0x844f,0xae9c,0x6dde,0x6}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0xf6a1,0xc929,0x9735,0x1e67,0x6c11,0x60e7,0x56bc,0x4}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xed42,0x9253,0x2e6b,0x3ccf,0xd822,0xc1ce,0xad78,0x8}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 34, ._mp_d = (mp_limb_t[]) {0x8463,0x2824,0xc02f,0xad88,0x1daa,0x1fe6,0x44e3,0x41c4,0xd324,0x8315,0xd382,0x1f79,0xf852,0x980a,0x9bf7,0x3bf8,0xe38f,0x4576,0xb36,0x7082,0x9fe4,0x3c,0x63db,0x611f,0x3261,0x345,0x3575,0xfefa,0xf00e,0x8537,0x712c,0x9f1c,0xabde,0x1b}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 16, ._mp_d = (mp_limb_t[]) {0x3ad1,0x4eb4,0x7a3,0x1f00,0x1d6a,0x7d31,0x865,0xc7bc,0x9962,0xf08a,0x13f9,0xe003,0x6d0e,0xc440,0x4dd4,0x4}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 19, ._mp_d = (mp_limb_t[]) {0xb0f3,0xa6d1,0x9048,0x1def,0x2075,0x4e99,0xa926,0xc786,0x4dda,0xdcb1,0xa4b,0x6123,0xe306,0x599e,0xfd2a,0x844f,0xae9c,0x6dde,0x6}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xed42,0x9253,0x2e6b,0x3ccf,0xd822,0xc1ce,0xad78,0x8}}};
#elif 8*DIGIT_LEN == 32
const uint64_t TORSION_PLUS_EVEN_POWER = 0x91;
const uint64_t TORSION_ODD_PRIMES[34] = {0x3, 0xd, 0x29, 0x43, 0x67, 0x1cd, 0x33b, 0x5, 0x7, 0x11, 0x25, 0x35, 0x49, 0x7f, 0x97, 0x283, 0x2dd, 0x2e3, 0x3f1, 0x9eb, 0x1039, 0x13c3, 0x1bd7, 0x2965, 0x3517, 0x3a4b, 0x3cb5, 0x3e77, 0x4897, 0x5abb, 0xbc3b, 0xf70f, 0xfff1, 0x4db19};
const uint64_t TORSION_ODD_POWERS[34] = {0x48, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[7] = {0x3, 0xd, 0x29, 0x43, 0x67, 0x1cd, 0x33b};
const size_t TORSION_PLUS_ODD_POWERS[7] = {0x48, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6};
const uint64_t TORSION_MINUS_ODD_PRIMES[27] = {0x5, 0x7, 0x11, 0x25, 0x35, 0x49, 0x7f, 0x97, 0x283, 0x2dd, 0x2e3, 0x3f1, 0x9eb, 0x1039, 0x13c3, 0x1bd7, 0x2965, 0x3517, 0x3a4b, 0x3cb5, 0x3e77, 0x4897, 0x5abb, 0xbc3b, 0xf70f, 0xfff1, 0x4db19};
const size_t TORSION_MINUS_ODD_POWERS[27] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[34] = {0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 16, ._mp_d = (mp_limb_t[]) {0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xa6e1ffff,0x994c68ad,0x781974ce,0xfaf0a29a,0x4a0dea65,0xfe3ac590,0x26507d01,0x2bdbe63,0x6936e792,0x8c15b003,0xa8869bc6,0x255946}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 21, ._mp_d = (mp_limb_t[]) {0x45096443,0x113b1585,0xac56c1d,0xbacd133e,0xc40ebe1d,0x1dab6dbd,0x84f77f88,0xa77f9a8a,0x9952c9a3,0xa5c91850,0xead61d3,0x684b4f3e,0x8f3d56d7,0x5c5b6e0b,0x2a69ed75,0x6fb3b601,0x44fa773f,0x5720c95c,0x6b8201ac,0xf93f6d9,0x78}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[34] = {{{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0xc929f6a1,0x1e679735,0x60e76c11,0x456bc}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x49a6b9}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x1b20d6b1,0x1}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0xfbd5f59,0x15}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x3101f51,0x116}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x2acb6739,0x2219d4}}}, {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x2c91a389,0x4708ff6}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x35}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x49}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x97}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x283}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2dd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2e3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3f1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9eb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1039}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x13c3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1bd7}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2965}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3517}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3a4b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3cb5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3e77}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4897}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5abb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xbc3b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xf70f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xfff1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4db19}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 12, ._mp_d = (mp_limb_t[]) {0x3456d371,0xba674ca6,0x514d3c0c,0xf532fd78,0x62c82506,0x3e80ff1d,0xdf319328,0x73c9015e,0xd801b49b,0x4de3460a,0xaca35443,0x12}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xa6d1b0f3,0x1def9048,0x4e992075,0xc786a926,0xdcb14dda,0x61230a4b,0x599ee306,0x844ffd2a,0x6ddeae9c,0x6}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0x20000}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0xc929f6a1,0x1e679735,0x60e76c11,0x456bc}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0xed420000,0x2e6b9253,0xd8223ccf,0xad78c1ce,0x8}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 17, ._mp_d = (mp_limb_t[]) {0x28248463,0xad88c02f,0x1fe61daa,0x41c444e3,0x8315d324,0x1f79d382,0x980af852,0x3bf89bf7,0x4576e38f,0x70820b36,0x3c9fe4,0x611f63db,0x3453261,0xfefa3575,0x8537f00e,0x9f1c712c,0x1babde}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0x4eb43ad1,0x1f0007a3,0x7d311d6a,0xc7bc0865,0xf08a9962,0xe00313f9,0xc4406d0e,0x44dd4}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 10, ._mp_d = (mp_limb_t[]) {0xa6d1b0f3,0x1def9048,0x4e992075,0xc786a926,0xdcb14dda,0x61230a4b,0x599ee306,0x844ffd2a,0x6ddeae9c,0x6}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x0,0x0,0xed420000,0x2e6b9253,0xd8223ccf,0xad78c1ce,0x8}}};
#elif 8*DIGIT_LEN == 64
const uint64_t TORSION_PLUS_EVEN_POWER = 0x91;
const uint64_t TORSION_ODD_PRIMES[34] = {0x3, 0xd, 0x29, 0x43, 0x67, 0x1cd, 0x33b, 0x5, 0x7, 0x11, 0x25, 0x35, 0x49, 0x7f, 0x97, 0x283, 0x2dd, 0x2e3, 0x3f1, 0x9eb, 0x1039, 0x13c3, 0x1bd7, 0x2965, 0x3517, 0x3a4b, 0x3cb5, 0x3e77, 0x4897, 0x5abb, 0xbc3b, 0xf70f, 0xfff1, 0x4db19};
const uint64_t TORSION_ODD_POWERS[34] = {0x48, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const uint64_t TORSION_PLUS_ODD_PRIMES[7] = {0x3, 0xd, 0x29, 0x43, 0x67, 0x1cd, 0x33b};
const size_t TORSION_PLUS_ODD_POWERS[7] = {0x48, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6};
const uint64_t TORSION_MINUS_ODD_PRIMES[27] = {0x5, 0x7, 0x11, 0x25, 0x35, 0x49, 0x7f, 0x97, 0x283, 0x2dd, 0x2e3, 0x3f1, 0x9eb, 0x1039, 0x13c3, 0x1bd7, 0x2965, 0x3517, 0x3a4b, 0x3cb5, 0x3e77, 0x4897, 0x5abb, 0xbc3b, 0xf70f, 0xfff1, 0x4db19};
const size_t TORSION_MINUS_ODD_POWERS[27] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const size_t DEGREE_COMMITMENT_POWERS[34] = {0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1};
const ibz_t CHARACTERISTIC = {{._mp_alloc = 0, ._mp_size = 8, ._mp_d = (mp_limb_t[]) {0xffffffffffffffff,0xffffffffffffffff,0x994c68ada6e1ffff,0xfaf0a29a781974ce,0xfe3ac5904a0dea65,0x2bdbe6326507d01,0x8c15b0036936e792,0x255946a8869bc6}}};
const ibz_t TORSION_ODD = {{._mp_alloc = 0, ._mp_size = 11, ._mp_d = (mp_limb_t[]) {0x113b158545096443,0xbacd133e0ac56c1d,0x1dab6dbdc40ebe1d,0xa77f9a8a84f77f88,0xa5c918509952c9a3,0x684b4f3e0ead61d3,0x5c5b6e0b8f3d56d7,0x6fb3b6012a69ed75,0x5720c95c44fa773f,0xf93f6d96b8201ac,0x78}}};
const ibz_t TORSION_ODD_PRIMEPOWERS[34] = {{{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x1e679735c929f6a1,0x456bc60e76c11}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x49a6b9}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11b20d6b1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x150fbd5f59}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11603101f51}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2219d42acb6739}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4708ff62c91a389}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x11}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x25}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x35}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x49}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x7f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x97}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x283}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2dd}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2e3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3f1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x9eb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1039}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x13c3}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x1bd7}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x2965}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3517}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3a4b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3cb5}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x3e77}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4897}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x5abb}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xbc3b}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xf70f}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0xfff1}}}, {{._mp_alloc = 0, ._mp_size = 1, ._mp_d = (mp_limb_t[]) {0x4db19}}}};
const ibz_t TORSION_ODD_PLUS = {{._mp_alloc = 0, ._mp_size = 6, ._mp_d = (mp_limb_t[]) {0xba674ca63456d371,0xf532fd78514d3c0c,0x3e80ff1d62c82506,0x73c9015edf319328,0x4de3460ad801b49b,0x12aca35443}}};
const ibz_t TORSION_ODD_MINUS = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x1def9048a6d1b0f3,0xc786a9264e992075,0x61230a4bdcb14dda,0x844ffd2a599ee306,0x66ddeae9c}}};
const ibz_t TORSION_PLUS_2POWER = {{._mp_alloc = 0, ._mp_size = 3, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x20000}}};
const ibz_t TORSION_PLUS_3POWER = {{._mp_alloc = 0, ._mp_size = 2, ._mp_d = (mp_limb_t[]) {0x1e679735c929f6a1,0x456bc60e76c11}}};
const ibz_t TORSION_PLUS_23POWER = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x2e6b9253ed420000,0xad78c1ced8223ccf,0x8}}};
const ibz_t DEGREE_COMMITMENT = {{._mp_alloc = 0, ._mp_size = 9, ._mp_d = (mp_limb_t[]) {0xad88c02f28248463,0x41c444e31fe61daa,0x1f79d3828315d324,0x3bf89bf7980af852,0x70820b364576e38f,0x611f63db003c9fe4,0xfefa357503453261,0x9f1c712c8537f00e,0x1babde}}};
const ibz_t DEGREE_COMMITMENT_PLUS = {{._mp_alloc = 0, ._mp_size = 4, ._mp_d = (mp_limb_t[]) {0x1f0007a34eb43ad1,0xc7bc08657d311d6a,0xe00313f9f08a9962,0x44dd4c4406d0e}}};
const ibz_t DEGREE_COMMITMENT_MINUS = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x1def9048a6d1b0f3,0xc786a9264e992075,0x61230a4bdcb14dda,0x844ffd2a599ee306,0x66ddeae9c}}};
const ibz_t DEGREE_CHALLENGE = {{._mp_alloc = 0, ._mp_size = 5, ._mp_d = (mp_limb_t[]) {0x0,0x0,0x2e6b9253ed420000,0xad78c1ced8223ccf,0x8}}};
#endif