From da752536ab390f4561d7e8949044a10fd6fbf155 Mon Sep 17 00:00:00 2001 From: Lennart Jongeneel Date: Sun, 19 Nov 2023 20:19:02 +0100 Subject: [PATCH] [ADD] Inverse method, allow to inverse public keys --- bitcoinlib/keys.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bitcoinlib/keys.py b/bitcoinlib/keys.py index 2eb24c78..cc17b70a 100644 --- a/bitcoinlib/keys.py +++ b/bitcoinlib/keys.py @@ -978,8 +978,7 @@ def __rmul__(self, other): return self * other def __neg__(self): - assert self.secret - return HDKey(secp256k1_n - self.secret) + return self.inverse() def __len__(self): return len(self.public_byte) @@ -1004,6 +1003,13 @@ def __int__(self): else: return None + def inverse(self): + if self.is_private: + return HDKey(secp256k1_n - self.secret) + else: + # Inverse y in init: self._y = secp256k1_p - self._y + return Key(('02' if self._y % 2 else '03') + self.x_hex) + @property def x(self): if not self._x and self.x_hex: