From 4b80299fddd7ece40c90501dd6a2f6a0d6472079 Mon Sep 17 00:00:00 2001
From: david-sarah <david-sarah@jacaranda.org>
Date: Mon, 14 May 2012 03:23:52 +0000
Subject: [PATCH] Suppress the PowmInsecureWarning from PyCrypto. refs #1586

---
 src/allmydata/__init__.py   | 8 ++++----
 src/allmydata/_auto_deps.py | 4 ++++
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/allmydata/__init__.py b/src/allmydata/__init__.py
index c342ac5c..f7906e01 100644
--- a/src/allmydata/__init__.py
+++ b/src/allmydata/__init__.py
@@ -145,7 +145,7 @@ def normalized_version(verstr, what=None):
 def get_package_versions_and_locations():
     import warnings
     from _auto_deps import package_imports, deprecation_messages, \
-        user_warning_messages, warning_imports
+        user_warning_messages, runtime_warning_messages, warning_imports
 
     def package_dir(srcfile):
         return os.path.dirname(os.path.dirname(os.path.normcase(os.path.realpath(srcfile))))
@@ -169,6 +169,8 @@ def get_package_versions_and_locations():
         warnings.filterwarnings("ignore", category=DeprecationWarning, message=msg, append=True)
     for msg in user_warning_messages:
         warnings.filterwarnings("ignore", category=UserWarning, message=msg, append=True)
+    for msg in runtime_warning_messages:
+        warnings.filterwarnings("ignore", category=RuntimeWarning, message=msg, append=True)
     try:
         for modulename in warning_imports:
             try:
@@ -176,9 +178,7 @@ def get_package_versions_and_locations():
             except ImportError:
                 pass
     finally:
-        for ign in user_warning_messages:
-            warnings.filters.pop()
-        for ign in deprecation_messages:
+        for ign in runtime_warning_messages + user_warning_messages + deprecation_messages:
             warnings.filters.pop()
 
     packages = []
diff --git a/src/allmydata/_auto_deps.py b/src/allmydata/_auto_deps.py
index fc68c6c3..5bb2c0c2 100644
--- a/src/allmydata/_auto_deps.py
+++ b/src/allmydata/_auto_deps.py
@@ -115,6 +115,10 @@ user_warning_messages = [
     "Reliable disconnection notification requires pywin32 215 or later",
 ]
 
+runtime_warning_messages = [
+    "Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.",
+]
+
 warning_imports = [
     'nevow',
     'twisted.persisted.sob',
-- 
2.45.2