Skip to content

Commit 85ac434

Browse files
adds support to tls 1.3
1 parent 3027ecd commit 85ac434

7 files changed

Lines changed: 34 additions & 16 deletions

File tree

examples/client.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ def build_arg_parser():
5353
)
5454

5555
parser.add_argument(
56-
"-v", metavar="version", type=int, choices=[0, 1, 2, 3], default=3,
57-
help="SSL version [0-3], SSLv3(0) - TLS1.2(3)), default 3"
56+
"-v", metavar="version", type=int, choices=[0, 1, 2, 3, 4], default=4,
57+
help="SSL version [0-4] (SSLv3, TLSv1, TLSv1.1, TLSv1.2, SSLv23)"
5858
)
5959

6060
parser.add_argument(
@@ -95,7 +95,8 @@ def get_method(index):
9595
wolfssl.PROTOCOL_SSLv3,
9696
wolfssl.PROTOCOL_TLSv1,
9797
wolfssl.PROTOCOL_TLSv1_1,
98-
wolfssl.PROTOCOL_TLSv1_2
98+
wolfssl.PROTOCOL_TLSv1_2,
99+
wolfssl.PROTOCOL_SSLv23
99100
)[index]
100101

101102

examples/server.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ def build_arg_parser():
4848
)
4949

5050
parser.add_argument(
51-
"-v", metavar="version", type=int, choices=[0, 1, 2, 3], default=3,
52-
help="SSL version [0-3], SSLv3(0) - TLS1.2(3)), default 3"
51+
"-v", metavar="version", type=int, choices=[0, 1, 2, 3, 4], default=4,
52+
help="SSL version [0-4] (SSLv3, TLSv1, TLSv1.1, TLSv1.2, SSLv23)"
5353
)
5454

5555
parser.add_argument(
@@ -95,7 +95,8 @@ def get_method(index):
9595
wolfssl.PROTOCOL_SSLv3,
9696
wolfssl.PROTOCOL_TLSv1,
9797
wolfssl.PROTOCOL_TLSv1_1,
98-
wolfssl.PROTOCOL_TLSv1_2
98+
wolfssl.PROTOCOL_TLSv1_2,
99+
wolfssl.PROTOCOL_SSLv23
99100
)[index]
100101

101102

src/wolfssl/_build_ffi.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,15 @@
5757
/**
5858
* SSL/TLS Method functions
5959
*/
60-
void* wolfSSLv23_server_method(void);
61-
void* wolfSSLv23_client_method(void);
60+
void* wolfTLSv1_1_server_method(void);
61+
void* wolfTLSv1_1_client_method(void);
62+
6263
void* wolfTLSv1_2_server_method(void);
6364
void* wolfTLSv1_2_client_method(void);
6465
66+
void* wolfSSLv23_server_method(void);
67+
void* wolfSSLv23_client_method(void);
68+
6569
/**
6670
* SSL/TLS Context functions
6771
*/

src/wolfssl/_build_wolfssl.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ def make_flags(prefix):
115115

116116
# lib only
117117
flags.append("--disable-shared")
118+
flags.append("--disable-examples")
119+
120+
# tls 1.3
121+
flags.append("--enable-tls13")
118122

119123
return " ".join(flags)
120124

src/wolfssl/_methods.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ def __init__(self, protocol, server_side):
6363
raise ValueError("this protocol is not supported")
6464

6565
elif protocol == PROTOCOL_TLSv1_1:
66-
raise ValueError("this protocol is not supported")
66+
self.native_object = \
67+
_lib.wolfTLSv1_1_server_method() if server_side else \
68+
_lib.wolfTLSv1_1_client_method()
6769

6870
elif protocol == PROTOCOL_TLSv1_2:
6971
self.native_object = \

tests/conftest.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ def ssl_provider(request):
4444
return request.param
4545

4646

47-
@pytest.fixture
48-
def ssl_context(ssl_provider):
49-
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_SSLv23)
47+
@pytest.fixture(
48+
params=["TLSv1.1", "TLSv1.2", "SSLv23"])
49+
def ssl_context(ssl_provider, request):
50+
if request.param == "TLSv1.1":
51+
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_TLSv1_1)
52+
if request.param == "TLSv1.2":
53+
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_TLSv1_2)
54+
if request.param == "SSLv23":
55+
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_SSLv23)

tests/test_methods.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@
3030

3131

3232
@pytest.fixture(
33-
params=[-1, PROTOCOL_SSLv3, PROTOCOL_TLSv1, PROTOCOL_TLSv1_1],
34-
ids=["invalid", "SSLv3", "TLSv1", "TLSv1_1"])
33+
params=[-1, PROTOCOL_SSLv3, PROTOCOL_TLSv1],
34+
ids=["invalid", "SSLv3", "TLSv1"])
3535
def unsupported_method(request):
3636
yield request.param
3737

3838

3939
@pytest.fixture(
40-
params=[PROTOCOL_SSLv23, PROTOCOL_TLS, PROTOCOL_TLSv1_2],
41-
ids=["SSLv23", "TLS", "TLSv1_2"])
40+
params=[PROTOCOL_SSLv23, PROTOCOL_TLS, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2],
41+
ids=["SSLv23", "TLS", "TLSv1_1", "TLSv1_2"])
4242
def supported_method(request):
4343
yield request.param
4444

0 commit comments

Comments
 (0)