예제 #1
0
 def testHashAndMapToG1(self):
     self.assertEqual(
         G1.hashAndMapToG1("test").getStr(),
         "1 1664126500441530256482751269291290703962889676827426721113973279626206305626152966034740921719739598015047469980014 2770511850529075397457134371943688177934498111089053025052575225110555843257818577745559532770169098874656481355098"
     )
예제 #2
0
            a_i.set_by_CSPRNG()
            a_list.append(a_i)
            r_i = g * a_i
            r_list.append(r_i)
            h_i = Fr.set_hash_of(f"{msg}{r_i.getStr()}")
            h_list.append(h_i)
    a = Fr()
    a.set_by_CSPRNG()
    r = (g * a) + reduce(
        operator.add,
        [pks[i] * h_list[i].neg() for i in range(len(pks)) if i != v_id])
    h = Fr.set_hash_of(f"{msg}{r.getStr()}")
    s = reduce(
        operator.add,
        [a_list[i] + a + (sk * h) for i in range(len(pks)) if i != v_id])
    r_list[v_id] = r * sk
    return (r_list, s)


if __name__ == "__main__":
    msg = "Master Thesis"
    g = G1.hashAndMapToG1("DVS")
    sk_p, pk_p, sk_v, pk_v = keygen(g)
    # print(sk_p, pk_p, sk_v, pk_v )
    sk_t, pk_t, sk_z, pk_z = keygen(g)
    # print(sk_t, pk_t, sk_z, pk_z)

    # R, s = sign(g, msg, [pk_p, pk_v], sk_p, 0, 1)
    R, s = sim(g, msg, [pk_p, pk_v], sk_v, 0, 1)
    verify(g, msg, [pk_p, pk_v], sk_v, 0, 1, R, s)