annotate Lib/hashlib.py @ 80661:94de77bd0b4b 2.7

Issue #16194: document imp.load_dynamic problems when read several extension modules from the same binary object file.
author Andrew Svetlov <andrew.svetlov@gmail.com>
date Thu, 29 Nov 2012 19:51:28 +0200
parents 21691763ab3b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
1 # $Id$
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
2 #
43298
a11b4885b445 email address update
Gregory P. Smith <greg@mad-scientist.com>
parents: 40254
diff changeset
3 # Copyright (C) 2005 Gregory P. Smith (greg@krypto.org)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
4 # Licensed to PSF under a Contributor Agreement.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
5 #
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
6
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
7 __doc__ = """hashlib module - A common interface to many hash functions.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
8
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
9 new(name, string='') - returns a new hash object implementing the
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
10 given hash function; initializing the hash
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
11 using the given string data.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
12
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
13 Named constructor functions are also available, these are much faster
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
14 than using new():
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
15
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
16 md5(), sha1(), sha224(), sha256(), sha384(), and sha512()
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
17
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
18 More algorithms may be available on your platform but the above are
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
19 guaranteed to exist.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
20
45895
19d4b697fbf9 Mention that crc32 and adler32 are available in a different module (zlib).
Gregory P. Smith <greg@mad-scientist.com>
parents: 43298
diff changeset
21 NOTE: If you want the adler32 or crc32 hash functions they are available in
19d4b697fbf9 Mention that crc32 and adler32 are available in a different module (zlib).
Gregory P. Smith <greg@mad-scientist.com>
parents: 43298
diff changeset
22 the zlib module.
19d4b697fbf9 Mention that crc32 and adler32 are available in a different module (zlib).
Gregory P. Smith <greg@mad-scientist.com>
parents: 43298
diff changeset
23
40254
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
24 Choose your hash function wisely. Some have known collision weaknesses.
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
25 sha384 and sha512 will be slow on 32 bit platforms.
40254
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
26
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
27 Hash objects have these methods:
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
28 - update(arg): Update the hash object with the string arg. Repeated calls
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
29 are equivalent to a single call with the concatenation of all
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
30 the arguments.
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
31 - digest(): Return the digest of the strings passed to the update() method
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
32 so far. This may contain non-ASCII characters, including
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
33 NUL bytes.
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
34 - hexdigest(): Like digest() except the digest is returned as a string of
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
35 double length, containing only hexadecimal digits.
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
36 - copy(): Return a copy (clone) of the hash object. This can be used to
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
37 efficiently compute the digests of strings that share a common
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
38 initial substring.
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
39
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
40 For example, to obtain the digest of the string 'Nobody inspects the
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
41 spammish repetition':
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
42
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
43 >>> import hashlib
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
44 >>> m = hashlib.md5()
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
45 >>> m.update("Nobody inspects")
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
46 >>> m.update(" the spammish repetition")
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
47 >>> m.digest()
48917
b4c14b70fe0f backport r66093 from trunk.
Gregory P. Smith <greg@mad-scientist.com>
parents: 40254
diff changeset
48 '\\xbbd\\x9c\\x83\\xdd\\x1e\\xa5\\xc9\\xd9\\xde\\xc9\\xa1\\x8d\\xf0\\xff\\xe9'
40254
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
49
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
50 More condensed:
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
51
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
52 >>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest()
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
53 'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'
da79c4e9a5bb Bug #1586773: extend hashlib docstring.
Georg Brandl <georg@python.org>
parents: 35465
diff changeset
54
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
55 """
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
56
55666
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
57 # This tuple and __get_builtin_constructor() must be modified if a new
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
58 # always available algorithm is added.
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
59 __always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
60
59211
e1b70c6df9e7 Adds the hashlib.algorithms attribute. See issue7418.
Gregory P. Smith <greg@mad-scientist.com>
parents: 55666
diff changeset
61 algorithms = __always_supported
e1b70c6df9e7 Adds the hashlib.algorithms attribute. See issue7418.
Gregory P. Smith <greg@mad-scientist.com>
parents: 55666
diff changeset
62
e1b70c6df9e7 Adds the hashlib.algorithms attribute. See issue7418.
Gregory P. Smith <greg@mad-scientist.com>
parents: 55666
diff changeset
63 __all__ = __always_supported + ('new', 'algorithms')
55666
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
64
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
65
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
66 def __get_builtin_constructor(name):
70121
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
67 try:
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
68 if name in ('SHA1', 'sha1'):
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
69 import _sha
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
70 return _sha.new
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
71 elif name in ('MD5', 'md5'):
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
72 import _md5
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
73 return _md5.new
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
74 elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
75 import _sha256
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
76 bs = name[3:]
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
77 if bs == '256':
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
78 return _sha256.sha256
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
79 elif bs == '224':
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
80 return _sha256.sha224
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
81 elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
82 import _sha512
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
83 bs = name[3:]
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
84 if bs == '512':
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
85 return _sha512.sha512
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
86 elif bs == '384':
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
87 return _sha512.sha384
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
88 except ImportError:
572fbd9ca28f Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68256
diff changeset
89 pass # no extension module, this hash is unsupported.
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
90
78237
21691763ab3b Consistently raise a TypeError when a non str is passed to hashlib.new
Gregory P. Smith <greg@krypto.org>
parents: 70121
diff changeset
91 raise ValueError('unsupported hash type ' + name)
55666
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
92
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
93
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
94 def __get_openssl_constructor(name):
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
95 try:
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
96 f = getattr(_hashlib, 'openssl_' + name)
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
97 # Allow the C module to raise ValueError. The function will be
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
98 # defined but the hash not actually available thanks to OpenSSL.
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
99 f()
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
100 # Use the C function directly (very fast)
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
101 return f
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
102 except (AttributeError, ValueError):
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
103 return __get_builtin_constructor(name)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
104
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
105
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
106 def __py_new(name, string=''):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
107 """new(name, string='') - Return a new hashing object using the named algorithm;
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
108 optionally initialized with a string.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
109 """
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
110 return __get_builtin_constructor(name)(string)
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
111
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
112
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
113 def __hash_new(name, string=''):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
114 """new(name, string='') - Return a new hashing object using the named algorithm;
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
115 optionally initialized with a string.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
116 """
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
117 try:
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
118 return _hashlib.new(name, string)
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
119 except ValueError:
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
120 # If the _hashlib module (OpenSSL) doesn't support the named
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
121 # hash, try using our builtin implementations.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
122 # This allows for SHA224/256 and SHA384/512 support even though
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
123 # the OpenSSL library prior to 0.9.8 doesn't provide them.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
124 return __get_builtin_constructor(name)(string)
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
125
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
126
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
127 try:
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
128 import _hashlib
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
129 new = __hash_new
55666
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
130 __get_hash = __get_openssl_constructor
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
131 except ImportError:
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
132 new = __py_new
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
133 __get_hash = __get_builtin_constructor
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
134
55666
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
135 for __func_name in __always_supported:
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
136 # try them all, some may not work due to the OpenSSL
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
137 # version not supporting that algorithm.
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
138 try:
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
139 globals()[__func_name] = __get_hash(__func_name)
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
140 except ValueError:
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
141 import logging
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
142 logging.exception('code for hash %s was not found.', __func_name)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
143
55666
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
144 # Cleanup locals()
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
145 del __always_supported, __func_name, __get_hash
746f10e0624e Clean up the C library import code (based on suggestions in issue6281).
Gregory P. Smith <greg@mad-scientist.com>
parents: 48915
diff changeset
146 del __py_new, __hash_new, __get_openssl_constructor