summaryrefslogtreecommitdiffstats
path: root/Doc/library/hmac.rst
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-05-11 23:11:44 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-05-11 23:11:44 (GMT)
commit629026aecc6bbb7cf8df25f7699eaf97d8e45701 (patch)
tree9e3f3097933a1d4ab83265f34271ad8cbacc29ad /Doc/library/hmac.rst
parente9314e4a3c7bf9bc297922bbc130ec3dc004654c (diff)
downloadcpython-629026aecc6bbb7cf8df25f7699eaf97d8e45701.zip
cpython-629026aecc6bbb7cf8df25f7699eaf97d8e45701.tar.gz
cpython-629026aecc6bbb7cf8df25f7699eaf97d8e45701.tar.bz2
backport hmac.compare_digest to partially implement PEP 466 (closes #21306)
Backport from Alex Gaynor.
Diffstat (limited to 'Doc/library/hmac.rst')
-rw-r--r--Doc/library/hmac.rst33
1 files changed, 33 insertions, 0 deletions
diff --git a/Doc/library/hmac.rst b/Doc/library/hmac.rst
index f88a03e..09e819a 100644
--- a/Doc/library/hmac.rst
+++ b/Doc/library/hmac.rst
@@ -38,6 +38,13 @@ An HMAC object has the following methods:
This string will be the same length as the *digest_size* of the digest given to
the constructor. It may contain non-ASCII characters, including NUL bytes.
+ .. warning::
+
+ When comparing the output of :meth:`digest` to an externally-supplied
+ digest during a verification routine, it is recommended to use the
+ :func:`compare_digest` function instead of the ``==`` operator
+ to reduce the vulnerability to timing attacks.
+
.. method:: HMAC.hexdigest()
@@ -45,6 +52,13 @@ An HMAC object has the following methods:
containing only hexadecimal digits. This may be used to exchange the value
safely in email or other non-binary environments.
+ .. warning::
+
+ When comparing the output of :meth:`hexdigest` to an externally-supplied
+ digest during a verification routine, it is recommended to use the
+ :func:`compare_digest` function instead of the ``==`` operator
+ to reduce the vulnerability to timing attacks.
+
.. method:: HMAC.copy()
@@ -52,6 +66,25 @@ An HMAC object has the following methods:
compute the digests of strings that share a common initial substring.
+This module also provides the following helper function:
+
+.. function:: compare_digest(a, b)
+
+ Return ``a == b``. This function uses an approach designed to prevent
+ timing analysis by avoiding content-based short circuiting behaviour,
+ making it appropriate for cryptography. *a* and *b* must both be of the
+ same type: either :class:`unicode` or a :term:`bytes-like object`.
+
+ .. note::
+
+ If *a* and *b* are of different lengths, or if an error occurs,
+ a timing attack could theoretically reveal information about the
+ types and lengths of *a* and *b*--but not their values.
+
+
+ .. versionadded:: 2.7.7
+
+
.. seealso::
Module :mod:`hashlib`