Example #1
0
# Base point (x, y)
gx = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296
gy = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5

# Create a finite field of order p256
FF = GF(p256)

Fq = Integers(qq)
# Define a curve over that field with specified Weierstrass a and b parameters
EC = EllipticCurve(FF, [a256, b256])
EC.set_order(qq)

g = EC(FF(gx), FF(gy))

r = Fq.random_element()
x_u = Fq.random_element()

X_u = x_u.lift() * g


def pad(point):
    """
    Cette méthode va prendre les coordonnées d'un point,
    les mettre en binaire et ajouter des 0 pour avoir une taille de 256
    :param point:
    :return:
    """
    x = bin(point[0])[2:]
    y = bin(point[1])[2:]