|
13 | 13 | import random |
14 | 14 | import unittest |
15 | 15 |
|
16 | | -from .util import modinv |
17 | | - |
18 | 16 | # Point with no known discrete log. |
19 | 17 | H_POINT = "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0" |
20 | 18 |
|
@@ -78,7 +76,7 @@ def affine(self, p1): |
78 | 76 | x1, y1, z1 = p1 |
79 | 77 | if z1 == 0: |
80 | 78 | return None |
81 | | - inv = modinv(z1, self.p) |
| 79 | + inv = pow(z1, -1, self.p) |
82 | 80 | inv_2 = (inv**2) % self.p |
83 | 81 | inv_3 = (inv_2 * inv) % self.p |
84 | 82 | return ((inv_2 * x1) % self.p, (inv_3 * y1) % self.p, 1) |
@@ -319,7 +317,7 @@ def verify_ecdsa(self, sig, msg, low_s=True): |
319 | 317 | z = int.from_bytes(msg, 'big') |
320 | 318 |
|
321 | 319 | # Run verifier algorithm on r, s |
322 | | - w = modinv(s, SECP256K1_ORDER) |
| 320 | + w = pow(s, -1, SECP256K1_ORDER) |
323 | 321 | u1 = z*w % SECP256K1_ORDER |
324 | 322 | u2 = r*w % SECP256K1_ORDER |
325 | 323 | R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, u1), (self.p, u2)])) |
@@ -397,7 +395,7 @@ def sign_ecdsa(self, msg, low_s=True, rfc6979=False): |
397 | 395 | k = random.randrange(1, SECP256K1_ORDER) |
398 | 396 | R = SECP256K1.affine(SECP256K1.mul([(SECP256K1_G, k)])) |
399 | 397 | r = R[0] % SECP256K1_ORDER |
400 | | - s = (modinv(k, SECP256K1_ORDER) * (z + self.secret * r)) % SECP256K1_ORDER |
| 398 | + s = (pow(k, -1, SECP256K1_ORDER) * (z + self.secret * r)) % SECP256K1_ORDER |
401 | 399 | if low_s and s > SECP256K1_ORDER_HALF: |
402 | 400 | s = SECP256K1_ORDER - s |
403 | 401 | # Represent in DER format. The byte representations of r and s have |
|
0 commit comments