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.
- charm/__init__.py +5 -0
- charm/adapters/__init__.py +0 -0
- charm/adapters/abenc_adapt_hybrid.py +90 -0
- charm/adapters/dabenc_adapt_hybrid.py +145 -0
- charm/adapters/ibenc_adapt_hybrid.py +72 -0
- charm/adapters/ibenc_adapt_identityhash.py +80 -0
- charm/adapters/kpabenc_adapt_hybrid.py +91 -0
- charm/adapters/pkenc_adapt_bchk05.py +121 -0
- charm/adapters/pkenc_adapt_chk04.py +91 -0
- charm/adapters/pkenc_adapt_hybrid.py +98 -0
- charm/adapters/pksig_adapt_naor01.py +89 -0
- charm/config.py +7 -0
- charm/core/__init__.py +0 -0
- charm/core/benchmark/benchmark_util.c +353 -0
- charm/core/benchmark/benchmark_util.h +61 -0
- charm/core/benchmark/benchmarkmodule.c +476 -0
- charm/core/benchmark/benchmarkmodule.h +162 -0
- charm/core/benchmark.cpython-313-darwin.so +0 -0
- charm/core/crypto/AES/AES.c +1464 -0
- charm/core/crypto/AES.cpython-313-darwin.so +0 -0
- charm/core/crypto/DES/DES.c +113 -0
- charm/core/crypto/DES.cpython-313-darwin.so +0 -0
- charm/core/crypto/DES3/DES3.c +26 -0
- charm/core/crypto/DES3.cpython-313-darwin.so +0 -0
- charm/core/crypto/__init__.py +0 -0
- charm/core/crypto/cryptobase/XOR.c +80 -0
- charm/core/crypto/cryptobase/_counter.c +496 -0
- charm/core/crypto/cryptobase/_counter.h +54 -0
- charm/core/crypto/cryptobase/block_template.c +900 -0
- charm/core/crypto/cryptobase/block_template.h +69 -0
- charm/core/crypto/cryptobase/cryptobasemodule.c +220 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt.h +90 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_argchk.h +44 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_cfg.h +186 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_cipher.h +941 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_custom.h +556 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_des.c +1912 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_hash.h +407 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_mac.h +496 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_macros.h +435 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_math.h +534 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_misc.h +103 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_pk.h +653 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_pkcs.h +90 -0
- charm/core/crypto/cryptobase/libtom/tomcrypt_prng.h +199 -0
- charm/core/crypto/cryptobase/stream_template.c +271 -0
- charm/core/crypto/cryptobase/strxor.c +229 -0
- charm/core/crypto/cryptobase.cpython-313-darwin.so +0 -0
- charm/core/engine/__init__.py +5 -0
- charm/core/engine/protocol.py +293 -0
- charm/core/engine/util.py +174 -0
- charm/core/math/__init__.py +0 -0
- charm/core/math/elliptic_curve/ecmodule.c +1986 -0
- charm/core/math/elliptic_curve/ecmodule.h +230 -0
- charm/core/math/elliptic_curve.cpython-313-darwin.so +0 -0
- charm/core/math/elliptic_curve.pyi +63 -0
- charm/core/math/integer/integermodule.c +2539 -0
- charm/core/math/integer/integermodule.h +145 -0
- charm/core/math/integer.cpython-313-darwin.so +0 -0
- charm/core/math/integer.pyi +76 -0
- charm/core/math/pairing/miracl/miracl_config.h +37 -0
- charm/core/math/pairing/miracl/miracl_interface.h +118 -0
- charm/core/math/pairing/miracl/miracl_interface2.h +126 -0
- charm/core/math/pairing/miracl/pairingmodule2.c +2094 -0
- charm/core/math/pairing/miracl/pairingmodule2.h +307 -0
- charm/core/math/pairing/pairingmodule.c +2230 -0
- charm/core/math/pairing/pairingmodule.h +241 -0
- charm/core/math/pairing/relic/pairingmodule3.c +1853 -0
- charm/core/math/pairing/relic/pairingmodule3.h +233 -0
- charm/core/math/pairing/relic/relic_interface.c +1337 -0
- charm/core/math/pairing/relic/relic_interface.h +217 -0
- charm/core/math/pairing/relic/test_relic.c +171 -0
- charm/core/math/pairing.cpython-313-darwin.so +0 -0
- charm/core/math/pairing.pyi +69 -0
- charm/core/utilities/base64.c +248 -0
- charm/core/utilities/base64.h +15 -0
- charm/schemes/__init__.py +0 -0
- charm/schemes/abenc/__init__.py +0 -0
- charm/schemes/abenc/abenc_accountability_jyjxgd20.py +647 -0
- charm/schemes/abenc/abenc_bsw07.py +146 -0
- charm/schemes/abenc/abenc_ca_cpabe_ar17.py +684 -0
- charm/schemes/abenc/abenc_dacmacs_yj14.py +298 -0
- charm/schemes/abenc/abenc_lsw08.py +159 -0
- charm/schemes/abenc/abenc_maabe_rw15.py +236 -0
- charm/schemes/abenc/abenc_maabe_yj14.py +297 -0
- charm/schemes/abenc/abenc_tbpre_lww14.py +309 -0
- charm/schemes/abenc/abenc_unmcpabe_yahk14.py +223 -0
- charm/schemes/abenc/abenc_waters09.py +144 -0
- charm/schemes/abenc/abenc_yct14.py +208 -0
- charm/schemes/abenc/abenc_yllc15.py +178 -0
- charm/schemes/abenc/ac17.py +248 -0
- charm/schemes/abenc/bsw07.py +141 -0
- charm/schemes/abenc/cgw15.py +277 -0
- charm/schemes/abenc/dabe_aw11.py +204 -0
- charm/schemes/abenc/dfa_fe12.py +144 -0
- charm/schemes/abenc/pk_hve08.py +179 -0
- charm/schemes/abenc/waters11.py +143 -0
- charm/schemes/aggrsign_MuSig.py +150 -0
- charm/schemes/aggrsign_bls.py +267 -0
- charm/schemes/blindsig_ps16.py +654 -0
- charm/schemes/chamhash_adm05.py +113 -0
- charm/schemes/chamhash_rsa_hw09.py +100 -0
- charm/schemes/commit/__init__.py +0 -0
- charm/schemes/commit/commit_gs08.py +77 -0
- charm/schemes/commit/commit_pedersen92.py +53 -0
- charm/schemes/encap_bchk05.py +62 -0
- charm/schemes/grpsig/__init__.py +0 -0
- charm/schemes/grpsig/groupsig_bgls04.py +114 -0
- charm/schemes/grpsig/groupsig_bgls04_var.py +115 -0
- charm/schemes/hibenc/__init__.py +0 -0
- charm/schemes/hibenc/hibenc_bb04.py +105 -0
- charm/schemes/hibenc/hibenc_lew11.py +193 -0
- charm/schemes/ibenc/__init__.py +0 -0
- charm/schemes/ibenc/clpkc_rp03.py +119 -0
- charm/schemes/ibenc/ibenc_CW13_z.py +168 -0
- charm/schemes/ibenc/ibenc_bb03.py +94 -0
- charm/schemes/ibenc/ibenc_bf01.py +121 -0
- charm/schemes/ibenc/ibenc_ckrs09.py +120 -0
- charm/schemes/ibenc/ibenc_cllww12_z.py +172 -0
- charm/schemes/ibenc/ibenc_lsw08.py +120 -0
- charm/schemes/ibenc/ibenc_sw05.py +238 -0
- charm/schemes/ibenc/ibenc_waters05.py +144 -0
- charm/schemes/ibenc/ibenc_waters05_z.py +164 -0
- charm/schemes/ibenc/ibenc_waters09.py +107 -0
- charm/schemes/ibenc/ibenc_waters09_z.py +147 -0
- charm/schemes/joye_scheme.py +106 -0
- charm/schemes/lem_scheme.py +207 -0
- charm/schemes/pk_fre_ccv11.py +107 -0
- charm/schemes/pk_vrf.py +127 -0
- charm/schemes/pkenc/__init__.py +0 -0
- charm/schemes/pkenc/pkenc_cs98.py +108 -0
- charm/schemes/pkenc/pkenc_elgamal85.py +122 -0
- charm/schemes/pkenc/pkenc_gm82.py +98 -0
- charm/schemes/pkenc/pkenc_paillier99.py +118 -0
- charm/schemes/pkenc/pkenc_rabin.py +254 -0
- charm/schemes/pkenc/pkenc_rsa.py +186 -0
- charm/schemes/pksig/__init__.py +0 -0
- charm/schemes/pksig/pksig_CW13_z.py +135 -0
- charm/schemes/pksig/pksig_bls04.py +87 -0
- charm/schemes/pksig/pksig_boyen.py +156 -0
- charm/schemes/pksig/pksig_chch.py +97 -0
- charm/schemes/pksig/pksig_chp.py +70 -0
- charm/schemes/pksig/pksig_cl03.py +150 -0
- charm/schemes/pksig/pksig_cl04.py +87 -0
- charm/schemes/pksig/pksig_cllww12_z.py +142 -0
- charm/schemes/pksig/pksig_cyh.py +132 -0
- charm/schemes/pksig/pksig_dsa.py +76 -0
- charm/schemes/pksig/pksig_ecdsa.py +71 -0
- charm/schemes/pksig/pksig_hess.py +104 -0
- charm/schemes/pksig/pksig_hw.py +110 -0
- charm/schemes/pksig/pksig_lamport.py +63 -0
- charm/schemes/pksig/pksig_ps01.py +135 -0
- charm/schemes/pksig/pksig_ps02.py +124 -0
- charm/schemes/pksig/pksig_ps03.py +119 -0
- charm/schemes/pksig/pksig_rsa_hw09.py +206 -0
- charm/schemes/pksig/pksig_schnorr91.py +77 -0
- charm/schemes/pksig/pksig_waters.py +115 -0
- charm/schemes/pksig/pksig_waters05.py +121 -0
- charm/schemes/pksig/pksig_waters09.py +121 -0
- charm/schemes/pre_mg07.py +150 -0
- charm/schemes/prenc/pre_afgh06.py +126 -0
- charm/schemes/prenc/pre_bbs98.py +123 -0
- charm/schemes/prenc/pre_nal16.py +216 -0
- charm/schemes/protocol_a01.py +272 -0
- charm/schemes/protocol_ao00.py +215 -0
- charm/schemes/protocol_cns07.py +274 -0
- charm/schemes/protocol_schnorr91.py +125 -0
- charm/schemes/sigma1.py +64 -0
- charm/schemes/sigma2.py +129 -0
- charm/schemes/sigma3.py +126 -0
- charm/schemes/threshold/__init__.py +59 -0
- charm/schemes/threshold/dkls23_dkg.py +556 -0
- charm/schemes/threshold/dkls23_presign.py +1089 -0
- charm/schemes/threshold/dkls23_sign.py +761 -0
- charm/schemes/threshold/xrpl_wallet.py +967 -0
- charm/test/__init__.py +0 -0
- charm/test/adapters/__init__.py +0 -0
- charm/test/adapters/abenc_adapt_hybrid_test.py +29 -0
- charm/test/adapters/dabenc_adapt_hybrid_test.py +56 -0
- charm/test/adapters/ibenc_adapt_hybrid_test.py +36 -0
- charm/test/adapters/ibenc_adapt_identityhash_test.py +32 -0
- charm/test/adapters/kpabenc_adapt_hybrid_test.py +30 -0
- charm/test/benchmark/abenc_yllc15_bench.py +92 -0
- charm/test/benchmark/benchmark_test.py +148 -0
- charm/test/benchmark_threshold.py +260 -0
- charm/test/conftest.py +38 -0
- charm/test/fuzz/__init__.py +1 -0
- charm/test/fuzz/conftest.py +5 -0
- charm/test/fuzz/fuzz_policy_parser.py +76 -0
- charm/test/fuzz/fuzz_serialization.py +83 -0
- charm/test/schemes/__init__.py +0 -0
- charm/test/schemes/abenc/__init__.py +0 -0
- charm/test/schemes/abenc/abenc_bsw07_test.py +39 -0
- charm/test/schemes/abenc/abenc_dacmacs_yj14_test.py +16 -0
- charm/test/schemes/abenc/abenc_lsw08_test.py +33 -0
- charm/test/schemes/abenc/abenc_maabe_yj14_test.py +16 -0
- charm/test/schemes/abenc/abenc_tbpre_lww14_test.py +16 -0
- charm/test/schemes/abenc/abenc_waters09_test.py +38 -0
- charm/test/schemes/abenc/abenc_yllc15_test.py +74 -0
- charm/test/schemes/chamhash_adm05_test.py +31 -0
- charm/test/schemes/chamhash_rsa_hw09_test.py +29 -0
- charm/test/schemes/commit/__init__.py +0 -0
- charm/test/schemes/commit/commit_gs08_test.py +24 -0
- charm/test/schemes/commit/commit_pedersen92_test.py +26 -0
- charm/test/schemes/dabe_aw11_test.py +45 -0
- charm/test/schemes/encap_bchk05_test.py +21 -0
- charm/test/schemes/grpsig/__init__.py +0 -0
- charm/test/schemes/grpsig/groupsig_bgls04_test.py +35 -0
- charm/test/schemes/grpsig/groupsig_bgls04_var_test.py +39 -0
- charm/test/schemes/hibenc/__init__.py +0 -0
- charm/test/schemes/hibenc/hibenc_bb04_test.py +28 -0
- charm/test/schemes/ibenc/__init__.py +0 -0
- charm/test/schemes/ibenc/ibenc_bb03_test.py +26 -0
- charm/test/schemes/ibenc/ibenc_bf01_test.py +24 -0
- charm/test/schemes/ibenc/ibenc_ckrs09_test.py +25 -0
- charm/test/schemes/ibenc/ibenc_lsw08_test.py +31 -0
- charm/test/schemes/ibenc/ibenc_sw05_test.py +32 -0
- charm/test/schemes/ibenc/ibenc_waters05_test.py +31 -0
- charm/test/schemes/ibenc/ibenc_waters09_test.py +27 -0
- charm/test/schemes/pk_vrf_test.py +29 -0
- charm/test/schemes/pkenc/__init__.py +0 -0
- charm/test/schemes/pkenc_test.py +255 -0
- charm/test/schemes/pksig/__init__.py +0 -0
- charm/test/schemes/pksig_test.py +376 -0
- charm/test/schemes/rsa_alg_test.py +340 -0
- charm/test/schemes/threshold_test.py +1792 -0
- charm/test/serialize/__init__.py +0 -0
- charm/test/serialize/serialize_test.py +40 -0
- charm/test/toolbox/__init__.py +0 -0
- charm/test/toolbox/conversion_test.py +30 -0
- charm/test/toolbox/ecgroup_test.py +53 -0
- charm/test/toolbox/integer_arithmetic_test.py +441 -0
- charm/test/toolbox/paddingschemes_test.py +238 -0
- charm/test/toolbox/policy_parser_stress_test.py +969 -0
- charm/test/toolbox/secretshare_test.py +28 -0
- charm/test/toolbox/symcrypto_test.py +108 -0
- charm/test/toolbox/test_policy_expression.py +16 -0
- charm/test/vectors/__init__.py +1 -0
- charm/test/vectors/test_bls_vectors.py +289 -0
- charm/test/vectors/test_pedersen_vectors.py +315 -0
- charm/test/vectors/test_schnorr_vectors.py +368 -0
- charm/test/zkp_compiler/__init__.py +9 -0
- charm/test/zkp_compiler/benchmark_zkp.py +258 -0
- charm/test/zkp_compiler/test_and_proof.py +240 -0
- charm/test/zkp_compiler/test_batch_verify.py +248 -0
- charm/test/zkp_compiler/test_dleq_proof.py +264 -0
- charm/test/zkp_compiler/test_or_proof.py +231 -0
- charm/test/zkp_compiler/test_proof_serialization.py +121 -0
- charm/test/zkp_compiler/test_range_proof.py +241 -0
- charm/test/zkp_compiler/test_representation_proof.py +325 -0
- charm/test/zkp_compiler/test_schnorr_proof.py +221 -0
- charm/test/zkp_compiler/test_thread_safety.py +169 -0
- charm/test/zkp_compiler/test_zkp_parser.py +139 -0
- charm/toolbox/ABEnc.py +26 -0
- charm/toolbox/ABEncMultiAuth.py +66 -0
- charm/toolbox/ABEnumeric.py +800 -0
- charm/toolbox/Commit.py +24 -0
- charm/toolbox/DFA.py +89 -0
- charm/toolbox/FSA.py +1254 -0
- charm/toolbox/Hash.py +39 -0
- charm/toolbox/IBEnc.py +62 -0
- charm/toolbox/IBSig.py +64 -0
- charm/toolbox/PKEnc.py +66 -0
- charm/toolbox/PKSig.py +56 -0
- charm/toolbox/PREnc.py +32 -0
- charm/toolbox/ZKProof.py +289 -0
- charm/toolbox/__init__.py +0 -0
- charm/toolbox/bitstring.py +49 -0
- charm/toolbox/broadcast.py +220 -0
- charm/toolbox/conversion.py +100 -0
- charm/toolbox/eccurve.py +149 -0
- charm/toolbox/ecgroup.py +143 -0
- charm/toolbox/enum.py +60 -0
- charm/toolbox/hash_module.py +91 -0
- charm/toolbox/integergroup.py +323 -0
- charm/toolbox/iterate.py +22 -0
- charm/toolbox/matrixops.py +76 -0
- charm/toolbox/mpc_utils.py +296 -0
- charm/toolbox/msp.py +175 -0
- charm/toolbox/mta.py +985 -0
- charm/toolbox/node.py +120 -0
- charm/toolbox/ot/__init__.py +22 -0
- charm/toolbox/ot/base_ot.py +374 -0
- charm/toolbox/ot/dpf.py +642 -0
- charm/toolbox/ot/mpfss.py +228 -0
- charm/toolbox/ot/ot_extension.py +589 -0
- charm/toolbox/ot/silent_ot.py +378 -0
- charm/toolbox/paddingschemes.py +423 -0
- charm/toolbox/paddingschemes_test.py +238 -0
- charm/toolbox/pairingcurves.py +85 -0
- charm/toolbox/pairinggroup.py +186 -0
- charm/toolbox/policy_expression_spec.py +70 -0
- charm/toolbox/policytree.py +189 -0
- charm/toolbox/reCompiler.py +346 -0
- charm/toolbox/redundancyschemes.py +65 -0
- charm/toolbox/schemebase.py +188 -0
- charm/toolbox/secretshare.py +104 -0
- charm/toolbox/secretutil.py +174 -0
- charm/toolbox/securerandom.py +73 -0
- charm/toolbox/sigmaprotocol.py +46 -0
- charm/toolbox/specialprimes.py +45 -0
- charm/toolbox/symcrypto.py +279 -0
- charm/toolbox/threshold_sharing.py +553 -0
- charm/toolbox/xmlserialize.py +94 -0
- charm/toolbox/zknode.py +105 -0
- charm/zkp_compiler/__init__.py +89 -0
- charm/zkp_compiler/and_proof.py +460 -0
- charm/zkp_compiler/batch_verify.py +324 -0
- charm/zkp_compiler/dleq_proof.py +423 -0
- charm/zkp_compiler/or_proof.py +305 -0
- charm/zkp_compiler/range_proof.py +417 -0
- charm/zkp_compiler/representation_proof.py +466 -0
- charm/zkp_compiler/schnorr_proof.py +273 -0
- charm/zkp_compiler/thread_safe.py +150 -0
- charm/zkp_compiler/zk_demo.py +489 -0
- charm/zkp_compiler/zkp_factory.py +330 -0
- charm/zkp_compiler/zkp_generator.py +370 -0
- charm/zkp_compiler/zkparser.py +269 -0
- charm_crypto_framework-0.61.1.dist-info/METADATA +337 -0
- charm_crypto_framework-0.61.1.dist-info/RECORD +323 -0
- charm_crypto_framework-0.61.1.dist-info/WHEEL +5 -0
- charm_crypto_framework-0.61.1.dist-info/licenses/LICENSE.txt +165 -0
- 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()
|