https://github.com/python/cpython/commit/d209fd911eab6588932558b1e40c339f49c85f59
commit: d209fd911eab6588932558b1e40c339f49c85f59
branch: 3.13
author: Bénédikt Tran <[email protected]>
committer: picnixz <[email protected]>
date: 2025-12-14T09:36:26Z
summary:

[3.13] gh-142451: correctly copy HMAC attributes in `HMAC.copy()` (GH-142510) 
(#142701)

Partially cherry-picked from d3ef5ba34d3068b8178d6ff0f39462db6bbc4ad5
which ensures that the `block_size` attribute exists on the copy.

files:
A Misc/NEWS.d/next/Library/2025-12-14-10-00-23.gh-issue-142451._rkf2S.rst
M Lib/hmac.py
M Lib/test/test_hmac.py

diff --git a/Lib/hmac.py b/Lib/hmac.py
index 8b4eb2fe741e60..a49f2aeb1d6195 100644
--- a/Lib/hmac.py
+++ b/Lib/hmac.py
@@ -127,6 +127,7 @@ def copy(self):
         # Call __new__ directly to avoid the expensive __init__.
         other = self.__class__.__new__(self.__class__)
         other.digest_size = self.digest_size
+        other.block_size = self.block_size
         if self._hmac:
             other._hmac = self._hmac.copy()
             other._inner = other._outer = None
diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py
index 1502fba9f3e8b8..9161ac71607538 100644
--- a/Lib/test/test_hmac.py
+++ b/Lib/test/test_hmac.py
@@ -489,6 +489,16 @@ def test_with_str_update(self):
 
 class CopyTestCase(unittest.TestCase):
 
+    @hashlib_helper.requires_hashdigest('sha256')
+    def test_copy(self):
+        # Test a generic copy() and the attributes it exposes.
+        # See https://github.com/python/cpython/issues/142451.
+        h1 = hmac.new(b"my secret key", digestmod="sha256")
+        h2 = h1.copy()
+        self.assertEqual(h1.name, h2.name)
+        self.assertEqual(h1.digest_size, h2.digest_size)
+        self.assertEqual(h1.block_size, h2.block_size)
+
     @hashlib_helper.requires_hashdigest('sha256')
     def test_attributes_old(self):
         # Testing if attributes are of same type.
diff --git 
a/Misc/NEWS.d/next/Library/2025-12-14-10-00-23.gh-issue-142451._rkf2S.rst 
b/Misc/NEWS.d/next/Library/2025-12-14-10-00-23.gh-issue-142451._rkf2S.rst
new file mode 100644
index 00000000000000..cceb572f503eda
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-12-14-10-00-23.gh-issue-142451._rkf2S.rst
@@ -0,0 +1,3 @@
+:mod:`hmac`: Ensure that the :attr:`HMAC.block_size <hmac.HMAC.block_size>`
+attribute is correctly copied by :meth:`HMAC.copy <hmac.HMAC.copy>`. Patch
+by Bénédikt Tran.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to