|
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