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,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