Esempio n. 1
0
def step_4_batched(n, gk, g1_d, g1_a, g1_hat_a, crs_sm):
    y2 = [gk.q.random() for x in range(n - 1)] + [1]
    inf1, _ = prover.get_infs(gk)

    g2_beta = crs_sm.g2_beta
    g2_beta_hat = crs_sm.g2_betahat

    left = gk.e(mexp(y2, g1_d, inf1), gk.g2)
    right = (gk.e(mexp(y2, g1_a, inf1), g2_beta) *
             gk.e(mexp(y2, g1_hat_a, inf1), g2_beta_hat))
    return left == right
Esempio n. 2
0
def step_5_batched(gk, pk, g1_t, crs_con, g1_a_hat, N, M, MP):
    infT = get_infT(gk)
    _, inf2 = prover.get_infs(gk)
    g1_hat_rho = crs_con.g1rhohat
    g1_poly_hats = crs_con.g1_poly_hats
    y3 = [gk.q.random(), 1]

    q = gk.e(g1_t, mexp(y3, pk, inf2))
    right = q * gk.e(g1_hat_rho, mexp(y3, N, inf2)).inv()

    left = infT
    for ph, mp, a, m in zip(g1_poly_hats, MP, g1_a_hat, M):
        left *= gk.e(ph, mexp(y3, mp, inf2)) * gk.e(a, mexp(y3, m, inf2)).inv()
    return left == right
Esempio n. 3
0
def step_3_batched(n, gk, g1_a, g2_b, g1_c, crs_1sp, g2_rho):
    y1 = [gk.q.random() for x in range(n - 1)] + [1]
    infT = get_infT(gk)
    inf1, _ = prover.get_infs(gk)

    g1_alpha_poly_zero = crs_1sp.g1_alpha_poly_zero
    g2alpha = crs_1sp.g2alpha
    pair_alpha = crs_1sp.pair_alpha

    right = (gk.e(mexp(y1, g1_c, inf1), g2_rho) *
             (pair_alpha**(sum(y1) % gk.q)))
    left = infT
    for yi, a, b in zip(y1, g1_a, g2_b):
        left *= gk.e(yi * (a + g1_alpha_poly_zero), b + g2alpha)
    return left == right