|
21 | 21 | import string |
22 | 22 | import datetime |
23 | 23 | import calendar |
| 24 | +import warnings |
24 | 25 | from riak import RiakError |
25 | 26 | from distutils.version import LooseVersion |
26 | 27 |
|
27 | 28 | OPENSSL_VERSION_101G = 268439679 |
28 | | -OPENSSL_VERSION_101 = "1.0.1" |
29 | | -OPENSSL_VERSION_NUM_POS = 1 |
30 | | -ssldate = datetime.date(2014, 4, 1) |
31 | 29 | sslver = OpenSSL.SSL.OPENSSL_VERSION_NUMBER |
32 | 30 | # Be sure to use at least OpenSSL 1.0.1g |
33 | | -if (sslver < OPENSSL_VERSION_101G): |
34 | | - # Check the build date on older versions |
| 31 | +if (sslver < OPENSSL_VERSION_101G) or \ |
| 32 | + not hasattr(OpenSSL.SSL, 'TLSv1_2_METHOD'): |
35 | 33 | verstring = OpenSSL.SSL.SSLeay_version(OpenSSL.SSL.SSLEAY_VERSION) |
36 | | - verdots = string.split(verstring)[OPENSSL_VERSION_NUM_POS] |
37 | | - builtstr = OpenSSL.SSL.SSLeay_version(OpenSSL.SSL.SSLEAY_BUILT_ON) |
38 | | - timestamp = string.split(builtstr) |
39 | | - |
40 | | - # Older versions don't have a time, only a date |
41 | | - if len(timestamp) < 8: |
42 | | - OPENSSL_VERSION_DAY_POS = 3 |
43 | | - OPENSSL_VERSION_MON_POS = 2 |
44 | | - OPENSSL_VERSION_YEAR_POS = 4 |
45 | | - else: |
46 | | - OPENSSL_VERSION_DAY_POS = 4 |
47 | | - OPENSSL_VERSION_MON_POS = 3 |
48 | | - OPENSSL_VERSION_YEAR_POS = 7 |
49 | | - |
50 | | - calmap = dict([(v, k) for k, v in enumerate(calendar.month_abbr)]) |
51 | | - day = int(timestamp[OPENSSL_VERSION_DAY_POS]) |
52 | | - mon = calmap[timestamp[OPENSSL_VERSION_MON_POS]] |
53 | | - year = int(timestamp[OPENSSL_VERSION_YEAR_POS]) |
54 | | - build = datetime.date(year, mon, day) |
55 | | - if LooseVersion(verdots) < LooseVersion(OPENSSL_VERSION_101) or \ |
56 | | - build < ssldate or not hasattr(OpenSSL.SSL, 'TLSv1_2_METHOD'): |
57 | | - raise RuntimeError("Found {0} version, but expected at least " |
58 | | - "OpenSSL 1.0.1 built after {1} supporting TLS 1.2" |
59 | | - .format(verstring, ssldate)) |
| 34 | + msg = "Found {0} version, but expected at least OpenSSL 1.0.1g. " \ |
| 35 | + "Security may not support TLS 1.2.".format(verstring) |
| 36 | + warnings.warn(msg, UserWarning) |
60 | 37 |
|
61 | 38 |
|
62 | 39 | class SecurityError(RiakError): |
|
0 commit comments