|
34 | 34 | "SSLEAY_BUILT_ON",
|
35 | 35 | "SENT_SHUTDOWN",
|
36 | 36 | "RECEIVED_SHUTDOWN",
|
37 |
| - "SSLv2_METHOD", |
38 |
| - "SSLv3_METHOD", |
39 | 37 | "SSLv23_METHOD",
|
40 | 38 | "TLSv1_METHOD",
|
41 | 39 | "TLSv1_1_METHOD",
|
|
135 | 133 | SENT_SHUTDOWN = _lib.SSL_SENT_SHUTDOWN
|
136 | 134 | RECEIVED_SHUTDOWN = _lib.SSL_RECEIVED_SHUTDOWN
|
137 | 135 |
|
138 |
| -SSLv2_METHOD = 1 |
139 |
| -SSLv3_METHOD = 2 |
140 | 136 | SSLv23_METHOD = 3
|
141 | 137 | TLSv1_METHOD = 4
|
142 | 138 | TLSv1_1_METHOD = 5
|
@@ -680,31 +676,24 @@ class Context:
|
680 | 676 | """
|
681 | 677 |
|
682 | 678 | _methods = {
|
683 |
| - SSLv2_METHOD: "SSLv2_method", |
684 |
| - SSLv3_METHOD: "SSLv3_method", |
685 |
| - SSLv23_METHOD: "SSLv23_method", |
686 |
| - TLSv1_METHOD: "TLSv1_method", |
687 |
| - TLSv1_1_METHOD: "TLSv1_1_method", |
688 |
| - TLSv1_2_METHOD: "TLSv1_2_method", |
689 |
| - TLS_METHOD: "TLS_method", |
690 |
| - TLS_SERVER_METHOD: "TLS_server_method", |
691 |
| - TLS_CLIENT_METHOD: "TLS_client_method", |
692 |
| - DTLS_METHOD: "DTLS_method", |
693 |
| - DTLS_SERVER_METHOD: "DTLS_server_method", |
694 |
| - DTLS_CLIENT_METHOD: "DTLS_client_method", |
| 679 | + SSLv23_METHOD: (_lib.TLS_method, None), |
| 680 | + TLSv1_METHOD: (_lib.TLS_method, TLS1_VERSION), |
| 681 | + TLSv1_1_METHOD: (_lib.TLS_method, TLS1_1_VERSION), |
| 682 | + TLSv1_2_METHOD: (_lib.TLS_method, TLS1_2_VERSION), |
| 683 | + TLS_METHOD: (_lib.TLS_method, None), |
| 684 | + TLS_SERVER_METHOD: (_lib.TLS_server_method, None), |
| 685 | + TLS_CLIENT_METHOD: (_lib.TLS_client_method, None), |
| 686 | + DTLS_METHOD: (_lib.DTLS_method, None), |
| 687 | + DTLS_SERVER_METHOD: (_lib.DTLS_server_method, None), |
| 688 | + DTLS_CLIENT_METHOD: (_lib.DTLS_client_method, None), |
695 | 689 | }
|
696 |
| - _methods = dict( |
697 |
| - (identifier, getattr(_lib, name)) |
698 |
| - for (identifier, name) in _methods.items() |
699 |
| - if getattr(_lib, name, None) is not None |
700 |
| - ) |
701 | 690 |
|
702 | 691 | def __init__(self, method):
|
703 | 692 | if not isinstance(method, int):
|
704 | 693 | raise TypeError("method must be an integer")
|
705 | 694 |
|
706 | 695 | try:
|
707 |
| - method_func = self._methods[method] |
| 696 | + method_func, version = self._methods[method] |
708 | 697 | except KeyError:
|
709 | 698 | raise ValueError("No such protocol")
|
710 | 699 |
|
@@ -734,6 +723,9 @@ def __init__(self, method):
|
734 | 723 | self._cookie_verify_helper = None
|
735 | 724 |
|
736 | 725 | self.set_mode(_lib.SSL_MODE_ENABLE_PARTIAL_WRITE)
|
| 726 | + if version is not None: |
| 727 | + self.set_min_proto_version(version) |
| 728 | + self.set_max_proto_version(version) |
737 | 729 |
|
738 | 730 | def set_min_proto_version(self, version):
|
739 | 731 | """
|
|
0 commit comments