From d3644aa3547f2a02cbd1aa8f951b77bdff0bc8bc Mon Sep 17 00:00:00 2001
From: Lee Miller <lee.miller@tutanota.com>
Date: Sun, 7 Jan 2024 03:20:51 +0200
Subject: [PATCH] Add a test for short pubkey coordinates

---
 src/pyelliptic/tests/test_ecc.py | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/pyelliptic/tests/test_ecc.py b/src/pyelliptic/tests/test_ecc.py
index 6327d333..e6c20923 100644
--- a/src/pyelliptic/tests/test_ecc.py
+++ b/src/pyelliptic/tests/test_ecc.py
@@ -1,5 +1,6 @@
 """Tests for ECC object"""
 
+import os
 import unittest
 from hashlib import sha512
 
@@ -30,6 +31,22 @@ class TestECC(unittest.TestCase):
         pubkey = eccobj.get_pubkey()
         self.assertEqual(pubkey[:4], b'\x02\xca\x00\x20')
 
+    def test_short_keys(self):
+        """Check formatting of the keys with leading zeroes"""
+        def sample_key(_):
+            return os.urandom(32), os.urandom(31), os.urandom(30)
+
+        try:
+            gen_orig = pyelliptic.ECC._generate
+            pyelliptic.ECC._generate = sample_key
+            eccobj = pyelliptic.ECC(curve='secp256k1')
+            pubkey = eccobj.get_pubkey()
+            self.assertEqual(pubkey[:4], b'\x02\xca\x00\x20')
+            self.assertEqual(pubkey[36:38], b'\x00\x20')
+            self.assertEqual(len(pubkey[38:]), 32)
+        finally:
+            pyelliptic.ECC._generate = gen_orig
+
     def test_decode_keys(self):
         """Check keys decoding"""
         # pylint: disable=protected-access