|
13 | 13 | import sys
|
14 | 14 | import unittest
|
15 | 15 |
|
16 |
| -from .util import modinv |
17 |
| - |
18 | 16 | def TaggedHash(tag, data):
|
19 | 17 | ss = hashlib.sha256(tag.encode('utf-8')).digest()
|
20 | 18 | ss += ss
|
@@ -77,7 +75,7 @@ def affine(self, p1):
|
77 | 75 | x1, y1, z1 = p1
|
78 | 76 | if z1 == 0:
|
79 | 77 | return None
|
80 |
| - inv = modinv(z1, self.p) |
| 78 | + inv = pow(z1, -1, self.p) |
81 | 79 | inv_2 = (inv**2) % self.p
|
82 | 80 | inv_3 = (inv_2 * inv) % self.p
|
83 | 81 | return ((inv_2 * x1) % self.p, (inv_3 * y1) % self.p, 1)
|
@@ -318,7 +316,7 @@ def verify_ecdsa(self, sig, msg, low_s=True):
|
318 | 316 | z = int.from_bytes(msg, 'big')
|
319 | 317 |
|
320 | 318 | # Run verifier algorithm on r, s
|
321 |
| - w = modinv(s, SECP256K1_ORDER) |
| 319 | + w = pow(s, -1, SECP256K1_ORDER) |
322 | 320 | u1 = z*w % SECP256K1_ORDER
|
323 | 321 | u2 = r*w % SECP256K1_ORDER
|
324 | 322 | R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, u1), (self.p, u2)]))
|
@@ -383,7 +381,7 @@ def sign_ecdsa(self, msg, low_s=True):
|
383 | 381 | k = random.randrange(1, SECP256K1_ORDER)
|
384 | 382 | R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, k)]))
|
385 | 383 | r = R[0] % SECP256K1_ORDER
|
386 |
| - s = (modinv(k, SECP256K1_ORDER) * (z + self.secret * r)) % SECP256K1_ORDER |
| 384 | + s = (pow(k, -1, SECP256K1_ORDER) * (z + self.secret * r)) % SECP256K1_ORDER |
387 | 385 | if low_s and s > SECP256K1_ORDER_HALF:
|
388 | 386 | s = SECP256K1_ORDER - s
|
389 | 387 | # Represent in DER format. The byte representations of r and s have
|
|
0 commit comments