charm-crypto-framework 0.61.1__cp313-cp313-macosx_10_13_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. charm/__init__.py +5 -0
  2. charm/adapters/__init__.py +0 -0
  3. charm/adapters/abenc_adapt_hybrid.py +90 -0
  4. charm/adapters/dabenc_adapt_hybrid.py +145 -0
  5. charm/adapters/ibenc_adapt_hybrid.py +72 -0
  6. charm/adapters/ibenc_adapt_identityhash.py +80 -0
  7. charm/adapters/kpabenc_adapt_hybrid.py +91 -0
  8. charm/adapters/pkenc_adapt_bchk05.py +121 -0
  9. charm/adapters/pkenc_adapt_chk04.py +91 -0
  10. charm/adapters/pkenc_adapt_hybrid.py +98 -0
  11. charm/adapters/pksig_adapt_naor01.py +89 -0
  12. charm/config.py +7 -0
  13. charm/core/__init__.py +0 -0
  14. charm/core/benchmark/benchmark_util.c +353 -0
  15. charm/core/benchmark/benchmark_util.h +61 -0
  16. charm/core/benchmark/benchmarkmodule.c +476 -0
  17. charm/core/benchmark/benchmarkmodule.h +162 -0
  18. charm/core/benchmark.cpython-313-darwin.so +0 -0
  19. charm/core/crypto/AES/AES.c +1464 -0
  20. charm/core/crypto/AES.cpython-313-darwin.so +0 -0
  21. charm/core/crypto/DES/DES.c +113 -0
  22. charm/core/crypto/DES.cpython-313-darwin.so +0 -0
  23. charm/core/crypto/DES3/DES3.c +26 -0
  24. charm/core/crypto/DES3.cpython-313-darwin.so +0 -0
  25. charm/core/crypto/__init__.py +0 -0
  26. charm/core/crypto/cryptobase/XOR.c +80 -0
  27. charm/core/crypto/cryptobase/_counter.c +496 -0
  28. charm/core/crypto/cryptobase/_counter.h +54 -0
  29. charm/core/crypto/cryptobase/block_template.c +900 -0
  30. charm/core/crypto/cryptobase/block_template.h +69 -0
  31. charm/core/crypto/cryptobase/cryptobasemodule.c +220 -0
  32. charm/core/crypto/cryptobase/libtom/tomcrypt.h +90 -0
  33. charm/core/crypto/cryptobase/libtom/tomcrypt_argchk.h +44 -0
  34. charm/core/crypto/cryptobase/libtom/tomcrypt_cfg.h +186 -0
  35. charm/core/crypto/cryptobase/libtom/tomcrypt_cipher.h +941 -0
  36. charm/core/crypto/cryptobase/libtom/tomcrypt_custom.h +556 -0
  37. charm/core/crypto/cryptobase/libtom/tomcrypt_des.c +1912 -0
  38. charm/core/crypto/cryptobase/libtom/tomcrypt_hash.h +407 -0
  39. charm/core/crypto/cryptobase/libtom/tomcrypt_mac.h +496 -0
  40. charm/core/crypto/cryptobase/libtom/tomcrypt_macros.h +435 -0
  41. charm/core/crypto/cryptobase/libtom/tomcrypt_math.h +534 -0
  42. charm/core/crypto/cryptobase/libtom/tomcrypt_misc.h +103 -0
  43. charm/core/crypto/cryptobase/libtom/tomcrypt_pk.h +653 -0
  44. charm/core/crypto/cryptobase/libtom/tomcrypt_pkcs.h +90 -0
  45. charm/core/crypto/cryptobase/libtom/tomcrypt_prng.h +199 -0
  46. charm/core/crypto/cryptobase/stream_template.c +271 -0
  47. charm/core/crypto/cryptobase/strxor.c +229 -0
  48. charm/core/crypto/cryptobase.cpython-313-darwin.so +0 -0
  49. charm/core/engine/__init__.py +5 -0
  50. charm/core/engine/protocol.py +293 -0
  51. charm/core/engine/util.py +174 -0
  52. charm/core/math/__init__.py +0 -0
  53. charm/core/math/elliptic_curve/ecmodule.c +1986 -0
  54. charm/core/math/elliptic_curve/ecmodule.h +230 -0
  55. charm/core/math/elliptic_curve.cpython-313-darwin.so +0 -0
  56. charm/core/math/elliptic_curve.pyi +63 -0
  57. charm/core/math/integer/integermodule.c +2539 -0
  58. charm/core/math/integer/integermodule.h +145 -0
  59. charm/core/math/integer.cpython-313-darwin.so +0 -0
  60. charm/core/math/integer.pyi +76 -0
  61. charm/core/math/pairing/miracl/miracl_config.h +37 -0
  62. charm/core/math/pairing/miracl/miracl_interface.h +118 -0
  63. charm/core/math/pairing/miracl/miracl_interface2.h +126 -0
  64. charm/core/math/pairing/miracl/pairingmodule2.c +2094 -0
  65. charm/core/math/pairing/miracl/pairingmodule2.h +307 -0
  66. charm/core/math/pairing/pairingmodule.c +2230 -0
  67. charm/core/math/pairing/pairingmodule.h +241 -0
  68. charm/core/math/pairing/relic/pairingmodule3.c +1853 -0
  69. charm/core/math/pairing/relic/pairingmodule3.h +233 -0
  70. charm/core/math/pairing/relic/relic_interface.c +1337 -0
  71. charm/core/math/pairing/relic/relic_interface.h +217 -0
  72. charm/core/math/pairing/relic/test_relic.c +171 -0
  73. charm/core/math/pairing.cpython-313-darwin.so +0 -0
  74. charm/core/math/pairing.pyi +69 -0
  75. charm/core/utilities/base64.c +248 -0
  76. charm/core/utilities/base64.h +15 -0
  77. charm/schemes/__init__.py +0 -0
  78. charm/schemes/abenc/__init__.py +0 -0
  79. charm/schemes/abenc/abenc_accountability_jyjxgd20.py +647 -0
  80. charm/schemes/abenc/abenc_bsw07.py +146 -0
  81. charm/schemes/abenc/abenc_ca_cpabe_ar17.py +684 -0
  82. charm/schemes/abenc/abenc_dacmacs_yj14.py +298 -0
  83. charm/schemes/abenc/abenc_lsw08.py +159 -0
  84. charm/schemes/abenc/abenc_maabe_rw15.py +236 -0
  85. charm/schemes/abenc/abenc_maabe_yj14.py +297 -0
  86. charm/schemes/abenc/abenc_tbpre_lww14.py +309 -0
  87. charm/schemes/abenc/abenc_unmcpabe_yahk14.py +223 -0
  88. charm/schemes/abenc/abenc_waters09.py +144 -0
  89. charm/schemes/abenc/abenc_yct14.py +208 -0
  90. charm/schemes/abenc/abenc_yllc15.py +178 -0
  91. charm/schemes/abenc/ac17.py +248 -0
  92. charm/schemes/abenc/bsw07.py +141 -0
  93. charm/schemes/abenc/cgw15.py +277 -0
  94. charm/schemes/abenc/dabe_aw11.py +204 -0
  95. charm/schemes/abenc/dfa_fe12.py +144 -0
  96. charm/schemes/abenc/pk_hve08.py +179 -0
  97. charm/schemes/abenc/waters11.py +143 -0
  98. charm/schemes/aggrsign_MuSig.py +150 -0
  99. charm/schemes/aggrsign_bls.py +267 -0
  100. charm/schemes/blindsig_ps16.py +654 -0
  101. charm/schemes/chamhash_adm05.py +113 -0
  102. charm/schemes/chamhash_rsa_hw09.py +100 -0
  103. charm/schemes/commit/__init__.py +0 -0
  104. charm/schemes/commit/commit_gs08.py +77 -0
  105. charm/schemes/commit/commit_pedersen92.py +53 -0
  106. charm/schemes/encap_bchk05.py +62 -0
  107. charm/schemes/grpsig/__init__.py +0 -0
  108. charm/schemes/grpsig/groupsig_bgls04.py +114 -0
  109. charm/schemes/grpsig/groupsig_bgls04_var.py +115 -0
  110. charm/schemes/hibenc/__init__.py +0 -0
  111. charm/schemes/hibenc/hibenc_bb04.py +105 -0
  112. charm/schemes/hibenc/hibenc_lew11.py +193 -0
  113. charm/schemes/ibenc/__init__.py +0 -0
  114. charm/schemes/ibenc/clpkc_rp03.py +119 -0
  115. charm/schemes/ibenc/ibenc_CW13_z.py +168 -0
  116. charm/schemes/ibenc/ibenc_bb03.py +94 -0
  117. charm/schemes/ibenc/ibenc_bf01.py +121 -0
  118. charm/schemes/ibenc/ibenc_ckrs09.py +120 -0
  119. charm/schemes/ibenc/ibenc_cllww12_z.py +172 -0
  120. charm/schemes/ibenc/ibenc_lsw08.py +120 -0
  121. charm/schemes/ibenc/ibenc_sw05.py +238 -0
  122. charm/schemes/ibenc/ibenc_waters05.py +144 -0
  123. charm/schemes/ibenc/ibenc_waters05_z.py +164 -0
  124. charm/schemes/ibenc/ibenc_waters09.py +107 -0
  125. charm/schemes/ibenc/ibenc_waters09_z.py +147 -0
  126. charm/schemes/joye_scheme.py +106 -0
  127. charm/schemes/lem_scheme.py +207 -0
  128. charm/schemes/pk_fre_ccv11.py +107 -0
  129. charm/schemes/pk_vrf.py +127 -0
  130. charm/schemes/pkenc/__init__.py +0 -0
  131. charm/schemes/pkenc/pkenc_cs98.py +108 -0
  132. charm/schemes/pkenc/pkenc_elgamal85.py +122 -0
  133. charm/schemes/pkenc/pkenc_gm82.py +98 -0
  134. charm/schemes/pkenc/pkenc_paillier99.py +118 -0
  135. charm/schemes/pkenc/pkenc_rabin.py +254 -0
  136. charm/schemes/pkenc/pkenc_rsa.py +186 -0
  137. charm/schemes/pksig/__init__.py +0 -0
  138. charm/schemes/pksig/pksig_CW13_z.py +135 -0
  139. charm/schemes/pksig/pksig_bls04.py +87 -0
  140. charm/schemes/pksig/pksig_boyen.py +156 -0
  141. charm/schemes/pksig/pksig_chch.py +97 -0
  142. charm/schemes/pksig/pksig_chp.py +70 -0
  143. charm/schemes/pksig/pksig_cl03.py +150 -0
  144. charm/schemes/pksig/pksig_cl04.py +87 -0
  145. charm/schemes/pksig/pksig_cllww12_z.py +142 -0
  146. charm/schemes/pksig/pksig_cyh.py +132 -0
  147. charm/schemes/pksig/pksig_dsa.py +76 -0
  148. charm/schemes/pksig/pksig_ecdsa.py +71 -0
  149. charm/schemes/pksig/pksig_hess.py +104 -0
  150. charm/schemes/pksig/pksig_hw.py +110 -0
  151. charm/schemes/pksig/pksig_lamport.py +63 -0
  152. charm/schemes/pksig/pksig_ps01.py +135 -0
  153. charm/schemes/pksig/pksig_ps02.py +124 -0
  154. charm/schemes/pksig/pksig_ps03.py +119 -0
  155. charm/schemes/pksig/pksig_rsa_hw09.py +206 -0
  156. charm/schemes/pksig/pksig_schnorr91.py +77 -0
  157. charm/schemes/pksig/pksig_waters.py +115 -0
  158. charm/schemes/pksig/pksig_waters05.py +121 -0
  159. charm/schemes/pksig/pksig_waters09.py +121 -0
  160. charm/schemes/pre_mg07.py +150 -0
  161. charm/schemes/prenc/pre_afgh06.py +126 -0
  162. charm/schemes/prenc/pre_bbs98.py +123 -0
  163. charm/schemes/prenc/pre_nal16.py +216 -0
  164. charm/schemes/protocol_a01.py +272 -0
  165. charm/schemes/protocol_ao00.py +215 -0
  166. charm/schemes/protocol_cns07.py +274 -0
  167. charm/schemes/protocol_schnorr91.py +125 -0
  168. charm/schemes/sigma1.py +64 -0
  169. charm/schemes/sigma2.py +129 -0
  170. charm/schemes/sigma3.py +126 -0
  171. charm/schemes/threshold/__init__.py +59 -0
  172. charm/schemes/threshold/dkls23_dkg.py +556 -0
  173. charm/schemes/threshold/dkls23_presign.py +1089 -0
  174. charm/schemes/threshold/dkls23_sign.py +761 -0
  175. charm/schemes/threshold/xrpl_wallet.py +967 -0
  176. charm/test/__init__.py +0 -0
  177. charm/test/adapters/__init__.py +0 -0
  178. charm/test/adapters/abenc_adapt_hybrid_test.py +29 -0
  179. charm/test/adapters/dabenc_adapt_hybrid_test.py +56 -0
  180. charm/test/adapters/ibenc_adapt_hybrid_test.py +36 -0
  181. charm/test/adapters/ibenc_adapt_identityhash_test.py +32 -0
  182. charm/test/adapters/kpabenc_adapt_hybrid_test.py +30 -0
  183. charm/test/benchmark/abenc_yllc15_bench.py +92 -0
  184. charm/test/benchmark/benchmark_test.py +148 -0
  185. charm/test/benchmark_threshold.py +260 -0
  186. charm/test/conftest.py +38 -0
  187. charm/test/fuzz/__init__.py +1 -0
  188. charm/test/fuzz/conftest.py +5 -0
  189. charm/test/fuzz/fuzz_policy_parser.py +76 -0
  190. charm/test/fuzz/fuzz_serialization.py +83 -0
  191. charm/test/schemes/__init__.py +0 -0
  192. charm/test/schemes/abenc/__init__.py +0 -0
  193. charm/test/schemes/abenc/abenc_bsw07_test.py +39 -0
  194. charm/test/schemes/abenc/abenc_dacmacs_yj14_test.py +16 -0
  195. charm/test/schemes/abenc/abenc_lsw08_test.py +33 -0
  196. charm/test/schemes/abenc/abenc_maabe_yj14_test.py +16 -0
  197. charm/test/schemes/abenc/abenc_tbpre_lww14_test.py +16 -0
  198. charm/test/schemes/abenc/abenc_waters09_test.py +38 -0
  199. charm/test/schemes/abenc/abenc_yllc15_test.py +74 -0
  200. charm/test/schemes/chamhash_adm05_test.py +31 -0
  201. charm/test/schemes/chamhash_rsa_hw09_test.py +29 -0
  202. charm/test/schemes/commit/__init__.py +0 -0
  203. charm/test/schemes/commit/commit_gs08_test.py +24 -0
  204. charm/test/schemes/commit/commit_pedersen92_test.py +26 -0
  205. charm/test/schemes/dabe_aw11_test.py +45 -0
  206. charm/test/schemes/encap_bchk05_test.py +21 -0
  207. charm/test/schemes/grpsig/__init__.py +0 -0
  208. charm/test/schemes/grpsig/groupsig_bgls04_test.py +35 -0
  209. charm/test/schemes/grpsig/groupsig_bgls04_var_test.py +39 -0
  210. charm/test/schemes/hibenc/__init__.py +0 -0
  211. charm/test/schemes/hibenc/hibenc_bb04_test.py +28 -0
  212. charm/test/schemes/ibenc/__init__.py +0 -0
  213. charm/test/schemes/ibenc/ibenc_bb03_test.py +26 -0
  214. charm/test/schemes/ibenc/ibenc_bf01_test.py +24 -0
  215. charm/test/schemes/ibenc/ibenc_ckrs09_test.py +25 -0
  216. charm/test/schemes/ibenc/ibenc_lsw08_test.py +31 -0
  217. charm/test/schemes/ibenc/ibenc_sw05_test.py +32 -0
  218. charm/test/schemes/ibenc/ibenc_waters05_test.py +31 -0
  219. charm/test/schemes/ibenc/ibenc_waters09_test.py +27 -0
  220. charm/test/schemes/pk_vrf_test.py +29 -0
  221. charm/test/schemes/pkenc/__init__.py +0 -0
  222. charm/test/schemes/pkenc_test.py +255 -0
  223. charm/test/schemes/pksig/__init__.py +0 -0
  224. charm/test/schemes/pksig_test.py +376 -0
  225. charm/test/schemes/rsa_alg_test.py +340 -0
  226. charm/test/schemes/threshold_test.py +1792 -0
  227. charm/test/serialize/__init__.py +0 -0
  228. charm/test/serialize/serialize_test.py +40 -0
  229. charm/test/toolbox/__init__.py +0 -0
  230. charm/test/toolbox/conversion_test.py +30 -0
  231. charm/test/toolbox/ecgroup_test.py +53 -0
  232. charm/test/toolbox/integer_arithmetic_test.py +441 -0
  233. charm/test/toolbox/paddingschemes_test.py +238 -0
  234. charm/test/toolbox/policy_parser_stress_test.py +969 -0
  235. charm/test/toolbox/secretshare_test.py +28 -0
  236. charm/test/toolbox/symcrypto_test.py +108 -0
  237. charm/test/toolbox/test_policy_expression.py +16 -0
  238. charm/test/vectors/__init__.py +1 -0
  239. charm/test/vectors/test_bls_vectors.py +289 -0
  240. charm/test/vectors/test_pedersen_vectors.py +315 -0
  241. charm/test/vectors/test_schnorr_vectors.py +368 -0
  242. charm/test/zkp_compiler/__init__.py +9 -0
  243. charm/test/zkp_compiler/benchmark_zkp.py +258 -0
  244. charm/test/zkp_compiler/test_and_proof.py +240 -0
  245. charm/test/zkp_compiler/test_batch_verify.py +248 -0
  246. charm/test/zkp_compiler/test_dleq_proof.py +264 -0
  247. charm/test/zkp_compiler/test_or_proof.py +231 -0
  248. charm/test/zkp_compiler/test_proof_serialization.py +121 -0
  249. charm/test/zkp_compiler/test_range_proof.py +241 -0
  250. charm/test/zkp_compiler/test_representation_proof.py +325 -0
  251. charm/test/zkp_compiler/test_schnorr_proof.py +221 -0
  252. charm/test/zkp_compiler/test_thread_safety.py +169 -0
  253. charm/test/zkp_compiler/test_zkp_parser.py +139 -0
  254. charm/toolbox/ABEnc.py +26 -0
  255. charm/toolbox/ABEncMultiAuth.py +66 -0
  256. charm/toolbox/ABEnumeric.py +800 -0
  257. charm/toolbox/Commit.py +24 -0
  258. charm/toolbox/DFA.py +89 -0
  259. charm/toolbox/FSA.py +1254 -0
  260. charm/toolbox/Hash.py +39 -0
  261. charm/toolbox/IBEnc.py +62 -0
  262. charm/toolbox/IBSig.py +64 -0
  263. charm/toolbox/PKEnc.py +66 -0
  264. charm/toolbox/PKSig.py +56 -0
  265. charm/toolbox/PREnc.py +32 -0
  266. charm/toolbox/ZKProof.py +289 -0
  267. charm/toolbox/__init__.py +0 -0
  268. charm/toolbox/bitstring.py +49 -0
  269. charm/toolbox/broadcast.py +220 -0
  270. charm/toolbox/conversion.py +100 -0
  271. charm/toolbox/eccurve.py +149 -0
  272. charm/toolbox/ecgroup.py +143 -0
  273. charm/toolbox/enum.py +60 -0
  274. charm/toolbox/hash_module.py +91 -0
  275. charm/toolbox/integergroup.py +323 -0
  276. charm/toolbox/iterate.py +22 -0
  277. charm/toolbox/matrixops.py +76 -0
  278. charm/toolbox/mpc_utils.py +296 -0
  279. charm/toolbox/msp.py +175 -0
  280. charm/toolbox/mta.py +985 -0
  281. charm/toolbox/node.py +120 -0
  282. charm/toolbox/ot/__init__.py +22 -0
  283. charm/toolbox/ot/base_ot.py +374 -0
  284. charm/toolbox/ot/dpf.py +642 -0
  285. charm/toolbox/ot/mpfss.py +228 -0
  286. charm/toolbox/ot/ot_extension.py +589 -0
  287. charm/toolbox/ot/silent_ot.py +378 -0
  288. charm/toolbox/paddingschemes.py +423 -0
  289. charm/toolbox/paddingschemes_test.py +238 -0
  290. charm/toolbox/pairingcurves.py +85 -0
  291. charm/toolbox/pairinggroup.py +186 -0
  292. charm/toolbox/policy_expression_spec.py +70 -0
  293. charm/toolbox/policytree.py +189 -0
  294. charm/toolbox/reCompiler.py +346 -0
  295. charm/toolbox/redundancyschemes.py +65 -0
  296. charm/toolbox/schemebase.py +188 -0
  297. charm/toolbox/secretshare.py +104 -0
  298. charm/toolbox/secretutil.py +174 -0
  299. charm/toolbox/securerandom.py +73 -0
  300. charm/toolbox/sigmaprotocol.py +46 -0
  301. charm/toolbox/specialprimes.py +45 -0
  302. charm/toolbox/symcrypto.py +279 -0
  303. charm/toolbox/threshold_sharing.py +553 -0
  304. charm/toolbox/xmlserialize.py +94 -0
  305. charm/toolbox/zknode.py +105 -0
  306. charm/zkp_compiler/__init__.py +89 -0
  307. charm/zkp_compiler/and_proof.py +460 -0
  308. charm/zkp_compiler/batch_verify.py +324 -0
  309. charm/zkp_compiler/dleq_proof.py +423 -0
  310. charm/zkp_compiler/or_proof.py +305 -0
  311. charm/zkp_compiler/range_proof.py +417 -0
  312. charm/zkp_compiler/representation_proof.py +466 -0
  313. charm/zkp_compiler/schnorr_proof.py +273 -0
  314. charm/zkp_compiler/thread_safe.py +150 -0
  315. charm/zkp_compiler/zk_demo.py +489 -0
  316. charm/zkp_compiler/zkp_factory.py +330 -0
  317. charm/zkp_compiler/zkp_generator.py +370 -0
  318. charm/zkp_compiler/zkparser.py +269 -0
  319. charm_crypto_framework-0.61.1.dist-info/METADATA +337 -0
  320. charm_crypto_framework-0.61.1.dist-info/RECORD +323 -0
  321. charm_crypto_framework-0.61.1.dist-info/WHEEL +5 -0
  322. charm_crypto_framework-0.61.1.dist-info/licenses/LICENSE.txt +165 -0
  323. charm_crypto_framework-0.61.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,556 @@
1
+ #ifndef TOMCRYPT_CUSTOM_H_
2
+ #define TOMCRYPT_CUSTOM_H_
3
+
4
+ /* macros for various libc functions you can change for embedded targets */
5
+ #ifndef XMALLOC
6
+ #ifdef malloc
7
+ #define LTC_NO_PROTOTYPES
8
+ #endif
9
+ #define XMALLOC malloc
10
+ #endif
11
+ #ifndef XREALLOC
12
+ #ifdef realloc
13
+ #define LTC_NO_PROTOTYPES
14
+ #endif
15
+ #define XREALLOC realloc
16
+ #endif
17
+ #ifndef XCALLOC
18
+ #ifdef calloc
19
+ #define LTC_NO_PROTOTYPES
20
+ #endif
21
+ #define XCALLOC calloc
22
+ #endif
23
+ #ifndef XFREE
24
+ #ifdef free
25
+ #define LTC_NO_PROTOTYPES
26
+ #endif
27
+ #define XFREE free
28
+ #endif
29
+
30
+ #ifndef XMEMSET
31
+ #ifdef memset
32
+ #define LTC_NO_PROTOTYPES
33
+ #endif
34
+ #define XMEMSET memset
35
+ #endif
36
+ #ifndef XMEMCPY
37
+ #ifdef memcpy
38
+ #define LTC_NO_PROTOTYPES
39
+ #endif
40
+ #define XMEMCPY memcpy
41
+ #endif
42
+ #ifndef XMEMCMP
43
+ #ifdef memcmp
44
+ #define LTC_NO_PROTOTYPES
45
+ #endif
46
+ #define XMEMCMP memcmp
47
+ #endif
48
+ #ifndef XMEM_NEQ
49
+ #define XMEM_NEQ mem_neq
50
+ #endif
51
+ #ifndef XSTRCMP
52
+ #ifdef strcmp
53
+ #define LTC_NO_PROTOTYPES
54
+ #endif
55
+ #define XSTRCMP strcmp
56
+ #endif
57
+
58
+ #ifndef XCLOCK
59
+ #define XCLOCK clock
60
+ #endif
61
+ #ifndef XCLOCKS_PER_SEC
62
+ #define XCLOCKS_PER_SEC CLOCKS_PER_SEC
63
+ #endif
64
+
65
+ #ifndef XQSORT
66
+ #ifdef qsort
67
+ #define LTC_NO_PROTOTYPES
68
+ #endif
69
+ #define XQSORT qsort
70
+ #endif
71
+
72
+ /* shortcut to disable automatic inclusion */
73
+ #if defined LTC_NOTHING && !defined LTC_EASY
74
+ #define LTC_NO_MATH
75
+ #define LTC_NO_CIPHERS
76
+ #define LTC_NO_MODES
77
+ #define LTC_NO_HASHES
78
+ #define LTC_NO_MACS
79
+ #define LTC_NO_PRNGS
80
+ #define LTC_NO_PK
81
+ #define LTC_NO_PKCS
82
+ #define LTC_NO_MISC
83
+ #define LTC_NO_FILE
84
+ #endif /* LTC_NOTHING */
85
+
86
+ /* Easy button? */
87
+ #ifdef LTC_EASY
88
+ #define LTC_NO_CIPHERS
89
+ #define LTC_RIJNDAEL
90
+ #define LTC_BLOWFISH
91
+ #define LTC_DES
92
+ #define LTC_CAST5
93
+
94
+ #define LTC_NO_MODES
95
+ #define LTC_ECB_MODE
96
+ #define LTC_CBC_MODE
97
+ #define LTC_CTR_MODE
98
+
99
+ #define LTC_NO_HASHES
100
+ #define LTC_SHA1
101
+ #define LTC_SHA512
102
+ #define LTC_SHA384
103
+ #define LTC_SHA256
104
+ #define LTC_SHA224
105
+ #define LTC_HASH_HELPERS
106
+
107
+ #define LTC_NO_MACS
108
+ #define LTC_HMAC
109
+ #define LTC_OMAC
110
+ #define LTC_CCM_MODE
111
+
112
+ #define LTC_NO_PRNGS
113
+ #define LTC_SPRNG
114
+ #define LTC_YARROW
115
+ #define LTC_DEVRANDOM
116
+ #define LTC_TRY_URANDOM_FIRST
117
+ #define LTC_RNG_GET_BYTES
118
+ #define LTC_RNG_MAKE_PRNG
119
+
120
+ #define LTC_NO_PK
121
+ #define LTC_MRSA
122
+ #define LTC_MECC
123
+
124
+ #define LTC_NO_MISC
125
+ #define LTC_BASE64
126
+ #endif
127
+
128
+ /* The minimal set of functionality to run the tests */
129
+ #ifdef LTC_MINIMAL
130
+ #define LTC_SHA256
131
+ #define LTC_CTR_MODE
132
+ #define LTC_RNG_MAKE_PRNG
133
+ #define LTC_RNG_GET_BYTES
134
+ #define LTC_YARROW
135
+ #define LTC_DEVRANDOM
136
+ #define LTC_TRY_URANDOM_FIRST
137
+
138
+ #undef LTC_NO_FILE
139
+ #endif
140
+
141
+ /* Enable self-test test vector checking */
142
+ #ifndef LTC_NO_TEST
143
+ #define LTC_TEST
144
+ #endif
145
+ /* Enable extended self-tests */
146
+ /* #define LTC_TEST_EXT */
147
+
148
+ /* Use small code where possible */
149
+ /* #define LTC_SMALL_CODE */
150
+
151
+ /* clean the stack of functions which put private information on stack */
152
+ /* #define LTC_CLEAN_STACK */
153
+
154
+ /* disable all file related functions */
155
+ /* #define LTC_NO_FILE */
156
+
157
+ /* disable all forms of ASM */
158
+ /* #define LTC_NO_ASM */
159
+
160
+ /* disable FAST mode */
161
+ /* #define LTC_NO_FAST */
162
+
163
+ /* disable BSWAP on x86 */
164
+ /* #define LTC_NO_BSWAP */
165
+
166
+ /* ---> math provider? <--- */
167
+ #ifndef LTC_NO_MATH
168
+
169
+ /* LibTomMath */
170
+ /* #define LTM_DESC */
171
+
172
+ /* TomsFastMath */
173
+ /* #define TFM_DESC */
174
+
175
+ #endif /* LTC_NO_MATH */
176
+
177
+ /* GNU Multiple Precision Arithmetic Library */
178
+ /* #define GMP_DESC */
179
+
180
+ /* ---> Symmetric Block Ciphers <--- */
181
+ #ifndef LTC_NO_CIPHERS
182
+
183
+ #define LTC_BLOWFISH
184
+ #define LTC_RC2
185
+ #define LTC_RC5
186
+ #define LTC_RC6
187
+ #define LTC_SAFERP
188
+ #define LTC_RIJNDAEL
189
+ #define LTC_XTEA
190
+ /* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format
191
+ * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */
192
+ #define LTC_TWOFISH
193
+ #ifndef LTC_NO_TABLES
194
+ #define LTC_TWOFISH_TABLES
195
+ /* #define LTC_TWOFISH_ALL_TABLES */
196
+ #else
197
+ #define LTC_TWOFISH_SMALL
198
+ #endif
199
+ /* #define LTC_TWOFISH_SMALL */
200
+ /* LTC_DES includes EDE triple-DES */
201
+ #define LTC_DES
202
+ #define LTC_CAST5
203
+ #define LTC_NOEKEON
204
+ #define LTC_SKIPJACK
205
+ #define LTC_SAFER
206
+ #define LTC_KHAZAD
207
+ #define LTC_ANUBIS
208
+ #define LTC_ANUBIS_TWEAK
209
+ #define LTC_KSEED
210
+ #define LTC_KASUMI
211
+ #define LTC_MULTI2
212
+ #define LTC_CAMELLIA
213
+
214
+ #endif /* LTC_NO_CIPHERS */
215
+
216
+
217
+ /* ---> Block Cipher Modes of Operation <--- */
218
+ #ifndef LTC_NO_MODES
219
+
220
+ #define LTC_CFB_MODE
221
+ #define LTC_OFB_MODE
222
+ #define LTC_ECB_MODE
223
+ #define LTC_CBC_MODE
224
+ #define LTC_CTR_MODE
225
+
226
+ /* F8 chaining mode */
227
+ #define LTC_F8_MODE
228
+
229
+ /* LRW mode */
230
+ #define LTC_LRW_MODE
231
+ #ifndef LTC_NO_TABLES
232
+ /* like GCM mode this will enable 16 8x128 tables [64KB] that make
233
+ * seeking very fast.
234
+ */
235
+ #define LTC_LRW_TABLES
236
+ #endif
237
+
238
+ /* XTS mode */
239
+ #define LTC_XTS_MODE
240
+
241
+ #endif /* LTC_NO_MODES */
242
+
243
+ /* ---> One-Way Hash Functions <--- */
244
+ #ifndef LTC_NO_HASHES
245
+
246
+ #define LTC_CHC_HASH
247
+ #define LTC_WHIRLPOOL
248
+ #define LTC_SHA512
249
+ #define LTC_SHA512_256
250
+ #define LTC_SHA512_224
251
+ #define LTC_SHA384
252
+ #define LTC_SHA256
253
+ #define LTC_SHA224
254
+ #define LTC_TIGER
255
+ #define LTC_SHA1
256
+ #define LTC_MD5
257
+ #define LTC_MD4
258
+ #define LTC_MD2
259
+ #define LTC_RIPEMD128
260
+ #define LTC_RIPEMD160
261
+ #define LTC_RIPEMD256
262
+ #define LTC_RIPEMD320
263
+
264
+ #define LTC_HASH_HELPERS
265
+
266
+ #endif /* LTC_NO_HASHES */
267
+
268
+
269
+ /* ---> MAC functions <--- */
270
+ #ifndef LTC_NO_MACS
271
+
272
+ #define LTC_HMAC
273
+ #define LTC_OMAC
274
+ #define LTC_PMAC
275
+ #define LTC_XCBC
276
+ #define LTC_F9_MODE
277
+ #define LTC_PELICAN
278
+
279
+ /* ---> Encrypt + Authenticate Modes <--- */
280
+
281
+ #define LTC_EAX_MODE
282
+
283
+ #define LTC_OCB_MODE
284
+ #define LTC_OCB3_MODE
285
+ #define LTC_CCM_MODE
286
+ #define LTC_GCM_MODE
287
+
288
+ /* Use 64KiB tables */
289
+ #ifndef LTC_NO_TABLES
290
+ #define LTC_GCM_TABLES
291
+ #endif
292
+
293
+ /* USE SSE2? requires GCC works on x86_32 and x86_64*/
294
+ #ifdef LTC_GCM_TABLES
295
+ /* #define LTC_GCM_TABLES_SSE2 */
296
+ #endif
297
+
298
+ #endif /* LTC_NO_MACS */
299
+
300
+
301
+ /* --> Pseudo Random Number Generators <--- */
302
+ #ifndef LTC_NO_PRNGS
303
+
304
+ /* Yarrow */
305
+ #define LTC_YARROW
306
+ /* which descriptor of AES to use? */
307
+ /* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */
308
+ #ifdef ENCRYPT_ONLY
309
+ #define LTC_YARROW_AES 0
310
+ #else
311
+ #define LTC_YARROW_AES 2
312
+ #endif
313
+
314
+ /* a PRNG that simply reads from an available system source */
315
+ #define LTC_SPRNG
316
+
317
+ /* The LTC_RC4 stream cipher */
318
+ #define LTC_RC4
319
+
320
+ /* Fortuna PRNG */
321
+ #define LTC_FORTUNA
322
+
323
+ /* Greg's LTC_SOBER128 PRNG ;-0 */
324
+ #define LTC_SOBER128
325
+
326
+ /* the *nix style /dev/random device */
327
+ #define LTC_DEVRANDOM
328
+ /* try /dev/urandom before trying /dev/random
329
+ * are you sure you want to disable this? http://www.2uo.de/myths-about-urandom/ */
330
+ #define LTC_TRY_URANDOM_FIRST
331
+ /* rng_get_bytes() */
332
+ #define LTC_RNG_GET_BYTES
333
+ /* rng_make_prng() */
334
+ #define LTC_RNG_MAKE_PRNG
335
+
336
+ #endif /* LTC_NO_PRNGS */
337
+
338
+ #ifdef LTC_FORTUNA
339
+
340
+ #ifndef LTC_FORTUNA_WD
341
+ /* reseed every N calls to the read function */
342
+ #define LTC_FORTUNA_WD 10
343
+ #endif
344
+
345
+ #ifndef LTC_FORTUNA_POOLS
346
+ /* number of pools (4..32) can save a bit of ram by lowering the count */
347
+ #define LTC_FORTUNA_POOLS 32
348
+ #endif
349
+
350
+ #endif /* LTC_FORTUNA */
351
+
352
+
353
+ /* ---> Public Key Crypto <--- */
354
+ #ifndef LTC_NO_PK
355
+
356
+ /* Include RSA support */
357
+ #define LTC_MRSA
358
+
359
+ /* Include Diffie-Hellman support */
360
+ #ifndef GMP_DESC
361
+ /* is_prime fails for GMP */
362
+ #define LTC_MDH
363
+ /* Supported Key Sizes */
364
+ #define LTC_DH768
365
+ #define LTC_DH1024
366
+ #define LTC_DH1280
367
+ #define LTC_DH1536
368
+ #define LTC_DH1792
369
+ #define LTC_DH2048
370
+
371
+ #ifndef TFM_DESC
372
+ /* tfm has a problem in fp_isprime for larger key sizes */
373
+ #define LTC_DH2560
374
+ #define LTC_DH3072
375
+ #define LTC_DH4096
376
+ #endif
377
+ #endif
378
+
379
+ /* Include Katja (a Rabin variant like RSA) */
380
+ /* #define LTC_MKAT */
381
+
382
+ /* Digital Signature Algorithm */
383
+ #define LTC_MDSA
384
+
385
+ /* ECC */
386
+ #define LTC_MECC
387
+
388
+ /* use Shamir's trick for point mul (speeds up signature verification) */
389
+ #define LTC_ECC_SHAMIR
390
+
391
+ #if defined(TFM_DESC) && defined(LTC_MECC)
392
+ #define LTC_MECC_ACCEL
393
+ #endif
394
+
395
+ /* do we want fixed point ECC */
396
+ /* #define LTC_MECC_FP */
397
+
398
+ #endif /* LTC_NO_PK */
399
+
400
+ #if defined(LTC_MRSA) && !defined(LTC_NO_RSA_BLINDING)
401
+ /* Enable RSA blinding when doing private key operations by default */
402
+ #define LTC_RSA_BLINDING
403
+ #endif /* LTC_NO_RSA_BLINDING */
404
+
405
+ #if defined(LTC_MRSA) && !defined(LTC_NO_RSA_CRT_HARDENING)
406
+ /* Enable RSA CRT hardening when doing private key operations by default */
407
+ #define LTC_RSA_CRT_HARDENING
408
+ #endif /* LTC_NO_RSA_CRT_HARDENING */
409
+
410
+ #if defined(LTC_MECC) && !defined(LTC_NO_ECC_TIMING_RESISTANT)
411
+ /* Enable ECC timing resistant version by default */
412
+ #define LTC_ECC_TIMING_RESISTANT
413
+ #endif
414
+
415
+ /* define these PK sizes out of LTC_NO_PK
416
+ * to have them always defined
417
+ */
418
+ #if defined(LTC_MRSA)
419
+ /* Min and Max RSA key sizes (in bits) */
420
+ #ifndef MIN_RSA_SIZE
421
+ #define MIN_RSA_SIZE 1024
422
+ #endif
423
+ #ifndef MAX_RSA_SIZE
424
+ #define MAX_RSA_SIZE 4096
425
+ #endif
426
+ #endif
427
+
428
+ /* in cases where you want ASN.1/DER functionality, but no
429
+ * RSA, you can define this externally if 1024 is not enough
430
+ */
431
+ #if defined(LTC_MRSA)
432
+ #define LTC_DER_MAX_PUBKEY_SIZE MAX_RSA_SIZE
433
+ #elif !defined(LTC_DER_MAX_PUBKEY_SIZE)
434
+ /* this includes DSA */
435
+ #define LTC_DER_MAX_PUBKEY_SIZE 1024
436
+ #endif
437
+
438
+
439
+ /* PKCS #1 (RSA) and #5 (Password Handling) stuff */
440
+ #ifndef LTC_NO_PKCS
441
+
442
+ #define LTC_PKCS_1
443
+ #define LTC_PKCS_5
444
+
445
+ /* Include ASN.1 DER (required by DSA/RSA) */
446
+ #define LTC_DER
447
+
448
+ #endif /* LTC_NO_PKCS */
449
+
450
+ /* misc stuff */
451
+ #ifndef LTC_NO_MISC
452
+
453
+ /* Various tidbits of modern neatoness */
454
+ #define LTC_BASE64
455
+ /* ... and it's URL safe version */
456
+ #define LTC_BASE64_URL
457
+
458
+ /* Keep LTC_NO_HKDF for compatibility reasons
459
+ * superseeded by LTC_NO_MISC*/
460
+ #ifndef LTC_NO_HKDF
461
+ /* HKDF Key Derivation/Expansion stuff */
462
+ #define LTC_HKDF
463
+ #endif /* LTC_NO_HKDF */
464
+
465
+ #define LTC_ADLER32
466
+
467
+ #define LTC_CRC32
468
+
469
+ #endif /* LTC_NO_MISC */
470
+
471
+ /* cleanup */
472
+
473
+ #ifdef LTC_MECC
474
+ /* Supported ECC Key Sizes */
475
+ #ifndef LTC_NO_CURVES
476
+ #define LTC_ECC112
477
+ #define LTC_ECC128
478
+ #define LTC_ECC160
479
+ #define LTC_ECC192
480
+ #define LTC_ECC224
481
+ #define LTC_ECC256
482
+ #define LTC_ECC384
483
+ #define LTC_ECC521
484
+ #endif
485
+ #endif
486
+
487
+ #if defined(LTC_MECC) || defined(LTC_MRSA) || defined(LTC_MDSA) || defined(LTC_MKAT)
488
+ /* Include the MPI functionality? (required by the PK algorithms) */
489
+ #define LTC_MPI
490
+ #endif
491
+
492
+ #ifdef LTC_MRSA
493
+ #define LTC_PKCS_1
494
+ #endif
495
+
496
+ #if defined(TFM_DESC) && defined(LTC_RSA_BLINDING)
497
+ #warning RSA blinding currently not supported in combination with TFM
498
+ #undef LTC_RSA_BLINDING
499
+ #endif
500
+
501
+ #if defined(LTC_PELICAN) && !defined(LTC_RIJNDAEL)
502
+ #error Pelican-MAC requires LTC_RIJNDAEL
503
+ #endif
504
+
505
+ #if defined(LTC_EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(LTC_OMAC))
506
+ #error LTC_EAX_MODE requires CTR and LTC_OMAC mode
507
+ #endif
508
+
509
+ #if defined(LTC_YARROW) && !defined(LTC_CTR_MODE)
510
+ #error LTC_YARROW requires LTC_CTR_MODE chaining mode to be defined!
511
+ #endif
512
+
513
+ #if defined(LTC_DER) && !defined(LTC_MPI)
514
+ #error ASN.1 DER requires MPI functionality
515
+ #endif
516
+
517
+ #if (defined(LTC_MDSA) || defined(LTC_MRSA) || defined(LTC_MECC) || defined(LTC_MKAT)) && !defined(LTC_DER)
518
+ #error PK requires ASN.1 DER functionality, make sure LTC_DER is enabled
519
+ #endif
520
+
521
+ /* THREAD management */
522
+ #ifdef LTC_PTHREAD
523
+
524
+ #include <pthread.h>
525
+
526
+ #define LTC_MUTEX_GLOBAL(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER;
527
+ #define LTC_MUTEX_PROTO(x) extern pthread_mutex_t x;
528
+ #define LTC_MUTEX_TYPE(x) pthread_mutex_t x;
529
+ #define LTC_MUTEX_INIT(x) pthread_mutex_init(x, NULL);
530
+ #define LTC_MUTEX_LOCK(x) pthread_mutex_lock(x);
531
+ #define LTC_MUTEX_UNLOCK(x) pthread_mutex_unlock(x);
532
+
533
+ #else
534
+
535
+ /* default no functions */
536
+ #define LTC_MUTEX_GLOBAL(x)
537
+ #define LTC_MUTEX_PROTO(x)
538
+ #define LTC_MUTEX_TYPE(x)
539
+ #define LTC_MUTEX_INIT(x)
540
+ #define LTC_MUTEX_LOCK(x)
541
+ #define LTC_MUTEX_UNLOCK(x)
542
+
543
+ #endif
544
+
545
+ /* Debuggers */
546
+
547
+ /* define this if you use Valgrind, note: it CHANGES the way SOBER-128 and LTC_RC4 work (see the code) */
548
+ /* #define LTC_VALGRIND */
549
+
550
+ #endif
551
+
552
+
553
+
554
+ /* $Source$ */
555
+ /* $Revision$ */
556
+ /* $Date$ */