tommath_class.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326
  1. /* LibTomMath, multiple-precision integer library -- Tom St Denis */
  2. /* SPDX-License-Identifier: Unlicense */
  3. #if !(defined(LTM1) && defined(LTM2) && defined(LTM3))
  4. #define LTM_INSIDE
  5. #if defined(LTM2)
  6. # define LTM3
  7. #endif
  8. #if defined(LTM1)
  9. # define LTM2
  10. #endif
  11. #define LTM1
  12. #if defined(LTM_ALL)
  13. # define BN_CUTOFFS_C
  14. # define BN_DEPRECATED_C
  15. # define BN_MP_2EXPT_C
  16. # define BN_MP_ABS_C
  17. # define BN_MP_ADD_C
  18. # define BN_MP_ADD_D_C
  19. # define BN_MP_ADDMOD_C
  20. # define BN_MP_AND_C
  21. # define BN_MP_CLAMP_C
  22. # define BN_MP_CLEAR_C
  23. # define BN_MP_CLEAR_MULTI_C
  24. # define BN_MP_CMP_C
  25. # define BN_MP_CMP_D_C
  26. # define BN_MP_CMP_MAG_C
  27. # define BN_MP_CNT_LSB_C
  28. # define BN_MP_COMPLEMENT_C
  29. # define BN_MP_COPY_C
  30. # define BN_MP_COUNT_BITS_C
  31. # define BN_MP_DECR_C
  32. # define BN_MP_DIV_C
  33. # define BN_MP_DIV_2_C
  34. # define BN_MP_DIV_2D_C
  35. # define BN_MP_DIV_3_C
  36. # define BN_MP_DIV_D_C
  37. # define BN_MP_DR_IS_MODULUS_C
  38. # define BN_MP_DR_REDUCE_C
  39. # define BN_MP_DR_SETUP_C
  40. # define BN_MP_ERROR_TO_STRING_C
  41. # define BN_MP_EXCH_C
  42. # define BN_MP_EXPT_U32_C
  43. # define BN_MP_EXPTMOD_C
  44. # define BN_MP_EXTEUCLID_C
  45. # define BN_MP_FREAD_C
  46. # define BN_MP_FROM_SBIN_C
  47. # define BN_MP_FROM_UBIN_C
  48. # define BN_MP_FWRITE_C
  49. # define BN_MP_GCD_C
  50. # define BN_MP_GET_I32_C
  51. # define BN_MP_GET_I64_C
  52. # define BN_MP_GET_L_C
  53. # define BN_MP_GET_LL_C
  54. # define BN_MP_GET_MAG_U32_C
  55. # define BN_MP_GET_MAG_U64_C
  56. # define BN_MP_GET_MAG_UL_C
  57. # define BN_MP_GET_MAG_ULL_C
  58. # define BN_MP_GROW_C
  59. # define BN_MP_INCR_C
  60. # define BN_MP_INIT_C
  61. # define BN_MP_INIT_COPY_C
  62. # define BN_MP_INIT_I32_C
  63. # define BN_MP_INIT_I64_C
  64. # define BN_MP_INIT_L_C
  65. # define BN_MP_INIT_LL_C
  66. # define BN_MP_INIT_MULTI_C
  67. # define BN_MP_INIT_SET_C
  68. # define BN_MP_INIT_SIZE_C
  69. # define BN_MP_INIT_U32_C
  70. # define BN_MP_INIT_U64_C
  71. # define BN_MP_INIT_UL_C
  72. # define BN_MP_INIT_ULL_C
  73. # define BN_MP_INVMOD_C
  74. # define BN_MP_IS_SQUARE_C
  75. # define BN_MP_ISEVEN_C
  76. # define BN_MP_ISODD_C
  77. # define BN_MP_KRONECKER_C
  78. # define BN_MP_LCM_C
  79. # define BN_MP_LOG_U32_C
  80. # define BN_MP_LSHD_C
  81. # define BN_MP_MOD_C
  82. # define BN_MP_MOD_2D_C
  83. # define BN_MP_MOD_D_C
  84. # define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C
  85. # define BN_MP_MONTGOMERY_REDUCE_C
  86. # define BN_MP_MONTGOMERY_SETUP_C
  87. # define BN_MP_MUL_C
  88. # define BN_MP_MUL_2_C
  89. # define BN_MP_MUL_2D_C
  90. # define BN_MP_MUL_D_C
  91. # define BN_MP_MULMOD_C
  92. # define BN_MP_NEG_C
  93. # define BN_MP_OR_C
  94. # define BN_MP_PACK_C
  95. # define BN_MP_PACK_COUNT_C
  96. # define BN_MP_PRIME_FERMAT_C
  97. # define BN_MP_PRIME_FROBENIUS_UNDERWOOD_C
  98. # define BN_MP_PRIME_IS_PRIME_C
  99. # define BN_MP_PRIME_MILLER_RABIN_C
  100. # define BN_MP_PRIME_NEXT_PRIME_C
  101. # define BN_MP_PRIME_RABIN_MILLER_TRIALS_C
  102. # define BN_MP_PRIME_RAND_C
  103. # define BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C
  104. # define BN_MP_RADIX_SIZE_C
  105. # define BN_MP_RADIX_SMAP_C
  106. # define BN_MP_RAND_C
  107. # define BN_MP_READ_RADIX_C
  108. # define BN_MP_REDUCE_C
  109. # define BN_MP_REDUCE_2K_C
  110. # define BN_MP_REDUCE_2K_L_C
  111. # define BN_MP_REDUCE_2K_SETUP_C
  112. # define BN_MP_REDUCE_2K_SETUP_L_C
  113. # define BN_MP_REDUCE_IS_2K_C
  114. # define BN_MP_REDUCE_IS_2K_L_C
  115. # define BN_MP_REDUCE_SETUP_C
  116. # define BN_MP_ROOT_U32_C
  117. # define BN_MP_RSHD_C
  118. # define BN_MP_SBIN_SIZE_C
  119. # define BN_MP_SET_C
  120. # define BN_MP_SET_I32_C
  121. # define BN_MP_SET_I64_C
  122. # define BN_MP_SET_L_C
  123. # define BN_MP_SET_LL_C
  124. # define BN_MP_SET_U32_C
  125. # define BN_MP_SET_U64_C
  126. # define BN_MP_SET_UL_C
  127. # define BN_MP_SET_ULL_C
  128. # define BN_MP_SHRINK_C
  129. # define BN_MP_SIGNED_RSH_C
  130. # define BN_MP_SQR_C
  131. # define BN_MP_SQRMOD_C
  132. # define BN_MP_SQRT_C
  133. # define BN_MP_SQRTMOD_PRIME_C
  134. # define BN_MP_SUB_C
  135. # define BN_MP_SUB_D_C
  136. # define BN_MP_SUBMOD_C
  137. # define BN_MP_TO_RADIX_C
  138. # define BN_MP_TO_SBIN_C
  139. # define BN_MP_TO_UBIN_C
  140. # define BN_MP_UBIN_SIZE_C
  141. # define BN_MP_UNPACK_C
  142. # define BN_MP_XOR_C
  143. # define BN_MP_ZERO_C
  144. # define BN_PRIME_TAB_C
  145. # define BN_S_MP_ADD_C
  146. # define BN_S_MP_BALANCE_MUL_C
  147. # define BN_S_MP_EXPTMOD_C
  148. # define BN_S_MP_EXPTMOD_FAST_C
  149. # define BN_S_MP_GET_BIT_C
  150. # define BN_S_MP_INVMOD_FAST_C
  151. # define BN_S_MP_INVMOD_SLOW_C
  152. # define BN_S_MP_KARATSUBA_MUL_C
  153. # define BN_S_MP_KARATSUBA_SQR_C
  154. # define BN_S_MP_MONTGOMERY_REDUCE_FAST_C
  155. # define BN_S_MP_MUL_DIGS_C
  156. # define BN_S_MP_MUL_DIGS_FAST_C
  157. # define BN_S_MP_MUL_HIGH_DIGS_C
  158. # define BN_S_MP_MUL_HIGH_DIGS_FAST_C
  159. # define BN_S_MP_PRIME_IS_DIVISIBLE_C
  160. # define BN_S_MP_RAND_JENKINS_C
  161. # define BN_S_MP_RAND_PLATFORM_C
  162. # define BN_S_MP_REVERSE_C
  163. # define BN_S_MP_SQR_C
  164. # define BN_S_MP_SQR_FAST_C
  165. # define BN_S_MP_SUB_C
  166. # define BN_S_MP_TOOM_MUL_C
  167. # define BN_S_MP_TOOM_SQR_C
  168. #endif
  169. #endif
  170. #if defined(BN_CUTOFFS_C)
  171. #endif
  172. #if defined(BN_DEPRECATED_C)
  173. # define BN_FAST_MP_INVMOD_C
  174. # define BN_FAST_MP_MONTGOMERY_REDUCE_C
  175. # define BN_FAST_S_MP_MUL_DIGS_C
  176. # define BN_FAST_S_MP_MUL_HIGH_DIGS_C
  177. # define BN_FAST_S_MP_SQR_C
  178. # define BN_MP_AND_C
  179. # define BN_MP_BALANCE_MUL_C
  180. # define BN_MP_CMP_D_C
  181. # define BN_MP_EXPORT_C
  182. # define BN_MP_EXPTMOD_FAST_C
  183. # define BN_MP_EXPT_D_C
  184. # define BN_MP_EXPT_D_EX_C
  185. # define BN_MP_EXPT_U32_C
  186. # define BN_MP_FROM_SBIN_C
  187. # define BN_MP_FROM_UBIN_C
  188. # define BN_MP_GET_BIT_C
  189. # define BN_MP_GET_INT_C
  190. # define BN_MP_GET_LONG_C
  191. # define BN_MP_GET_LONG_LONG_C
  192. # define BN_MP_GET_MAG_U32_C
  193. # define BN_MP_GET_MAG_ULL_C
  194. # define BN_MP_GET_MAG_UL_C
  195. # define BN_MP_IMPORT_C
  196. # define BN_MP_INIT_SET_INT_C
  197. # define BN_MP_INIT_U32_C
  198. # define BN_MP_INVMOD_SLOW_C
  199. # define BN_MP_JACOBI_C
  200. # define BN_MP_KARATSUBA_MUL_C
  201. # define BN_MP_KARATSUBA_SQR_C
  202. # define BN_MP_KRONECKER_C
  203. # define BN_MP_N_ROOT_C
  204. # define BN_MP_N_ROOT_EX_C
  205. # define BN_MP_OR_C
  206. # define BN_MP_PACK_C
  207. # define BN_MP_PRIME_IS_DIVISIBLE_C
  208. # define BN_MP_PRIME_RANDOM_EX_C
  209. # define BN_MP_RAND_DIGIT_C
  210. # define BN_MP_READ_SIGNED_BIN_C
  211. # define BN_MP_READ_UNSIGNED_BIN_C
  212. # define BN_MP_ROOT_U32_C
  213. # define BN_MP_SBIN_SIZE_C
  214. # define BN_MP_SET_INT_C
  215. # define BN_MP_SET_LONG_C
  216. # define BN_MP_SET_LONG_LONG_C
  217. # define BN_MP_SET_U32_C
  218. # define BN_MP_SET_U64_C
  219. # define BN_MP_SIGNED_BIN_SIZE_C
  220. # define BN_MP_SIGNED_RSH_C
  221. # define BN_MP_TC_AND_C
  222. # define BN_MP_TC_DIV_2D_C
  223. # define BN_MP_TC_OR_C
  224. # define BN_MP_TC_XOR_C
  225. # define BN_MP_TOOM_MUL_C
  226. # define BN_MP_TOOM_SQR_C
  227. # define BN_MP_TORADIX_C
  228. # define BN_MP_TORADIX_N_C
  229. # define BN_MP_TO_RADIX_C
  230. # define BN_MP_TO_SBIN_C
  231. # define BN_MP_TO_SIGNED_BIN_C
  232. # define BN_MP_TO_SIGNED_BIN_N_C
  233. # define BN_MP_TO_UBIN_C
  234. # define BN_MP_TO_UNSIGNED_BIN_C
  235. # define BN_MP_TO_UNSIGNED_BIN_N_C
  236. # define BN_MP_UBIN_SIZE_C
  237. # define BN_MP_UNPACK_C
  238. # define BN_MP_UNSIGNED_BIN_SIZE_C
  239. # define BN_MP_XOR_C
  240. # define BN_S_MP_BALANCE_MUL_C
  241. # define BN_S_MP_EXPTMOD_FAST_C
  242. # define BN_S_MP_GET_BIT_C
  243. # define BN_S_MP_INVMOD_FAST_C
  244. # define BN_S_MP_INVMOD_SLOW_C
  245. # define BN_S_MP_KARATSUBA_MUL_C
  246. # define BN_S_MP_KARATSUBA_SQR_C
  247. # define BN_S_MP_MONTGOMERY_REDUCE_FAST_C
  248. # define BN_S_MP_MUL_DIGS_FAST_C
  249. # define BN_S_MP_MUL_HIGH_DIGS_FAST_C
  250. # define BN_S_MP_PRIME_IS_DIVISIBLE_C
  251. # define BN_S_MP_PRIME_RANDOM_EX_C
  252. # define BN_S_MP_RAND_SOURCE_C
  253. # define BN_S_MP_REVERSE_C
  254. # define BN_S_MP_SQR_FAST_C
  255. # define BN_S_MP_TOOM_MUL_C
  256. # define BN_S_MP_TOOM_SQR_C
  257. #endif
  258. #if defined(BN_MP_2EXPT_C)
  259. # define BN_MP_GROW_C
  260. # define BN_MP_ZERO_C
  261. #endif
  262. #if defined(BN_MP_ABS_C)
  263. # define BN_MP_COPY_C
  264. #endif
  265. #if defined(BN_MP_ADD_C)
  266. # define BN_MP_CMP_MAG_C
  267. # define BN_S_MP_ADD_C
  268. # define BN_S_MP_SUB_C
  269. #endif
  270. #if defined(BN_MP_ADD_D_C)
  271. # define BN_MP_CLAMP_C
  272. # define BN_MP_GROW_C
  273. # define BN_MP_SUB_D_C
  274. #endif
  275. #if defined(BN_MP_ADDMOD_C)
  276. # define BN_MP_ADD_C
  277. # define BN_MP_CLEAR_C
  278. # define BN_MP_INIT_C
  279. # define BN_MP_MOD_C
  280. #endif
  281. #if defined(BN_MP_AND_C)
  282. # define BN_MP_CLAMP_C
  283. # define BN_MP_GROW_C
  284. #endif
  285. #if defined(BN_MP_CLAMP_C)
  286. #endif
  287. #if defined(BN_MP_CLEAR_C)
  288. #endif
  289. #if defined(BN_MP_CLEAR_MULTI_C)
  290. # define BN_MP_CLEAR_C
  291. #endif
  292. #if defined(BN_MP_CMP_C)
  293. # define BN_MP_CMP_MAG_C
  294. #endif
  295. #if defined(BN_MP_CMP_D_C)
  296. #endif
  297. #if defined(BN_MP_CMP_MAG_C)
  298. #endif
  299. #if defined(BN_MP_CNT_LSB_C)
  300. #endif
  301. #if defined(BN_MP_COMPLEMENT_C)
  302. # define BN_MP_NEG_C
  303. # define BN_MP_SUB_D_C
  304. #endif
  305. #if defined(BN_MP_COPY_C)
  306. # define BN_MP_GROW_C
  307. #endif
  308. #if defined(BN_MP_COUNT_BITS_C)
  309. #endif
  310. #if defined(BN_MP_DECR_C)
  311. # define BN_MP_INCR_C
  312. # define BN_MP_SET_C
  313. # define BN_MP_SUB_D_C
  314. # define BN_MP_ZERO_C
  315. #endif
  316. #if defined(BN_MP_DIV_C)
  317. # define BN_MP_ADD_C
  318. # define BN_MP_CLAMP_C
  319. # define BN_MP_CLEAR_C
  320. # define BN_MP_CMP_C
  321. # define BN_MP_CMP_MAG_C
  322. # define BN_MP_COPY_C
  323. # define BN_MP_COUNT_BITS_C
  324. # define BN_MP_DIV_2D_C
  325. # define BN_MP_EXCH_C
  326. # define BN_MP_INIT_C
  327. # define BN_MP_INIT_COPY_C
  328. # define BN_MP_INIT_SIZE_C
  329. # define BN_MP_LSHD_C
  330. # define BN_MP_MUL_2D_C
  331. # define BN_MP_MUL_D_C
  332. # define BN_MP_RSHD_C
  333. # define BN_MP_SUB_C
  334. # define BN_MP_ZERO_C
  335. #endif
  336. #if defined(BN_MP_DIV_2_C)
  337. # define BN_MP_CLAMP_C
  338. # define BN_MP_GROW_C
  339. #endif
  340. #if defined(BN_MP_DIV_2D_C)
  341. # define BN_MP_CLAMP_C
  342. # define BN_MP_COPY_C
  343. # define BN_MP_MOD_2D_C
  344. # define BN_MP_RSHD_C
  345. # define BN_MP_ZERO_C
  346. #endif
  347. #if defined(BN_MP_DIV_3_C)
  348. # define BN_MP_CLAMP_C
  349. # define BN_MP_CLEAR_C
  350. # define BN_MP_EXCH_C
  351. # define BN_MP_INIT_SIZE_C
  352. #endif
  353. #if defined(BN_MP_DIV_D_C)
  354. # define BN_MP_CLAMP_C
  355. # define BN_MP_CLEAR_C
  356. # define BN_MP_COPY_C
  357. # define BN_MP_DIV_2D_C
  358. # define BN_MP_DIV_3_C
  359. # define BN_MP_EXCH_C
  360. # define BN_MP_INIT_SIZE_C
  361. #endif
  362. #if defined(BN_MP_DR_IS_MODULUS_C)
  363. #endif
  364. #if defined(BN_MP_DR_REDUCE_C)
  365. # define BN_MP_CLAMP_C
  366. # define BN_MP_CMP_MAG_C
  367. # define BN_MP_GROW_C
  368. # define BN_S_MP_SUB_C
  369. #endif
  370. #if defined(BN_MP_DR_SETUP_C)
  371. #endif
  372. #if defined(BN_MP_ERROR_TO_STRING_C)
  373. #endif
  374. #if defined(BN_MP_EXCH_C)
  375. #endif
  376. #if defined(BN_MP_EXPT_U32_C)
  377. # define BN_MP_CLEAR_C
  378. # define BN_MP_INIT_COPY_C
  379. # define BN_MP_MUL_C
  380. # define BN_MP_SET_C
  381. # define BN_MP_SQR_C
  382. #endif
  383. #if defined(BN_MP_EXPTMOD_C)
  384. # define BN_MP_ABS_C
  385. # define BN_MP_CLEAR_MULTI_C
  386. # define BN_MP_DR_IS_MODULUS_C
  387. # define BN_MP_INIT_MULTI_C
  388. # define BN_MP_INVMOD_C
  389. # define BN_MP_REDUCE_IS_2K_C
  390. # define BN_MP_REDUCE_IS_2K_L_C
  391. # define BN_S_MP_EXPTMOD_C
  392. # define BN_S_MP_EXPTMOD_FAST_C
  393. #endif
  394. #if defined(BN_MP_EXTEUCLID_C)
  395. # define BN_MP_CLEAR_MULTI_C
  396. # define BN_MP_COPY_C
  397. # define BN_MP_DIV_C
  398. # define BN_MP_EXCH_C
  399. # define BN_MP_INIT_MULTI_C
  400. # define BN_MP_MUL_C
  401. # define BN_MP_NEG_C
  402. # define BN_MP_SET_C
  403. # define BN_MP_SUB_C
  404. #endif
  405. #if defined(BN_MP_FREAD_C)
  406. # define BN_MP_ADD_D_C
  407. # define BN_MP_MUL_D_C
  408. # define BN_MP_ZERO_C
  409. #endif
  410. #if defined(BN_MP_FROM_SBIN_C)
  411. # define BN_MP_FROM_UBIN_C
  412. #endif
  413. #if defined(BN_MP_FROM_UBIN_C)
  414. # define BN_MP_CLAMP_C
  415. # define BN_MP_GROW_C
  416. # define BN_MP_MUL_2D_C
  417. # define BN_MP_ZERO_C
  418. #endif
  419. #if defined(BN_MP_FWRITE_C)
  420. # define BN_MP_RADIX_SIZE_C
  421. # define BN_MP_TO_RADIX_C
  422. #endif
  423. #if defined(BN_MP_GCD_C)
  424. # define BN_MP_ABS_C
  425. # define BN_MP_CLEAR_C
  426. # define BN_MP_CMP_MAG_C
  427. # define BN_MP_CNT_LSB_C
  428. # define BN_MP_DIV_2D_C
  429. # define BN_MP_EXCH_C
  430. # define BN_MP_INIT_COPY_C
  431. # define BN_MP_MUL_2D_C
  432. # define BN_S_MP_SUB_C
  433. #endif
  434. #if defined(BN_MP_GET_I32_C)
  435. # define BN_MP_GET_MAG_U32_C
  436. #endif
  437. #if defined(BN_MP_GET_I64_C)
  438. # define BN_MP_GET_MAG_U64_C
  439. #endif
  440. #if defined(BN_MP_GET_L_C)
  441. # define BN_MP_GET_MAG_UL_C
  442. #endif
  443. #if defined(BN_MP_GET_LL_C)
  444. # define BN_MP_GET_MAG_ULL_C
  445. #endif
  446. #if defined(BN_MP_GET_MAG_U32_C)
  447. #endif
  448. #if defined(BN_MP_GET_MAG_U64_C)
  449. #endif
  450. #if defined(BN_MP_GET_MAG_UL_C)
  451. #endif
  452. #if defined(BN_MP_GET_MAG_ULL_C)
  453. #endif
  454. #if defined(BN_MP_GROW_C)
  455. #endif
  456. #if defined(BN_MP_INCR_C)
  457. # define BN_MP_ADD_D_C
  458. # define BN_MP_DECR_C
  459. # define BN_MP_SET_C
  460. #endif
  461. #if defined(BN_MP_INIT_C)
  462. #endif
  463. #if defined(BN_MP_INIT_COPY_C)
  464. # define BN_MP_CLEAR_C
  465. # define BN_MP_COPY_C
  466. # define BN_MP_INIT_SIZE_C
  467. #endif
  468. #if defined(BN_MP_INIT_I32_C)
  469. # define BN_MP_INIT_C
  470. # define BN_MP_SET_I32_C
  471. #endif
  472. #if defined(BN_MP_INIT_I64_C)
  473. # define BN_MP_INIT_C
  474. # define BN_MP_SET_I64_C
  475. #endif
  476. #if defined(BN_MP_INIT_L_C)
  477. # define BN_MP_INIT_C
  478. # define BN_MP_SET_L_C
  479. #endif
  480. #if defined(BN_MP_INIT_LL_C)
  481. # define BN_MP_INIT_C
  482. # define BN_MP_SET_LL_C
  483. #endif
  484. #if defined(BN_MP_INIT_MULTI_C)
  485. # define BN_MP_CLEAR_C
  486. # define BN_MP_INIT_C
  487. #endif
  488. #if defined(BN_MP_INIT_SET_C)
  489. # define BN_MP_INIT_C
  490. # define BN_MP_SET_C
  491. #endif
  492. #if defined(BN_MP_INIT_SIZE_C)
  493. #endif
  494. #if defined(BN_MP_INIT_U32_C)
  495. # define BN_MP_INIT_C
  496. # define BN_MP_SET_U32_C
  497. #endif
  498. #if defined(BN_MP_INIT_U64_C)
  499. # define BN_MP_INIT_C
  500. # define BN_MP_SET_U64_C
  501. #endif
  502. #if defined(BN_MP_INIT_UL_C)
  503. # define BN_MP_INIT_C
  504. # define BN_MP_SET_UL_C
  505. #endif
  506. #if defined(BN_MP_INIT_ULL_C)
  507. # define BN_MP_INIT_C
  508. # define BN_MP_SET_ULL_C
  509. #endif
  510. #if defined(BN_MP_INVMOD_C)
  511. # define BN_MP_CMP_D_C
  512. # define BN_S_MP_INVMOD_FAST_C
  513. # define BN_S_MP_INVMOD_SLOW_C
  514. #endif
  515. #if defined(BN_MP_IS_SQUARE_C)
  516. # define BN_MP_CLEAR_C
  517. # define BN_MP_CMP_MAG_C
  518. # define BN_MP_GET_I32_C
  519. # define BN_MP_INIT_U32_C
  520. # define BN_MP_MOD_C
  521. # define BN_MP_MOD_D_C
  522. # define BN_MP_SQRT_C
  523. # define BN_MP_SQR_C
  524. #endif
  525. #if defined(BN_MP_ISEVEN_C)
  526. #endif
  527. #if defined(BN_MP_ISODD_C)
  528. #endif
  529. #if defined(BN_MP_KRONECKER_C)
  530. # define BN_MP_CLEAR_C
  531. # define BN_MP_CMP_D_C
  532. # define BN_MP_CNT_LSB_C
  533. # define BN_MP_COPY_C
  534. # define BN_MP_DIV_2D_C
  535. # define BN_MP_INIT_C
  536. # define BN_MP_INIT_COPY_C
  537. # define BN_MP_MOD_C
  538. #endif
  539. #if defined(BN_MP_LCM_C)
  540. # define BN_MP_CLEAR_MULTI_C
  541. # define BN_MP_CMP_MAG_C
  542. # define BN_MP_DIV_C
  543. # define BN_MP_GCD_C
  544. # define BN_MP_INIT_MULTI_C
  545. # define BN_MP_MUL_C
  546. #endif
  547. #if defined(BN_MP_LOG_U32_C)
  548. # define BN_MP_CLEAR_MULTI_C
  549. # define BN_MP_CMP_C
  550. # define BN_MP_CMP_D_C
  551. # define BN_MP_COPY_C
  552. # define BN_MP_COUNT_BITS_C
  553. # define BN_MP_EXCH_C
  554. # define BN_MP_EXPT_U32_C
  555. # define BN_MP_INIT_MULTI_C
  556. # define BN_MP_MUL_C
  557. # define BN_MP_SET_C
  558. # define BN_MP_SQR_C
  559. #endif
  560. #if defined(BN_MP_LSHD_C)
  561. # define BN_MP_GROW_C
  562. #endif
  563. #if defined(BN_MP_MOD_C)
  564. # define BN_MP_ADD_C
  565. # define BN_MP_CLEAR_C
  566. # define BN_MP_DIV_C
  567. # define BN_MP_EXCH_C
  568. # define BN_MP_INIT_SIZE_C
  569. #endif
  570. #if defined(BN_MP_MOD_2D_C)
  571. # define BN_MP_CLAMP_C
  572. # define BN_MP_COPY_C
  573. # define BN_MP_ZERO_C
  574. #endif
  575. #if defined(BN_MP_MOD_D_C)
  576. # define BN_MP_DIV_D_C
  577. #endif
  578. #if defined(BN_MP_MONTGOMERY_CALC_NORMALIZATION_C)
  579. # define BN_MP_2EXPT_C
  580. # define BN_MP_CMP_MAG_C
  581. # define BN_MP_COUNT_BITS_C
  582. # define BN_MP_MUL_2_C
  583. # define BN_MP_SET_C
  584. # define BN_S_MP_SUB_C
  585. #endif
  586. #if defined(BN_MP_MONTGOMERY_REDUCE_C)
  587. # define BN_MP_CLAMP_C
  588. # define BN_MP_CMP_MAG_C
  589. # define BN_MP_GROW_C
  590. # define BN_MP_RSHD_C
  591. # define BN_S_MP_MONTGOMERY_REDUCE_FAST_C
  592. # define BN_S_MP_SUB_C
  593. #endif
  594. #if defined(BN_MP_MONTGOMERY_SETUP_C)
  595. #endif
  596. #if defined(BN_MP_MUL_C)
  597. # define BN_S_MP_BALANCE_MUL_C
  598. # define BN_S_MP_KARATSUBA_MUL_C
  599. # define BN_S_MP_MUL_DIGS_C
  600. # define BN_S_MP_MUL_DIGS_FAST_C
  601. # define BN_S_MP_TOOM_MUL_C
  602. #endif
  603. #if defined(BN_MP_MUL_2_C)
  604. # define BN_MP_GROW_C
  605. #endif
  606. #if defined(BN_MP_MUL_2D_C)
  607. # define BN_MP_CLAMP_C
  608. # define BN_MP_COPY_C
  609. # define BN_MP_GROW_C
  610. # define BN_MP_LSHD_C
  611. #endif
  612. #if defined(BN_MP_MUL_D_C)
  613. # define BN_MP_CLAMP_C
  614. # define BN_MP_GROW_C
  615. #endif
  616. #if defined(BN_MP_MULMOD_C)
  617. # define BN_MP_CLEAR_C
  618. # define BN_MP_INIT_SIZE_C
  619. # define BN_MP_MOD_C
  620. # define BN_MP_MUL_C
  621. #endif
  622. #if defined(BN_MP_NEG_C)
  623. # define BN_MP_COPY_C
  624. #endif
  625. #if defined(BN_MP_OR_C)
  626. # define BN_MP_CLAMP_C
  627. # define BN_MP_GROW_C
  628. #endif
  629. #if defined(BN_MP_PACK_C)
  630. # define BN_MP_CLEAR_C
  631. # define BN_MP_DIV_2D_C
  632. # define BN_MP_INIT_COPY_C
  633. # define BN_MP_PACK_COUNT_C
  634. #endif
  635. #if defined(BN_MP_PACK_COUNT_C)
  636. # define BN_MP_COUNT_BITS_C
  637. #endif
  638. #if defined(BN_MP_PRIME_FERMAT_C)
  639. # define BN_MP_CLEAR_C
  640. # define BN_MP_CMP_C
  641. # define BN_MP_CMP_D_C
  642. # define BN_MP_EXPTMOD_C
  643. # define BN_MP_INIT_C
  644. #endif
  645. #if defined(BN_MP_PRIME_FROBENIUS_UNDERWOOD_C)
  646. # define BN_MP_ADD_C
  647. # define BN_MP_ADD_D_C
  648. # define BN_MP_CLEAR_MULTI_C
  649. # define BN_MP_CMP_C
  650. # define BN_MP_COUNT_BITS_C
  651. # define BN_MP_EXCH_C
  652. # define BN_MP_GCD_C
  653. # define BN_MP_INIT_MULTI_C
  654. # define BN_MP_KRONECKER_C
  655. # define BN_MP_MOD_C
  656. # define BN_MP_MUL_2_C
  657. # define BN_MP_MUL_C
  658. # define BN_MP_MUL_D_C
  659. # define BN_MP_SET_C
  660. # define BN_MP_SET_U32_C
  661. # define BN_MP_SQR_C
  662. # define BN_MP_SUB_C
  663. # define BN_MP_SUB_D_C
  664. # define BN_S_MP_GET_BIT_C
  665. #endif
  666. #if defined(BN_MP_PRIME_IS_PRIME_C)
  667. # define BN_MP_CLEAR_C
  668. # define BN_MP_CMP_C
  669. # define BN_MP_CMP_D_C
  670. # define BN_MP_COUNT_BITS_C
  671. # define BN_MP_DIV_2D_C
  672. # define BN_MP_INIT_SET_C
  673. # define BN_MP_IS_SQUARE_C
  674. # define BN_MP_PRIME_MILLER_RABIN_C
  675. # define BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C
  676. # define BN_MP_RAND_C
  677. # define BN_MP_READ_RADIX_C
  678. # define BN_MP_SET_C
  679. # define BN_S_MP_PRIME_IS_DIVISIBLE_C
  680. #endif
  681. #if defined(BN_MP_PRIME_MILLER_RABIN_C)
  682. # define BN_MP_CLEAR_C
  683. # define BN_MP_CMP_C
  684. # define BN_MP_CMP_D_C
  685. # define BN_MP_CNT_LSB_C
  686. # define BN_MP_DIV_2D_C
  687. # define BN_MP_EXPTMOD_C
  688. # define BN_MP_INIT_C
  689. # define BN_MP_INIT_COPY_C
  690. # define BN_MP_SQRMOD_C
  691. # define BN_MP_SUB_D_C
  692. #endif
  693. #if defined(BN_MP_PRIME_NEXT_PRIME_C)
  694. # define BN_MP_ADD_D_C
  695. # define BN_MP_CLEAR_C
  696. # define BN_MP_CMP_D_C
  697. # define BN_MP_INIT_C
  698. # define BN_MP_MOD_D_C
  699. # define BN_MP_PRIME_IS_PRIME_C
  700. # define BN_MP_SET_C
  701. # define BN_MP_SUB_D_C
  702. #endif
  703. #if defined(BN_MP_PRIME_RABIN_MILLER_TRIALS_C)
  704. #endif
  705. #if defined(BN_MP_PRIME_RAND_C)
  706. # define BN_MP_ADD_D_C
  707. # define BN_MP_DIV_2_C
  708. # define BN_MP_FROM_UBIN_C
  709. # define BN_MP_MUL_2_C
  710. # define BN_MP_PRIME_IS_PRIME_C
  711. # define BN_MP_SUB_D_C
  712. # define BN_S_MP_PRIME_RANDOM_EX_C
  713. # define BN_S_MP_RAND_CB_C
  714. # define BN_S_MP_RAND_SOURCE_C
  715. #endif
  716. #if defined(BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C)
  717. # define BN_MP_ADD_C
  718. # define BN_MP_ADD_D_C
  719. # define BN_MP_CLEAR_C
  720. # define BN_MP_CLEAR_MULTI_C
  721. # define BN_MP_CMP_C
  722. # define BN_MP_CMP_D_C
  723. # define BN_MP_CNT_LSB_C
  724. # define BN_MP_COUNT_BITS_C
  725. # define BN_MP_DIV_2D_C
  726. # define BN_MP_DIV_2_C
  727. # define BN_MP_GCD_C
  728. # define BN_MP_INIT_C
  729. # define BN_MP_INIT_MULTI_C
  730. # define BN_MP_KRONECKER_C
  731. # define BN_MP_MOD_C
  732. # define BN_MP_MUL_2_C
  733. # define BN_MP_MUL_C
  734. # define BN_MP_SET_C
  735. # define BN_MP_SET_I32_C
  736. # define BN_MP_SET_U32_C
  737. # define BN_MP_SQR_C
  738. # define BN_MP_SUB_C
  739. # define BN_MP_SUB_D_C
  740. # define BN_S_MP_GET_BIT_C
  741. # define BN_S_MP_MUL_SI_C
  742. #endif
  743. #if defined(BN_MP_RADIX_SIZE_C)
  744. # define BN_MP_CLEAR_C
  745. # define BN_MP_COUNT_BITS_C
  746. # define BN_MP_DIV_D_C
  747. # define BN_MP_INIT_COPY_C
  748. #endif
  749. #if defined(BN_MP_RADIX_SMAP_C)
  750. #endif
  751. #if defined(BN_MP_RAND_C)
  752. # define BN_MP_GROW_C
  753. # define BN_MP_RAND_SOURCE_C
  754. # define BN_MP_ZERO_C
  755. # define BN_S_MP_RAND_PLATFORM_C
  756. # define BN_S_MP_RAND_SOURCE_C
  757. #endif
  758. #if defined(BN_MP_READ_RADIX_C)
  759. # define BN_MP_ADD_D_C
  760. # define BN_MP_MUL_D_C
  761. # define BN_MP_ZERO_C
  762. #endif
  763. #if defined(BN_MP_REDUCE_C)
  764. # define BN_MP_ADD_C
  765. # define BN_MP_CLEAR_C
  766. # define BN_MP_CMP_C
  767. # define BN_MP_CMP_D_C
  768. # define BN_MP_INIT_COPY_C
  769. # define BN_MP_LSHD_C
  770. # define BN_MP_MOD_2D_C
  771. # define BN_MP_MUL_C
  772. # define BN_MP_RSHD_C
  773. # define BN_MP_SET_C
  774. # define BN_MP_SUB_C
  775. # define BN_S_MP_MUL_DIGS_C
  776. # define BN_S_MP_MUL_HIGH_DIGS_C
  777. # define BN_S_MP_MUL_HIGH_DIGS_FAST_C
  778. # define BN_S_MP_SUB_C
  779. #endif
  780. #if defined(BN_MP_REDUCE_2K_C)
  781. # define BN_MP_CLEAR_C
  782. # define BN_MP_CMP_MAG_C
  783. # define BN_MP_COUNT_BITS_C
  784. # define BN_MP_DIV_2D_C
  785. # define BN_MP_INIT_C
  786. # define BN_MP_MUL_D_C
  787. # define BN_S_MP_ADD_C
  788. # define BN_S_MP_SUB_C
  789. #endif
  790. #if defined(BN_MP_REDUCE_2K_L_C)
  791. # define BN_MP_CLEAR_C
  792. # define BN_MP_CMP_MAG_C
  793. # define BN_MP_COUNT_BITS_C
  794. # define BN_MP_DIV_2D_C
  795. # define BN_MP_INIT_C
  796. # define BN_MP_MUL_C
  797. # define BN_S_MP_ADD_C
  798. # define BN_S_MP_SUB_C
  799. #endif
  800. #if defined(BN_MP_REDUCE_2K_SETUP_C)
  801. # define BN_MP_2EXPT_C
  802. # define BN_MP_CLEAR_C
  803. # define BN_MP_COUNT_BITS_C
  804. # define BN_MP_INIT_C
  805. # define BN_S_MP_SUB_C
  806. #endif
  807. #if defined(BN_MP_REDUCE_2K_SETUP_L_C)
  808. # define BN_MP_2EXPT_C
  809. # define BN_MP_CLEAR_C
  810. # define BN_MP_COUNT_BITS_C
  811. # define BN_MP_INIT_C
  812. # define BN_S_MP_SUB_C
  813. #endif
  814. #if defined(BN_MP_REDUCE_IS_2K_C)
  815. # define BN_MP_COUNT_BITS_C
  816. #endif
  817. #if defined(BN_MP_REDUCE_IS_2K_L_C)
  818. #endif
  819. #if defined(BN_MP_REDUCE_SETUP_C)
  820. # define BN_MP_2EXPT_C
  821. # define BN_MP_DIV_C
  822. #endif
  823. #if defined(BN_MP_ROOT_U32_C)
  824. # define BN_MP_2EXPT_C
  825. # define BN_MP_ADD_D_C
  826. # define BN_MP_CLEAR_MULTI_C
  827. # define BN_MP_CMP_C
  828. # define BN_MP_COPY_C
  829. # define BN_MP_COUNT_BITS_C
  830. # define BN_MP_DIV_C
  831. # define BN_MP_EXCH_C
  832. # define BN_MP_EXPT_U32_C
  833. # define BN_MP_INIT_MULTI_C
  834. # define BN_MP_MUL_C
  835. # define BN_MP_MUL_D_C
  836. # define BN_MP_SET_C
  837. # define BN_MP_SUB_C
  838. # define BN_MP_SUB_D_C
  839. #endif
  840. #if defined(BN_MP_RSHD_C)
  841. # define BN_MP_ZERO_C
  842. #endif
  843. #if defined(BN_MP_SBIN_SIZE_C)
  844. # define BN_MP_UBIN_SIZE_C
  845. #endif
  846. #if defined(BN_MP_SET_C)
  847. #endif
  848. #if defined(BN_MP_SET_I32_C)
  849. # define BN_MP_SET_U32_C
  850. #endif
  851. #if defined(BN_MP_SET_I64_C)
  852. # define BN_MP_SET_U64_C
  853. #endif
  854. #if defined(BN_MP_SET_L_C)
  855. # define BN_MP_SET_UL_C
  856. #endif
  857. #if defined(BN_MP_SET_LL_C)
  858. # define BN_MP_SET_ULL_C
  859. #endif
  860. #if defined(BN_MP_SET_U32_C)
  861. #endif
  862. #if defined(BN_MP_SET_U64_C)
  863. #endif
  864. #if defined(BN_MP_SET_UL_C)
  865. #endif
  866. #if defined(BN_MP_SET_ULL_C)
  867. #endif
  868. #if defined(BN_MP_SHRINK_C)
  869. #endif
  870. #if defined(BN_MP_SIGNED_RSH_C)
  871. # define BN_MP_ADD_D_C
  872. # define BN_MP_DIV_2D_C
  873. # define BN_MP_SUB_D_C
  874. #endif
  875. #if defined(BN_MP_SQR_C)
  876. # define BN_S_MP_KARATSUBA_SQR_C
  877. # define BN_S_MP_SQR_C
  878. # define BN_S_MP_SQR_FAST_C
  879. # define BN_S_MP_TOOM_SQR_C
  880. #endif
  881. #if defined(BN_MP_SQRMOD_C)
  882. # define BN_MP_CLEAR_C
  883. # define BN_MP_INIT_C
  884. # define BN_MP_MOD_C
  885. # define BN_MP_SQR_C
  886. #endif
  887. #if defined(BN_MP_SQRT_C)
  888. # define BN_MP_ADD_C
  889. # define BN_MP_CLEAR_C
  890. # define BN_MP_CMP_MAG_C
  891. # define BN_MP_DIV_2_C
  892. # define BN_MP_DIV_C
  893. # define BN_MP_EXCH_C
  894. # define BN_MP_INIT_C
  895. # define BN_MP_INIT_COPY_C
  896. # define BN_MP_RSHD_C
  897. # define BN_MP_ZERO_C
  898. #endif
  899. #if defined(BN_MP_SQRTMOD_PRIME_C)
  900. # define BN_MP_ADD_D_C
  901. # define BN_MP_CLEAR_MULTI_C
  902. # define BN_MP_CMP_D_C
  903. # define BN_MP_COPY_C
  904. # define BN_MP_DIV_2_C
  905. # define BN_MP_EXPTMOD_C
  906. # define BN_MP_INIT_MULTI_C
  907. # define BN_MP_KRONECKER_C
  908. # define BN_MP_MOD_D_C
  909. # define BN_MP_MULMOD_C
  910. # define BN_MP_SET_C
  911. # define BN_MP_SET_U32_C
  912. # define BN_MP_SQRMOD_C
  913. # define BN_MP_SUB_D_C
  914. # define BN_MP_ZERO_C
  915. #endif
  916. #if defined(BN_MP_SUB_C)
  917. # define BN_MP_CMP_MAG_C
  918. # define BN_S_MP_ADD_C
  919. # define BN_S_MP_SUB_C
  920. #endif
  921. #if defined(BN_MP_SUB_D_C)
  922. # define BN_MP_ADD_D_C
  923. # define BN_MP_CLAMP_C
  924. # define BN_MP_GROW_C
  925. #endif
  926. #if defined(BN_MP_SUBMOD_C)
  927. # define BN_MP_CLEAR_C
  928. # define BN_MP_INIT_C
  929. # define BN_MP_MOD_C
  930. # define BN_MP_SUB_C
  931. #endif
  932. #if defined(BN_MP_TO_RADIX_C)
  933. # define BN_MP_CLEAR_C
  934. # define BN_MP_DIV_D_C
  935. # define BN_MP_INIT_COPY_C
  936. # define BN_S_MP_REVERSE_C
  937. #endif
  938. #if defined(BN_MP_TO_SBIN_C)
  939. # define BN_MP_TO_UBIN_C
  940. #endif
  941. #if defined(BN_MP_TO_UBIN_C)
  942. # define BN_MP_CLEAR_C
  943. # define BN_MP_DIV_2D_C
  944. # define BN_MP_INIT_COPY_C
  945. # define BN_MP_UBIN_SIZE_C
  946. #endif
  947. #if defined(BN_MP_UBIN_SIZE_C)
  948. # define BN_MP_COUNT_BITS_C
  949. #endif
  950. #if defined(BN_MP_UNPACK_C)
  951. # define BN_MP_CLAMP_C
  952. # define BN_MP_MUL_2D_C
  953. # define BN_MP_ZERO_C
  954. #endif
  955. #if defined(BN_MP_XOR_C)
  956. # define BN_MP_CLAMP_C
  957. # define BN_MP_GROW_C
  958. #endif
  959. #if defined(BN_MP_ZERO_C)
  960. #endif
  961. #if defined(BN_PRIME_TAB_C)
  962. #endif
  963. #if defined(BN_S_MP_ADD_C)
  964. # define BN_MP_CLAMP_C
  965. # define BN_MP_GROW_C
  966. #endif
  967. #if defined(BN_S_MP_BALANCE_MUL_C)
  968. # define BN_MP_ADD_C
  969. # define BN_MP_CLAMP_C
  970. # define BN_MP_CLEAR_C
  971. # define BN_MP_CLEAR_MULTI_C
  972. # define BN_MP_EXCH_C
  973. # define BN_MP_INIT_MULTI_C
  974. # define BN_MP_INIT_SIZE_C
  975. # define BN_MP_LSHD_C
  976. # define BN_MP_MUL_C
  977. #endif
  978. #if defined(BN_S_MP_EXPTMOD_C)
  979. # define BN_MP_CLEAR_C
  980. # define BN_MP_COPY_C
  981. # define BN_MP_COUNT_BITS_C
  982. # define BN_MP_EXCH_C
  983. # define BN_MP_INIT_C
  984. # define BN_MP_MOD_C
  985. # define BN_MP_MUL_C
  986. # define BN_MP_REDUCE_2K_L_C
  987. # define BN_MP_REDUCE_2K_SETUP_L_C
  988. # define BN_MP_REDUCE_C
  989. # define BN_MP_REDUCE_SETUP_C
  990. # define BN_MP_SET_C
  991. # define BN_MP_SQR_C
  992. #endif
  993. #if defined(BN_S_MP_EXPTMOD_FAST_C)
  994. # define BN_MP_CLEAR_C
  995. # define BN_MP_COPY_C
  996. # define BN_MP_COUNT_BITS_C
  997. # define BN_MP_DR_REDUCE_C
  998. # define BN_MP_DR_SETUP_C
  999. # define BN_MP_EXCH_C
  1000. # define BN_MP_INIT_SIZE_C
  1001. # define BN_MP_MOD_C
  1002. # define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C
  1003. # define BN_MP_MONTGOMERY_REDUCE_C
  1004. # define BN_MP_MONTGOMERY_SETUP_C
  1005. # define BN_MP_MULMOD_C
  1006. # define BN_MP_MUL_C
  1007. # define BN_MP_REDUCE_2K_C
  1008. # define BN_MP_REDUCE_2K_SETUP_C
  1009. # define BN_MP_SET_C
  1010. # define BN_MP_SQR_C
  1011. # define BN_S_MP_MONTGOMERY_REDUCE_FAST_C
  1012. #endif
  1013. #if defined(BN_S_MP_GET_BIT_C)
  1014. #endif
  1015. #if defined(BN_S_MP_INVMOD_FAST_C)
  1016. # define BN_MP_ADD_C
  1017. # define BN_MP_CLEAR_MULTI_C
  1018. # define BN_MP_CMP_C
  1019. # define BN_MP_CMP_D_C
  1020. # define BN_MP_CMP_MAG_C
  1021. # define BN_MP_COPY_C
  1022. # define BN_MP_DIV_2_C
  1023. # define BN_MP_EXCH_C
  1024. # define BN_MP_INIT_MULTI_C
  1025. # define BN_MP_MOD_C
  1026. # define BN_MP_SET_C
  1027. # define BN_MP_SUB_C
  1028. #endif
  1029. #if defined(BN_S_MP_INVMOD_SLOW_C)
  1030. # define BN_MP_ADD_C
  1031. # define BN_MP_CLEAR_MULTI_C
  1032. # define BN_MP_CMP_C
  1033. # define BN_MP_CMP_D_C
  1034. # define BN_MP_CMP_MAG_C
  1035. # define BN_MP_COPY_C
  1036. # define BN_MP_DIV_2_C
  1037. # define BN_MP_EXCH_C
  1038. # define BN_MP_INIT_MULTI_C
  1039. # define BN_MP_MOD_C
  1040. # define BN_MP_SET_C
  1041. # define BN_MP_SUB_C
  1042. #endif
  1043. #if defined(BN_S_MP_KARATSUBA_MUL_C)
  1044. # define BN_MP_ADD_C
  1045. # define BN_MP_CLAMP_C
  1046. # define BN_MP_CLEAR_C
  1047. # define BN_MP_INIT_SIZE_C
  1048. # define BN_MP_LSHD_C
  1049. # define BN_MP_MUL_C
  1050. # define BN_S_MP_ADD_C
  1051. # define BN_S_MP_SUB_C
  1052. #endif
  1053. #if defined(BN_S_MP_KARATSUBA_SQR_C)
  1054. # define BN_MP_ADD_C
  1055. # define BN_MP_CLAMP_C
  1056. # define BN_MP_CLEAR_C
  1057. # define BN_MP_INIT_SIZE_C
  1058. # define BN_MP_LSHD_C
  1059. # define BN_MP_SQR_C
  1060. # define BN_S_MP_ADD_C
  1061. # define BN_S_MP_SUB_C
  1062. #endif
  1063. #if defined(BN_S_MP_MONTGOMERY_REDUCE_FAST_C)
  1064. # define BN_MP_CLAMP_C
  1065. # define BN_MP_CMP_MAG_C
  1066. # define BN_MP_GROW_C
  1067. # define BN_S_MP_SUB_C
  1068. #endif
  1069. #if defined(BN_S_MP_MUL_DIGS_C)
  1070. # define BN_MP_CLAMP_C
  1071. # define BN_MP_CLEAR_C
  1072. # define BN_MP_EXCH_C
  1073. # define BN_MP_INIT_SIZE_C
  1074. # define BN_S_MP_MUL_DIGS_FAST_C
  1075. #endif
  1076. #if defined(BN_S_MP_MUL_DIGS_FAST_C)
  1077. # define BN_MP_CLAMP_C
  1078. # define BN_MP_GROW_C
  1079. #endif
  1080. #if defined(BN_S_MP_MUL_HIGH_DIGS_C)
  1081. # define BN_MP_CLAMP_C
  1082. # define BN_MP_CLEAR_C
  1083. # define BN_MP_EXCH_C
  1084. # define BN_MP_INIT_SIZE_C
  1085. # define BN_S_MP_MUL_HIGH_DIGS_FAST_C
  1086. #endif
  1087. #if defined(BN_S_MP_MUL_HIGH_DIGS_FAST_C)
  1088. # define BN_MP_CLAMP_C
  1089. # define BN_MP_GROW_C
  1090. #endif
  1091. #if defined(BN_S_MP_PRIME_IS_DIVISIBLE_C)
  1092. # define BN_MP_MOD_D_C
  1093. #endif
  1094. #if defined(BN_S_MP_RAND_JENKINS_C)
  1095. # define BN_S_MP_RAND_JENKINS_INIT_C
  1096. #endif
  1097. #if defined(BN_S_MP_RAND_PLATFORM_C)
  1098. #endif
  1099. #if defined(BN_S_MP_REVERSE_C)
  1100. #endif
  1101. #if defined(BN_S_MP_SQR_C)
  1102. # define BN_MP_CLAMP_C
  1103. # define BN_MP_CLEAR_C
  1104. # define BN_MP_EXCH_C
  1105. # define BN_MP_INIT_SIZE_C
  1106. #endif
  1107. #if defined(BN_S_MP_SQR_FAST_C)
  1108. # define BN_MP_CLAMP_C
  1109. # define BN_MP_GROW_C
  1110. #endif
  1111. #if defined(BN_S_MP_SUB_C)
  1112. # define BN_MP_CLAMP_C
  1113. # define BN_MP_GROW_C
  1114. #endif
  1115. #if defined(BN_S_MP_TOOM_MUL_C)
  1116. # define BN_MP_ADD_C
  1117. # define BN_MP_CLAMP_C
  1118. # define BN_MP_CLEAR_C
  1119. # define BN_MP_CLEAR_MULTI_C
  1120. # define BN_MP_DIV_2_C
  1121. # define BN_MP_DIV_3_C
  1122. # define BN_MP_INIT_MULTI_C
  1123. # define BN_MP_INIT_SIZE_C
  1124. # define BN_MP_LSHD_C
  1125. # define BN_MP_MUL_2_C
  1126. # define BN_MP_MUL_C
  1127. # define BN_MP_SUB_C
  1128. #endif
  1129. #if defined(BN_S_MP_TOOM_SQR_C)
  1130. # define BN_MP_ADD_C
  1131. # define BN_MP_CLAMP_C
  1132. # define BN_MP_CLEAR_C
  1133. # define BN_MP_DIV_2_C
  1134. # define BN_MP_INIT_C
  1135. # define BN_MP_INIT_SIZE_C
  1136. # define BN_MP_LSHD_C
  1137. # define BN_MP_MUL_2_C
  1138. # define BN_MP_MUL_C
  1139. # define BN_MP_SQR_C
  1140. # define BN_MP_SUB_C
  1141. #endif
  1142. #ifdef LTM_INSIDE
  1143. #undef LTM_INSIDE
  1144. #ifdef LTM3
  1145. # define LTM_LAST
  1146. #endif
  1147. #include "tommath_superclass.h"
  1148. #include "tommath_class.h"
  1149. #else
  1150. # define LTM_LAST
  1151. #endif
  1152. /* Dropbear doesn't need these. */
  1153. #undef BN_MP_KARATSUBA_MUL_C
  1154. #undef BN_MP_KARATSUBA_SQR_C
  1155. #undef BN_MP_TOOM_MUL_C
  1156. #undef BN_MP_TOOM_SQR_C
  1157. #undef BN_S_MP_KARATSUBA_MUL_C
  1158. #undef BN_S_MP_KARATSUBA_SQR_C
  1159. #undef BN_S_MP_TOOM_MUL_C
  1160. #undef BN_S_MP_TOOM_SQR_C
  1161. /* Dropbear uses its own random source */
  1162. #undef BN_S_MP_RAND_PLATFORM_C
  1163. #include "dbmalloc.h"
  1164. #define MP_MALLOC m_malloc
  1165. #define MP_FREE m_free_ltm
  1166. #define MP_REALLOC m_realloc_ltm
  1167. #define MP_CALLOC m_calloc