From 936c5a8a062fddc6369b1fc639c56c904581abeb Mon Sep 17 00:00:00 2001 From: JimBoCA Date: Thu, 6 Aug 2026 18:40:15 -0700 Subject: [PATCH] Fix TPAP EC point coords when ecdsa uses gmpy2.mpz cryptography EllipticCurvePublicNumbers requires builtin int; on FreeBSD with gmpy2 installed, ecdsa Point.x()/y() return mpz. Co-authored-by: Cursor --- kasa/transports/tpaptransport.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kasa/transports/tpaptransport.py b/kasa/transports/tpaptransport.py index 3a6471417..aa59a5aa3 100644 --- a/kasa/transports/tpaptransport.py +++ b/kasa/transports/tpaptransport.py @@ -394,7 +394,8 @@ def _sec1_to_xy(sec1: bytes, curve: ec.EllipticCurve) -> tuple[int, int]: @staticmethod def _xy_to_uncompressed(x: int, y: int, curve: ec.EllipticCurve) -> bytes: - numbers = ec.EllipticCurvePublicNumbers(x, y, curve) + # ecdsa may return gmpy2.mpz; cryptography requires builtin int. + numbers = ec.EllipticCurvePublicNumbers(int(x), int(y), curve) public_key = numbers.public_key() return public_key.public_bytes( encoding=serialization.Encoding.X962,