def mix_ttp_th_keygen(params, t, n, q):
""" generate keys for threshold signature """
(G, o, g1, hs, g2, e) = params
# generate polynomials
v = np.poly1d([o.random() for _ in range(0,t)])
w = [np.poly1d([o.random() for _ in range(0,t)]) for __ in range(q)]
# generate shares
x = [v(i) % o for i in range(1,n+1)]
y = [[w[j](i) % o for j in range(len(w))] for i in range(1,n+1)]
# set keys
sk = list(zip(x, y))
vk = [(g2, x[i]*g2, [y[i][j]*g2 for j in range(len(y[i]))]) for i in range(len(sk))]
vvk = (g2, v(0)*g2, [wi(0)*g2 for wi in w])
return (sk, vk, vvk)
评论列表
文章目录