I found a vulnerability in EllipticCurvePoint.SignECDSA. You use random.randint to generate k. random.randint is not a cryptographically secure random number generator.
From Wikipedia:
3. Select a cryptographically secure random integer k from [1, n-1].
Using a weak PRNG for k can result in the compromise of the private key d. For example: "Such failure of RNG caused users of Android Bitcoin Wallet to lose their funds in August 2013."
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm