summaryrefslogtreecommitdiff
path: root/bip-0340/reference.py
diff options
context:
space:
mode:
authorPieter Wuille <pieter@wuille.net>2020-09-02 14:20:42 -0700
committerPieter Wuille <pieter@wuille.net>2020-09-03 14:38:22 -0700
commit3b1fb9600b938172dd98a63e4906a861af9c3ab0 (patch)
treee9bbf70fe3c22394512934eb294a96f80e286845 /bip-0340/reference.py
parentd8531483f53adb39bf2265ea2148a8b05334d747 (diff)
downloadbips-3b1fb9600b938172dd98a63e4906a861af9c3ab0.tar.xz
Clarify that R=infinity is invalid in BIP340
Also rename is_infinity to is_infinite is reference implementation, to match the wording in BIP340.
Diffstat (limited to 'bip-0340/reference.py')
-rw-r--r--bip-0340/reference.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/bip-0340/reference.py b/bip-0340/reference.py
index 5d17db5..5b38c0a 100644
--- a/bip-0340/reference.py
+++ b/bip-0340/reference.py
@@ -26,13 +26,15 @@ def tagged_hash(tag: str, msg: bytes) -> bytes:
tag_hash = hashlib.sha256(tag.encode()).digest()
return hashlib.sha256(tag_hash + tag_hash + msg).digest()
-def is_infinity(P: Optional[Point]) -> bool:
+def is_infinite(P: Optional[Point]) -> bool:
return P is None
def x(P: Point) -> int:
+ assert not is_infinite(P)
return P[0]
def y(P: Point) -> int:
+ assert not is_infinite(P)
return P[1]
def point_add(P1: Optional[Point], P2: Optional[Point]) -> Optional[Point]:
@@ -83,6 +85,7 @@ def hash_sha256(b: bytes) -> bytes:
return hashlib.sha256(b).digest()
def has_even_y(P: Point) -> bool:
+ assert not is_infinite(P)
return y(P) % 2 == 0
def pubkey_gen(seckey: bytes) -> bytes: