summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sphinx/ext/graphviz.py3
-rw-r--r--sphinx/ext/imgmath.py3
-rw-r--r--sphinx/transforms/post_transforms/images.py3
-rw-r--r--sphinx/util/__init__.py14
4 files changed, 17 insertions, 6 deletions
diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py
index 27b64fbce..c21868a6f 100644
--- a/sphinx/ext/graphviz.py
+++ b/sphinx/ext/graphviz.py
@@ -12,7 +12,6 @@
import posixpath
import re
import subprocess
-from hashlib import sha1
from os import path
from subprocess import CalledProcessError, PIPE
from typing import Any, Dict, List, Tuple
@@ -25,7 +24,7 @@ import sphinx
from sphinx.application import Sphinx
from sphinx.errors import SphinxError
from sphinx.locale import _, __
-from sphinx.util import logging
+from sphinx.util import logging, sha1
from sphinx.util.docutils import SphinxDirective, SphinxTranslator
from sphinx.util.fileutil import copy_asset
from sphinx.util.i18n import search_image_for_language
diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py
index 4297ad182..2050e470e 100644
--- a/sphinx/ext/imgmath.py
+++ b/sphinx/ext/imgmath.py
@@ -14,7 +14,6 @@ import shutil
import subprocess
import sys
import tempfile
-from hashlib import sha1
from os import path
from subprocess import CalledProcessError, PIPE
from typing import Any, Dict, List, Tuple
@@ -30,7 +29,7 @@ from sphinx.config import Config
from sphinx.deprecation import RemovedInSphinx40Warning, deprecated_alias
from sphinx.errors import SphinxError
from sphinx.locale import _, __
-from sphinx.util import logging
+from sphinx.util import logging, sha1
from sphinx.util.math import get_node_equation_number, wrap_displaymath
from sphinx.util.osutil import ensuredir
from sphinx.util.png import read_png_depth, write_png_depth
diff --git a/sphinx/transforms/post_transforms/images.py b/sphinx/transforms/post_transforms/images.py
index d1b513b27..57b36b4b0 100644
--- a/sphinx/transforms/post_transforms/images.py
+++ b/sphinx/transforms/post_transforms/images.py
@@ -10,7 +10,6 @@
import os
import re
-from hashlib import sha1
from math import ceil
from typing import Any, Dict, List, Tuple
@@ -19,7 +18,7 @@ from docutils import nodes
from sphinx.application import Sphinx
from sphinx.locale import __
from sphinx.transforms import SphinxTransform
-from sphinx.util import epoch_to_rfc1123, rfc1123_to_epoch
+from sphinx.util import epoch_to_rfc1123, rfc1123_to_epoch, sha1
from sphinx.util import logging, requests
from sphinx.util.images import guess_mimetype, get_image_extension, parse_data_uri
from sphinx.util.osutil import ensuredir, movefile
diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py
index eeee1248e..2a08821e1 100644
--- a/sphinx/util/__init__.py
+++ b/sphinx/util/__init__.py
@@ -186,6 +186,20 @@ def md5(data=b'', **kwargs):
return hashlib.md5(data, **kwargs, usedforsecurity=False) # type: ignore
+def sha1(data=b'', **kwargs):
+ """Wrapper around hashlib.sha1
+
+ Attempt call with 'usedforsecurity=False' if we get a ValueError
+
+ See: https://github.com/sphinx-doc/sphinx/issues/7611
+ """
+
+ try:
+ return hashlib.sha1(data, **kwargs) # type: ignore
+ except ValueError:
+ return hashlib.sha1(data, **kwargs, usedforsecurity=False) # type: ignore
+
+
class DownloadFiles(dict):
"""A special dictionary for download files.