26 lines
716 B
Python
26 lines
716 B
Python
G = Point(
|
|
x=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,
|
|
y=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8,
|
|
curve=secp256k1)
|
|
|
|
N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
|
|
|
|
I = Point(x=None, y=None, curve=secp256k1)
|
|
|
|
assert N * G == I
|
|
|
|
pub = Point(
|
|
x=0x9577FF57C8234558F293DF502CA4F09CBC65A6572C842B39B366F21717945116,
|
|
y=0x10B49C67FA9365AD7B90DAB070BE339A1DAF9052373EC30FFAE4F72D5E66D053,
|
|
curve=secp256k1
|
|
)
|
|
d: int = 2 ** 240 + 2 ** 31
|
|
print(d * G)
|
|
print(pub)
|
|
|
|
e = PrivateKey(randint(0, N))
|
|
pub = e.secret * G
|
|
z = randint(0, 2 ** 256)
|
|
signature: Signature = e.sign(z)
|
|
assert signature.verify(z, pub)
|