aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2019-01-17 09:41:25 -0600
committerAlex Gaynor <alex.gaynor@gmail.com>2019-01-17 10:41:25 -0500
commit8d9ea52be9e7de1373641d3afaed9b292cb03f43 (patch)
tree4ac1aba34cc455f4e0b20b8b3a010ef81221a6c8
parentb480d2d4dbc6339f476d49faa0900eae2f4c1d07 (diff)
downloadplatform_external_python_cryptography-8d9ea52be9e7de1373641d3afaed9b292cb03f43.tar.gz
platform_external_python_cryptography-8d9ea52be9e7de1373641d3afaed9b292cb03f43.tar.bz2
platform_external_python_cryptography-8d9ea52be9e7de1373641d3afaed9b292cb03f43.zip
support byteslike in hmac update (#4705)
needed for some KDF keying material
-rw-r--r--docs/hazmat/primitives/mac/hmac.rst3
-rw-r--r--src/cryptography/hazmat/backends/openssl/hmac.py3
-rw-r--r--src/cryptography/hazmat/primitives/hmac.py2
-rw-r--r--tests/hazmat/primitives/test_hmac.py2
4 files changed, 6 insertions, 4 deletions
diff --git a/docs/hazmat/primitives/mac/hmac.rst b/docs/hazmat/primitives/mac/hmac.rst
index 4c2f21c8..9d11694b 100644
--- a/docs/hazmat/primitives/mac/hmac.rst
+++ b/docs/hazmat/primitives/mac/hmac.rst
@@ -70,7 +70,8 @@ of a message.
.. method:: update(msg)
- :param bytes msg: The bytes to hash and authenticate.
+ :param msg: The bytes to hash and authenticate.
+ :type msg: :term:`bytes-like`
:raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`
:raises TypeError: This exception is raised if ``msg`` is not ``bytes``.
diff --git a/src/cryptography/hazmat/backends/openssl/hmac.py b/src/cryptography/hazmat/backends/openssl/hmac.py
index b606e111..b23ac649 100644
--- a/src/cryptography/hazmat/backends/openssl/hmac.py
+++ b/src/cryptography/hazmat/backends/openssl/hmac.py
@@ -56,7 +56,8 @@ class _HMACContext(object):
)
def update(self, data):
- res = self._backend._lib.HMAC_Update(self._ctx, data, len(data))
+ data_ptr = self._backend._ffi.from_buffer(data)
+ res = self._backend._lib.HMAC_Update(self._ctx, data_ptr, len(data))
self._backend.openssl_assert(res != 0)
def finalize(self):
diff --git a/src/cryptography/hazmat/primitives/hmac.py b/src/cryptography/hazmat/primitives/hmac.py
index 590555d9..f7f401d2 100644
--- a/src/cryptography/hazmat/primitives/hmac.py
+++ b/src/cryptography/hazmat/primitives/hmac.py
@@ -38,7 +38,7 @@ class HMAC(object):
def update(self, data):
if self._ctx is None:
raise AlreadyFinalized("Context was already finalized.")
- utils._check_bytes("data", data)
+ utils._check_byteslike("data", data)
self._ctx.update(data)
def copy(self):
diff --git a/tests/hazmat/primitives/test_hmac.py b/tests/hazmat/primitives/test_hmac.py
index b6d18ff1..0e2fe688 100644
--- a/tests/hazmat/primitives/test_hmac.py
+++ b/tests/hazmat/primitives/test_hmac.py
@@ -84,7 +84,7 @@ class TestHMAC(object):
def test_buffer_protocol(self, backend):
key = bytearray(b"2b7e151628aed2a6abf7158809cf4f3c")
h = hmac.HMAC(key, hashes.SHA256(), backend)
- h.update(b"6bc1bee22e409f96e93d7e117393172a")
+ h.update(bytearray(b"6bc1bee22e409f96e93d7e117393172a"))
assert h.finalize() == binascii.unhexlify(
b"a1bf7169c56a501c6585190ff4f07cad6e492a3ee187c0372614fb444b9fc3f0"
)