51b7ec
From 56caa0af4f21d696df50be5fc15b74c74239d130 Mon Sep 17 00:00:00 2001
51b7ec
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
51b7ec
Date: Mon, 28 Feb 2022 11:23:55 +0100
51b7ec
Subject: [PATCH] Use usedforsecurity=False for md5() calls to make suds work
51b7ec
 on FIPS enabled systems
51b7ec
51b7ec
---
51b7ec
 suds/reader.py | 7 ++++++-
51b7ec
 suds/wsse.py   | 7 ++++++-
51b7ec
 2 files changed, 12 insertions(+), 2 deletions(-)
51b7ec
51b7ec
diff --git a/suds/reader.py b/suds/reader.py
51b7ec
index 31c5ee7..d31b147 100644
51b7ec
--- a/suds/reader.py
51b7ec
+++ b/suds/reader.py
51b7ec
@@ -58,7 +58,12 @@ def mangle(self, name, x):
51b7ec
         @rtype: str
51b7ec
 
51b7ec
         """
51b7ec
-        h = md5(name.encode()).hexdigest()
51b7ec
+        try:
51b7ec
+            h = md5(name.encode()).hexdigest()
51b7ec
+        except ValueError:
51b7ec
+            # FIPS requires usedforsecurity=False and might not be
51b7ec
+            # available on all distros: https://bugs.python.org/issue9216
51b7ec
+            h = md5(name.encode(), usedforsecurity=False).hexdigest()
51b7ec
         return '%s-%s' % (h, x)
51b7ec
 
51b7ec
 
51b7ec
diff --git a/suds/wsse.py b/suds/wsse.py
51b7ec
index 96d9eb6..a871657 100644
51b7ec
--- a/suds/wsse.py
51b7ec
+++ b/suds/wsse.py
51b7ec
@@ -158,7 +158,12 @@ def setnonce(self, text=None):
51b7ec
             s.append(self.username)
51b7ec
             s.append(self.password)
51b7ec
             s.append(Token.sysdate())
51b7ec
-            m = md5()
51b7ec
+            try:
51b7ec
+                m = md5()
51b7ec
+            except ValueError:
51b7ec
+                # FIPS requires usedforsecurity=False and might not be
51b7ec
+                # available on all distros: https://bugs.python.org/issue9216
51b7ec
+                m = md5(usedforsecurity=False)
51b7ec
             m.update(':'.join(s))
51b7ec
             self.nonce = m.hexdigest()
51b7ec
         else: