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 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))
Esempio n. 4
0
def scalarmult_base(k_hex):
    a = ed25519.decodeint(binascii.unhexlify(k_hex))
    A = ed25519.scalarmult(ed25519.B, a)
    return binascii.hexlify(ed25519.encodepoint(A))