Skip to content

Commit 9d22a85

Browse files
committed
Fix TLSv1.3 support
There were some missing pieces to the TLSv1.3 support, this adds them in along with tests.
1 parent c3ebf22 commit 9d22a85

7 files changed

Lines changed: 26 additions & 9 deletions

File tree

examples/client.py

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

5555
parser.add_argument(
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)"
56+
"-v", metavar="version", type=int, choices=[0, 1, 2, 3, 4, 5],
57+
default=5,
58+
help="SSL version [0-4]"
59+
"(SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, SSLv23)"
5860
)
5961

6062
parser.add_argument(
@@ -96,6 +98,7 @@ def get_method(index):
9698
wolfssl.PROTOCOL_TLSv1,
9799
wolfssl.PROTOCOL_TLSv1_1,
98100
wolfssl.PROTOCOL_TLSv1_2,
101+
wolfssl.PROTOCOL_TLSv1_3,
99102
wolfssl.PROTOCOL_SSLv23
100103
)[index]
101104

examples/server.py

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

5050
parser.add_argument(
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)"
51+
"-v", metavar="version", type=int, choices=[0, 1, 2, 3, 4, 5],
52+
default=5,
53+
help="SSL version [0-4]"
54+
"(SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1_3, SSLv23)"
5355
)
5456

5557
parser.add_argument(
@@ -96,6 +98,7 @@ def get_method(index):
9698
wolfssl.PROTOCOL_TLSv1,
9799
wolfssl.PROTOCOL_TLSv1_1,
98100
wolfssl.PROTOCOL_TLSv1_2,
101+
wolfssl.PROTOCOL_TLSv1_3,
99102
wolfssl.PROTOCOL_SSLv23
100103
)[index]
101104

@@ -144,6 +147,7 @@ def main():
144147

145148
finally:
146149
if secure_socket:
150+
secure_socket.shutdown(socket.SHUT_RDWR)
147151
secure_socket.close()
148152

149153
if not args.i:

tests/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,13 @@ def ssl_provider(request):
4545

4646

4747
@pytest.fixture(
48-
params=["TLSv1.1", "TLSv1.2", "SSLv23"])
48+
params=["TLSv1.1", "TLSv1.2", "TLSv1.3", "SSLv23"])
4949
def ssl_context(ssl_provider, request):
5050
if request.param == "TLSv1.1":
5151
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_TLSv1_1)
5252
if request.param == "TLSv1.2":
5353
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_TLSv1_2)
54+
if request.param == "TLSv1.3":
55+
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_TLSv1_3)
5456
if request.param == "SSLv23":
5557
return ssl_provider.SSLContext(ssl_provider.PROTOCOL_SSLv23)

tests/test_methods.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import pytest
2626
from wolfssl._methods import (WolfSSLMethod, PROTOCOL_SSLv3, PROTOCOL_SSLv23,
2727
PROTOCOL_TLS, PROTOCOL_TLSv1, PROTOCOL_TLSv1_1,
28-
PROTOCOL_TLSv1_2)
28+
PROTOCOL_TLSv1_2, PROTOCOL_TLSv1_3)
2929
from wolfssl._ffi import ffi as _ffi
3030

3131

@@ -37,8 +37,9 @@ def unsupported_method(request):
3737

3838

3939
@pytest.fixture(
40-
params=[PROTOCOL_SSLv23, PROTOCOL_TLS, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2],
41-
ids=["SSLv23", "TLS", "TLSv1_1", "TLSv1_2"])
40+
params=[PROTOCOL_SSLv23, PROTOCOL_TLS, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2,
41+
PROTOCOL_TLSv1_3],
42+
ids=["SSLv23", "TLS", "TLSv1_1", "TLSv1_2", "TLSv1_3"])
4243
def supported_method(request):
4344
yield request.param
4445

wolfssl/_build_ffi.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,9 @@ def generate_libwolfssl():
366366
WOLFSSL_METHOD* wolfTLSv1_2_server_method(void);
367367
WOLFSSL_METHOD* wolfTLSv1_2_client_method(void);
368368
369+
WOLFSSL_METHOD* wolfTLSv1_3_server_method(void);
370+
WOLFSSL_METHOD* wolfTLSv1_3_client_method(void);
371+
369372
WOLFSSL_METHOD* wolfSSLv23_server_method(void);
370373
WOLFSSL_METHOD* wolfSSLv23_client_method(void);
371374

wolfssl/_openssl.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def construct_cdef(optional_funcs):
6363
static const long SSL_OP_NO_TLSv1;
6464
static const long SSL_OP_NO_TLSv1_1;
6565
static const long SSL_OP_NO_TLSv1_2;
66+
static const long SSL_OP_NO_TLSv1_3;
6667
static const long SSL_MODE_RELEASE_BUFFERS;
6768
static const long SSL_OP_SINGLE_DH_USE;
6869
static const long SSL_OP_SINGLE_ECDH_USE;
@@ -175,11 +176,14 @@ def construct_cdef(optional_funcs):
175176
SSL_METHOD* TLSv1_1_client_method(void);
176177
SSL_METHOD* TLSv1_2_server_method(void);
177178
SSL_METHOD* TLSv1_2_client_method(void);
179+
SSL_METHOD* TLSv1_3_server_method(void);
180+
SSL_METHOD* TLSv1_3_client_method(void);
178181
SSL_METHOD* SSLv23_server_method(void);
179182
SSL_METHOD* SSLv23_client_method(void);
180183
SSL_METHOD* SSLv23_method(void);
181184
SSL_METHOD* TLSv1_1_method(void);
182185
SSL_METHOD* TLSv1_2_method(void);
186+
SSL_METHOD* TLSv1_3_method(void);
183187
184188
/**
185189
* SSL/TLS Context functions

wolfssl/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
#
99
# MAJOR.MINOR.BUILD-POST
1010

11-
__version__ = "5.4.0-0"
11+
__version__ = "5.4.0-1"

0 commit comments

Comments
 (0)