-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsig_test.py
More file actions
111 lines (102 loc) · 3.34 KB
/
sig_test.py
File metadata and controls
111 lines (102 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import time
from coincurve import PrivateKey, PublicKey
from utils.core.bls_bn import sign, verify_share, verify_signature, hash_message, combine_shares
from utils.core.serializer import serialize_G2,deseralize_G2
import os
import hashlib, pickle
from crypto.ecdsa.ecdsa import ecdsa_vrfy, ecdsa_sign
from utils.core.serializer import serialize, deserialize
from crypto.threshsig.boldyreva import dealer
from pypairing import G1 as G11, G2 as G22, ZR as ZRR, blsmultiexp, pair as pairr
import logging
from crypto.threshsig.boldyreva import serialize, deserialize1
from crypto.threshsig.boldyreva import TBLSPrivateKey, TBLSPublicKey
N=4
id = 0
with open(os.getcwd() + '/keys-' + str(N) + '/' + 'thSK1-' + str(id) + '.key', 'rb') as fp:
thsk = pickle.load(fp)
with open(os.getcwd() + '/keys-' + str(N) + '/' + 'thPK1' + '.key', 'rb') as fp:
thpk = deserialize(pickle.load(fp))
thpks = []
for i in range(N):
with open(os.getcwd() + '/keys-' + str(N) + '/' + 'thPK1-' + str(i) + '.key', 'rb') as fp:
thpks.append(deserialize(pickle.load(fp)))
sPK2s = []
for i in range(N):
with open(os.getcwd() + '/keys-' + str(N) + '/' + 'sPK2-' + str(i) + '.key', 'rb') as fp:
sPK2s.append(PublicKey(pickle.load(fp)))
with open(os.getcwd() + '/keys-' + str(N) + '/' + 'sSK2-' + str(id) + '.key', 'rb') as fp:
sSK2 = PrivateKey(pickle.load(fp))
with open(os.getcwd() + '/keys-' + str(N) + '/' + 'eSK1-' + str(id) + '.key', 'rb') as fp:
eSK = pickle.load(fp)
sPK1, sSK1 = dealer(4, 2)
t1 = time.time()
digest1FromLeader = hash_message(str("ECHO"))
t2 = time.time()
sig = sign(thsk, digest1FromLeader)
t3 = time.time()
s_sig = serialize_G2(sig)
t4 = time.time()
d_sig = deseralize_G2(s_sig)
t5 = time.time()
assert verify_share(thpks[id], d_sig, digest1FromLeader)
t6 = time.time()
print("all", t6-t1)
print("hash", t2-t1)
print("sign", t3-t2)
print("se", t4-t3)
print("de", t5-t4)
print("ver", t6 - t5)
print("=========================")
def hash(x):
return hashlib.sha256(pickle.dumps(x)).digest()
t1 = time.time()
digest1FromLeader = hash(str("ECHO"))
t2 = time.time()
sig = ecdsa_sign(sSK2, digest1FromLeader)
t3 = time.time()
for i in range(16):
assert ecdsa_vrfy(sPK2s[id], digest1FromLeader, sig)
t4 = time.time()
print("all", t4-t1)
print("hash", t2-t1)
print("sign", t3-t2)
print("ver16 sigs", t4-t3)
print("=========================")
t1 = time.time()
digest1 = sPK1.hash_message(str('STORED'))
t2 = time.time()
sigma = sSK1[id].sign(digest1)
t3 = time.time()
assert sPK1.verify_share(sigma, id, digest1)
t4 = time.time()
print("all", t4-t1)
print("hash", t2-t1)
print("sign", t3-t2)
print("ver bls sigs", t4-t3)
print("=========================")
from adkr.acss.core.polynomial_pairing import polynomials_over_BN as polynomials_over_BN_N
thsks = []
thpks = []
poly = polynomials_over_BN_N(ZRR)
secret = 1
phi = poly.random(1, secret)
g2 = G22.hash(b'1')
g1 = G11.hash(b'2')
for i in range(4):
thsks.append(phi(i + 1))
# print(type(thsks[i]))
thpks.append(g1 ** phi(i + 1))
thpk = g1 ** secret
from utils.core.bls_bn2 import sign as sign2, verify_share as vs2, hash_message as hash2
t1 = time.time()
digest1FromLeader = hash2(str("ECHO"))
t2 = time.time()
sig = sign2(thsks[id], digest1FromLeader)
t3 = time.time()
assert vs2(thpks[id], sig, digest1FromLeader)
t4 = time.time()
print("all", t4-t1)
print("hash", t2-t1)
print("sign", t3-t2)
print("ver", t4 - t3)