summaryrefslogtreecommitdiff
path: root/Lib/crypt.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/crypt.py')
-rw-r--r--Lib/crypt.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/Lib/crypt.py b/Lib/crypt.py
index 8846602d76..33dbc46bb3 100644
--- a/Lib/crypt.py
+++ b/Lib/crypt.py
@@ -10,6 +10,7 @@ except ModuleNotFoundError:
else:
raise ImportError("The required _crypt module was not built as part of CPython")
+import errno
import string as _string
from random import SystemRandom as _SystemRandom
from collections import namedtuple as _namedtuple
@@ -88,7 +89,14 @@ def _add_method(name, *args, rounds=None):
method = _Method(name, *args)
globals()['METHOD_' + name] = method
salt = mksalt(method, rounds=rounds)
- result = crypt('', salt)
+ result = None
+ try:
+ result = crypt('', salt)
+ except OSError as e:
+ # Not all libc libraries support all encryption methods.
+ if e.errno == errno.EINVAL:
+ return False
+ raise
if result and len(result) == method.total_size:
methods.append(method)
return True