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,376 @@
1
+ from charm.adapters.pksig_adapt_naor01 import Sig_Generic_ibetosig_Naor01
2
+ from charm.adapters.ibenc_adapt_identityhash import HashIDAdapter
3
+ from charm.schemes.ibenc.ibenc_bb03 import IBE_BB04
4
+ from charm.schemes.pksig.pksig_bls04 import BLS01
5
+ from charm.schemes.pksig.pksig_boyen import Boyen
6
+ from charm.schemes.pksig.pksig_chch import CHCH
7
+ from charm.schemes.pksig.pksig_chp import CHP
8
+ from charm.schemes.pksig.pksig_cl03 import Sig_CL03, SHA1
9
+ from charm.schemes.pksig.pksig_cl04 import CL04
10
+ from charm.schemes.pksig.pksig_cyh import CYH
11
+ from charm.schemes.pksig.pksig_dsa import DSA
12
+ from charm.schemes.pksig.pksig_ecdsa import ECDSA
13
+ from charm.schemes.pksig.pksig_hess import Hess
14
+ from charm.schemes.pksig.pksig_hw import HW
15
+ from charm.schemes.pksig.pksig_rsa_hw09 import Sig_RSA_Stateless_HW09
16
+ from charm.schemes.pksig.pksig_schnorr91 import SchnorrSig
17
+ from charm.schemes.pksig.pksig_waters05 import IBE_N04_Sig
18
+ from charm.schemes.pksig.pksig_waters09 import IBEWaters09
19
+ from charm.schemes.pksig.pksig_waters import WatersSig
20
+ from charm.toolbox.pairinggroup import PairingGroup, ZR
21
+ from charm.toolbox.ecgroup import ECGroup
22
+ from charm.toolbox.eccurve import prime192v2
23
+ from charm.toolbox.integergroup import integer
24
+ from charm.toolbox.hash_module import Waters
25
+ import unittest
26
+ #import pytest
27
+ debug = False
28
+
29
+ class PKSig_Naor01Test(unittest.TestCase):
30
+ def testPKSig_Naor01(self):
31
+ groupObj = PairingGroup('MNT224')
32
+
33
+ ibe = IBE_BB04(groupObj)
34
+
35
+ hashID = HashIDAdapter(ibe, groupObj)
36
+ ibsig = Sig_Generic_ibetosig_Naor01(hashID, groupObj)
37
+
38
+ (mpk, msk) = ibsig.keygen()
39
+
40
+ M = "I want a signature on this message!"
41
+
42
+ sigma = ibsig.sign(msk, M)
43
+ if debug: print("\nMessage =>", M)
44
+ if debug: print("Sigma =>", sigma)
45
+
46
+ assert ibsig.verify(mpk, M, sigma), "Failed Verification!!!"
47
+ if debug: print("Successful Verification!!!")
48
+ del groupObj
49
+
50
+ class BLS01Test(unittest.TestCase):
51
+ def testBLS04(self):
52
+ groupObj = PairingGroup('MNT224')
53
+
54
+ m = { 'a':"hello world!!!" , 'b':"test message" }
55
+ bls = BLS01(groupObj)
56
+
57
+ (pk, sk) = bls.keygen(0)
58
+
59
+ sig = bls.sign(sk['x'], m)
60
+
61
+ if debug: print("Message: '%s'" % m)
62
+ if debug: print("Signature: '%s'" % sig)
63
+ assert bls.verify(pk, sig, m), "Failure!!!"
64
+ if debug: print('SUCCESS!!!')
65
+
66
+ class BoyenTest(unittest.TestCase):
67
+ def testBoyen(self):
68
+ groupObj = PairingGroup('MNT224')
69
+ #groupObj = PairingGroup(MNT160)
70
+ boyen = Boyen(groupObj)
71
+ mpk = boyen.setup()
72
+ if debug: print("Pub parameters")
73
+ if debug: print(mpk, "\n\n")
74
+
75
+ num_signers = 3
76
+ L_keys = [ boyen.keygen(mpk) for i in range(num_signers)]
77
+ L_pk = {}; L_sk = {}
78
+ for i in range(len(L_keys)):
79
+ L_pk[ i+1 ] = L_keys[ i ][ 0 ] # pk
80
+ L_sk[ i+1 ] = L_keys[ i ][ 1 ]
81
+
82
+ if debug: print("Keygen...")
83
+ if debug: print("sec keys =>", L_sk.keys(),"\n", L_sk)
84
+
85
+ signer = 3
86
+ sk = L_sk[signer]
87
+ M = 'please sign this new message!'
88
+ sig = boyen.sign(signer, mpk, L_pk, sk, M)
89
+ if debug: print("\nSignature...")
90
+ if debug: print("sig =>", sig)
91
+
92
+ assert boyen.verify(mpk, L_pk, M, sig), "invalid signature!"
93
+ if debug: print("Verification successful!")
94
+
95
+ class CHCHTest(unittest.TestCase):
96
+ def testCHCH(self):
97
+ groupObj = PairingGroup('SS512')
98
+ chch = CHCH(groupObj)
99
+ (mpk, msk) = chch.setup()
100
+
101
+ _id = "janedoe@email.com"
102
+ (pk, sk) = chch.keygen(msk, _id)
103
+ if debug:
104
+ print("Keygen...")
105
+ print("pk =>", pk)
106
+ print("sk =>", sk)
107
+
108
+ M = "this is a message!"
109
+ sig = chch.sign(pk, sk, M)
110
+ if debug:
111
+ print("Signature...")
112
+ print("sig =>", sig)
113
+
114
+ assert chch.verify(mpk, pk, M, sig), "invalid signature!"
115
+ if debug: print("Verification successful!")
116
+
117
+ class CHPTest(unittest.TestCase):
118
+ def testCHP(self):
119
+ groupObj = PairingGroup('SS512')
120
+ chp = CHP(groupObj)
121
+ mpk = chp.setup()
122
+
123
+ (pk, sk) = chp.keygen(mpk)
124
+ if debug:
125
+ print("Keygen...")
126
+ print("pk =>", pk)
127
+ print("sk =>", sk)
128
+
129
+ M = { 't1':'time_1', 't2':'time_2', 't3':'time_3', 'str':'this is the message'}
130
+ sig = chp.sign(pk, sk, M)
131
+ if debug:
132
+ print("Signature...")
133
+ print("sig =>", sig)
134
+
135
+ assert chp.verify(mpk, pk, M, sig), "invalid signature!"
136
+ if debug: print("Verification successful!")
137
+
138
+ class CL03Test(unittest.TestCase):
139
+ def testCL03(self):
140
+ pksig = Sig_CL03()
141
+
142
+ p = integer(21281327767482252741932894893985715222965623124768085901716557791820905647984944443933101657552322341359898014680608292582311911954091137905079983298534519)
143
+ q = integer(25806791860198780216123533220157510131833627659100364815258741328806284055493647951841418122944864389129382151632630375439181728665686745203837140362092027)
144
+
145
+ (pk, sk) = pksig.keygen(1024, p, q)
146
+ if debug:
147
+ print("Public parameters...")
148
+ print("pk =>", pk)
149
+ print("sk =>", sk)
150
+
151
+ m = integer(SHA1(b'This is the message I want to hash.'))
152
+ sig = pksig.sign(pk, sk, m)
153
+ if debug:
154
+ print("Signature...")
155
+ print("sig =>", sig)
156
+
157
+ assert pksig.verify(pk, m, sig), "FAILED VERIFICATION!!!"
158
+ if debug: print("Successful Verification!!!")
159
+
160
+ class CL04Test(unittest.TestCase):
161
+ def testCL04(self):
162
+ grp = PairingGroup('MNT224')
163
+ cl = CL04(grp)
164
+
165
+ mpk = cl.setup()
166
+
167
+ (pk, sk) = cl.keygen(mpk)
168
+ if debug:
169
+ print("Keygen...")
170
+ print("pk :=", pk)
171
+ print("sk :=", sk)
172
+
173
+ M = "Please sign this stupid message!"
174
+ sig = cl.sign(pk, sk, M)
175
+ if debug: print("Signature: ", sig)
176
+
177
+ result = cl.verify(pk, M, sig)
178
+ assert result, "INVALID signature!"
179
+ if debug: print("Successful Verification!!!")
180
+
181
+ class CYHTest(unittest.TestCase):
182
+ def testCYH(self):
183
+ L = [ "alice", "bob", "carlos", "dexter", "eddie"]
184
+ ID = "bob"
185
+ groupObj = PairingGroup('SS512')
186
+ cyh = CYH(groupObj)
187
+ (mpk, msk) = cyh.setup()
188
+
189
+ (ID, Pk, Sk) = cyh.keygen(msk, ID)
190
+ sk = (ID, Pk, Sk)
191
+ if debug:
192
+ print("Keygen...")
193
+ print("sk =>", sk)
194
+
195
+ M = 'please sign this new message!'
196
+ sig = cyh.sign(sk, L, M)
197
+ if debug:
198
+ print("Signature...")
199
+ print("sig =>", sig)
200
+
201
+ assert cyh.verify(mpk, L, M, sig), "invalid signature!"
202
+ if debug: print("Verification successful!")
203
+
204
+ class DSATest(unittest.TestCase):
205
+ def testDSA(self):
206
+ p = integer(156053402631691285300957066846581395905893621007563090607988086498527791650834395958624527746916581251903190331297268907675919283232442999706619659475326192111220545726433895802392432934926242553363253333261282122117343404703514696108330984423475697798156574052962658373571332699002716083130212467463571362679)
207
+ q = integer(78026701315845642650478533423290697952946810503781545303994043249263895825417197979312263873458290625951595165648634453837959641616221499853309829737663096055610272863216947901196216467463121276681626666630641061058671702351757348054165492211737848899078287026481329186785666349501358041565106233731785681339)
208
+ dsa = DSA(p, q)
209
+
210
+ (pk, sk) = dsa.keygen(1024)
211
+ m = "hello world test message!!!"
212
+ sig = dsa.sign(pk, sk, m)
213
+
214
+ assert dsa.verify(pk, sig, m), "Failed verification!"
215
+ if debug: print("Signature Verified!!!")
216
+
217
+ class ECDSATest(unittest.TestCase):
218
+ def testECDSA(self):
219
+ groupObj = ECGroup(prime192v2)
220
+ ecdsa = ECDSA(groupObj)
221
+
222
+ (pk, sk) = ecdsa.keygen(0)
223
+ m = "hello world! this is a test message."
224
+
225
+ sig = ecdsa.sign(pk, sk, m)
226
+ assert ecdsa.verify(pk, sig, m), "Failed verification!"
227
+ if debug: print("Signature Verified!!!")
228
+
229
+ class HessTest(unittest.TestCase):
230
+ def testHess(self):
231
+ groupObj = PairingGroup('SS512')
232
+ chch = Hess(groupObj)
233
+ (mpk, msk) = chch.setup()
234
+
235
+ _id = "janedoe@email.com"
236
+ (pk, sk) = chch.keygen(msk, _id)
237
+ if debug:
238
+ print("Keygen...")
239
+ print("pk =>", pk)
240
+ print("sk =>", sk)
241
+
242
+ M = "this is a message!"
243
+ sig = chch.sign(mpk, sk, M)
244
+ if debug:
245
+ print("Signature...")
246
+ print("sig =>", sig)
247
+
248
+ assert chch.verify(mpk, pk, M, sig), "invalid signature!"
249
+ if debug: print("Verification successful!")
250
+
251
+ class HWTest(unittest.TestCase):
252
+ def testHW(self):
253
+ #AES_SECURITY = 80
254
+ groupObj = PairingGroup('SS512')
255
+ hw = HW(groupObj)
256
+
257
+ (pk, sk) = hw.setup()
258
+ if debug:
259
+ print("Public parameters")
260
+ print("pk =>", pk)
261
+
262
+ m = "please sign this message now please!"
263
+ sig = hw.sign(pk, sk, pk['s'], m)
264
+ if debug:
265
+ print("Signature...")
266
+ print("sig =>", sig)
267
+
268
+ assert hw.verify(pk, m, sig), "invalid signature"
269
+ if debug: print("Verification Successful!!")
270
+
271
+ #@pytest.mark.skpifif("1=1")
272
+ #class RSA_HW09Test(unittest.TestCase):
273
+ # def testRSA_HW09(self):
274
+ # pksig = Sig_RSA_Stateless_HW09()
275
+ # # fixed params for unit tests
276
+ # p = integer(13075790812874903063868976368194105132206964291400106069285054021531242344673657224376055832139406140158530256050580761865568307154219348003780027259560207)
277
+ # q = integer(12220150399144091059083151334113293594120344494042436487743750419696868216757186059428173175925369884682105191510729093971051869295857706815002710593321543)
278
+ # (pk, sk) = pksig.keygen(1024, p, q)
279
+ # if debug:
280
+ # print("Public parameters...")
281
+ # print("pk =>", pk)
282
+ # print("sk =>", sk)
283
+ #
284
+ # m = SHA1(b'this is the message I want to hash.')
285
+ # m2 = SHA1(b'please sign this message too!')
286
+ # #m = b'This is a message to hash'
287
+ # sig = pksig.sign(pk, sk, m)
288
+ # if debug:
289
+ # print("Signature...")
290
+ # print("sig =>", sig)
291
+ # sig2 = pksig.sign(pk, sk, m2)
292
+ # if debug:
293
+ # print("Signature 2...")
294
+ # print("sig2 =>", sig2)
295
+ #
296
+ # assert pksig.verify(pk, m, sig), "FAILED VERIFICATION!!!"
297
+ # assert pksig.verify(pk, m2, sig2), "FAILED VERIFICATION!!!"
298
+ # if debug: print("Successful Verification!!!")
299
+
300
+ class SchnorrSigTest(unittest.TestCase):
301
+ def testSchnorrSig(self):
302
+ # test only parameters for p,q
303
+ p = integer(156816585111264668689583680968857341596876961491501655859473581156994765485015490912709775771877391134974110808285244016265856659644360836326566918061490651852930016078015163968109160397122004869749553669499102243382571334855815358562585736488447912605222780091120196023676916968821094827532746274593222577067)
304
+ q = integer(78408292555632334344791840484428670798438480745750827929736790578497382742507745456354887885938695567487055404142622008132928329822180418163283459030745325926465008039007581984054580198561002434874776834749551121691285667427907679281292868244223956302611390045560098011838458484410547413766373137296611288533)
305
+ pksig = SchnorrSig()
306
+
307
+ pksig.params(p, q)
308
+
309
+ (pk, sk) = pksig.keygen()
310
+
311
+ M = "hello world."
312
+ sig = pksig.sign(pk, sk, M)
313
+
314
+ assert pksig.verify(pk, sig, M), "Failed verification!"
315
+ if debug: print("Signature verified!!!!")
316
+
317
+ class IBE_N04_SigTest(unittest.TestCase):
318
+ def testIBE_N04_Sig(self):
319
+ # initialize the element object so that object references have global scope
320
+ groupObj = PairingGroup('SS512')
321
+ waters = Waters(groupObj)
322
+ ibe = IBE_N04_Sig(groupObj)
323
+ (pk, sk) = ibe.keygen()
324
+
325
+ # represents public identity
326
+ M = "bob@mail.com"
327
+
328
+ msg = waters.hash(M)
329
+ sig = ibe.sign(pk, sk, msg)
330
+ if debug:
331
+ print("original msg => '%s'" % M)
332
+ print("msg => '%s'" % msg)
333
+ print("sig => '%s'" % sig)
334
+
335
+ assert ibe.verify(pk, msg, sig), "Failed verification!"
336
+ if debug: print("Successful Verification!!! msg => '%s'" % msg)
337
+
338
+ class IBEWaters09Test(unittest.TestCase):
339
+ def testIBEWaters09(self):
340
+ # scheme designed for symmetric billinear groups
341
+ grp = PairingGroup('MNT224')
342
+
343
+ ibe = IBEWaters09(grp)
344
+
345
+ (mpk, msk) = ibe.keygen()
346
+
347
+ m = "plese sign this message!!!!"
348
+ sigma = ibe.sign(mpk, msk, m)
349
+ if debug: print("Signature :=", sigma)
350
+
351
+ assert ibe.verify(mpk, sigma, m), "Invalid Verification!!!!"
352
+ if debug: print("Successful Individual Verification!")
353
+
354
+ class WatersSigTest(unittest.TestCase):
355
+ def testWatersSig(self):
356
+ z = 5
357
+ groupObj = PairingGroup('SS512')
358
+
359
+ waters = WatersSig(groupObj)
360
+ (mpk, msk) = waters.setup(z)
361
+
362
+ ID = 'janedoe@email.com'
363
+ sk = waters.keygen(mpk, msk, ID)
364
+ if debug:
365
+ print("Keygen...")
366
+ print("sk =>", sk)
367
+
368
+ M = 'please sign this new message!'
369
+ sig = waters.sign(mpk, sk, M)
370
+ if debug: print("Signature...")
371
+
372
+ assert waters.verify(mpk, ID, M, sig), "invalid signature!"
373
+ if debug: print("Verification successful!")
374
+
375
+ if __name__ == "__main__":
376
+ unittest.main()