Esempio n. 1
0
def pt_add_hex(pt0_hex, pt1_hex):
    pt0 = ed25519.pt_xform(ed25519.decodepoint(binascii.unhexlify(pt0_hex)))
    pt1 = ed25519.pt_xform(ed25519.decodepoint(binascii.unhexlify(pt1_hex)))

    sum_pt = ed25519.pt_unxform(ed25519.xpt_add(pt0, pt1))
    sum_hex = binascii.hexlify(ed25519.encodepoint(sum_pt))

    return sum_hex
Esempio n. 2
0
def schnorr_verify(M, PK_hex, e_hex, s_hex):
    sG_hex = scalarmult_base(s_hex)
    eP_hex = scalarmult(PK_hex, e_hex)

    sG = ed25519.pt_xform(ed25519.decodepoint(binascii.unhexlify(sG_hex)))
    eP = ed25519.pt_xform(ed25519.decodepoint(binascii.unhexlify(eP_hex)))

    Q_pt = ed25519.pt_unxform(ed25519.xpt_add(sG, eP))
    Q_hex = binascii.hexlify(ed25519.encodepoint(Q_pt))
    ee_hex = H(M.encode() + Q_hex)

    return e_hex == ee_hex
Esempio n. 3
0
def test_curve1():
    sk = b'd17f7ee37fc904cd04692a0db2a8aa003008de6865d7b0ed7c1515b9892cca03'
    PK = scalarmult_base(sk)
    # sk, PK = gen_keypair()
    alpha_hex = rand()
    print(sk)
    print(PK)
    print(alpha_hex)

    print('------ ------ ------')

    alpha_int_1 = ed25519.decodeint(binascii.unhexlify(alpha_hex))
    # alpha_int_2 = ed25519.decodeint(alpha_hex)
    # alpha_int_3 = int.from_hexs(alpha_hex,byteorder='big')
    # print('{',alpha_int_1)
    # print('{',alpha_int_2)
    # print('{',alpha_int_3)
    # print(':',binascii.hexlify(ed25519.encodeint(alpha_int_1)))

    sk_int_1 = ed25519.decodeint(binascii.unhexlify(sk))

    alphaPK_hex = scalarmult(PK, alpha_hex)
    print('1: ', alphaPK_hex)

    PK_pt = ed25519.decodepoint(binascii.unhexlify(PK))
    alphaPK_pt = ed25519.decodepoint(binascii.unhexlify(alphaPK_hex))

    print(ed25519.isoncurve(PK_pt))
    print(ed25519.isoncurve(alphaPK_pt))

    print('------ ------ ------')

    # (alpha * sk) mod l
    sk_x_alpha_int = (alpha_int_1 * sk_int_1) % ed25519.l

    print(sk_x_alpha_int)
    sk_x_alpha_hex = binascii.hexlify(ed25519.encodeint(sk_x_alpha_int))
    print(sk_x_alpha_hex)
    print(ed25519.decodeint(binascii.unhexlify(sk_x_alpha_hex)))

    sk_x_alpha_x_G_hex = scalarmult_base(sk_x_alpha_hex)
    print('2: ', sk_x_alpha_x_G_hex)

    sk_x_alpha_x_G_pt = ed25519.decodepoint(
        binascii.unhexlify(sk_x_alpha_x_G_hex))
    print(ed25519.isoncurve(sk_x_alpha_x_G_pt))

    print('------ ------ ------')
    print(alphaPK_pt == sk_x_alpha_x_G_pt)
Esempio n. 4
0
def scalarmult(P_hex, k_hex):
    a = ed25519.decodeint(binascii.unhexlify(k_hex))
    P = ed25519.decodepoint(binascii.unhexlify(P_hex))
    A = ed25519.scalarmult(P, a)
    return binascii.hexlify(ed25519.encodepoint(A))