Skip to content

Commit 1f88948

Browse files
lealem47danielinux
authored andcommitted
Adding DTLS13 support
1 parent 7c43681 commit 1f88948

5 files changed

Lines changed: 26 additions & 10 deletions

File tree

examples/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ def get_SSLmethod(index):
121121
def get_DTLSmethod(index):
122122
return (
123123
wolfssl.PROTOCOL_DTLSv1,
124-
wolfssl.PROTOCOL_DTLSv1_2
124+
wolfssl.PROTOCOL_DTLSv1_2,
125+
wolfssl.PROTOCOL_DTLSv1_3
125126
)[index]
126127

127128
def main():

examples/server.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ def get_SSLmethod(index):
110110
def get_DTLSmethod(index):
111111
return (
112112
wolfssl.PROTOCOL_DTLSv1,
113-
wolfssl.PROTOCOL_DTLSv1_2
113+
wolfssl.PROTOCOL_DTLSv1_2,
114+
wolfssl.PROTOCOL_DTLSv1_3
114115
)[index]
115116

116117

wolfssl/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
PROTOCOL_SSLv23, PROTOCOL_SSLv3, PROTOCOL_TLSv1,
5353
PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2, PROTOCOL_TLSv1_3,
5454
PROTOCOL_TLS, PROTOCOL_DTLSv1, PROTOCOL_DTLSv1_2,
55-
WolfSSLMethod as _WolfSSLMethod
55+
PROTOCOL_DTLSv1_3, WolfSSLMethod as _WolfSSLMethod
5656
)
5757

5858
CERT_NONE = 0

wolfssl/_build_ffi.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,18 @@ def make_flags(prefix, debug):
153153
flags.append("--disable-shared")
154154
flags.append("--disable-examples")
155155

156-
# tls 1.3
157-
flags.append("--enable-tls13")
156+
# dtls 1.3
157+
flags.append("--enable-dtls13")
158158

159159
# dtls
160160
flags.append("--enable-dtls")
161161

162162
# crl
163163
flags.append("--enable-crl")
164164

165+
# openssl extra
166+
flags.append("--enable-opensslextra")
167+
165168
# for urllib3 - requires SNI (tlsx), options (openssl compat), peer cert
166169
flags.append("--enable-tlsx")
167170
flags.append("--enable-opensslextra")
@@ -205,7 +208,7 @@ def make(configure_flags):
205208
call("make install")
206209

207210

208-
def build_wolfssl(ref, debug=True):
211+
def build_wolfssl(ref, debug=False):
209212
prefix = local_path("lib/wolfssl/{}/{}".format(
210213
get_platform(), ref))
211214
libfile = os.path.join(prefix, 'lib/libwolfssl.la')
@@ -384,6 +387,9 @@ def generate_libwolfssl():
384387
cdef += """
385388
WOLFSSL_METHOD* wolfTLSv1_1_server_method(void);
386389
WOLFSSL_METHOD* wolfTLSv1_1_client_method(void);
390+
391+
WOLFSSL_METHOD* wolfDTLSv1_server_method(void);
392+
WOLFSSL_METHOD* wolfDTLSv1_client_method(void);
387393
"""
388394

389395
cdef += """
@@ -398,11 +404,11 @@ def generate_libwolfssl():
398404
399405
WOLFSSL_METHOD* wolfSSLv23_method(void);
400406
401-
WOLFSSL_METHOD* wolfDTLSv1_server_method(void);
402-
WOLFSSL_METHOD* wolfDTLSv1_client_method(void);
403-
404407
WOLFSSL_METHOD* wolfDTLSv1_2_server_method(void);
405408
WOLFSSL_METHOD* wolfDTLSv1_2_client_method(void);
409+
410+
WOLFSSL_METHOD* wolfDTLSv1_3_server_method(void);
411+
WOLFSSL_METHOD* wolfDTLSv1_3_client_method(void);
406412
"""
407413
if OLDTLS_ENABLED:
408414
cdef += """

wolfssl/_methods.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@
3838
PROTOCOL_TLSv1_3 = 6
3939
PROTOCOL_DTLSv1 = 7
4040
PROTOCOL_DTLSv1_2 = 8
41+
PROTOCOL_DTLSv1_3 = 9
4142

4243
_PROTOCOL_LIST = [PROTOCOL_SSLv23, PROTOCOL_SSLv3, PROTOCOL_TLS,
4344
PROTOCOL_TLSv1, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2,
44-
PROTOCOL_TLSv1_3, PROTOCOL_DTLSv1, PROTOCOL_DTLSv1_2]
45+
PROTOCOL_TLSv1_3, PROTOCOL_DTLSv1, PROTOCOL_DTLSv1_2,
46+
PROTOCOL_DTLSv1_3]
4547

4648
_DYNAMIC_TYPE_METHOD = 11
4749

@@ -89,6 +91,8 @@ def __init__(self, protocol, server_side):
8991
_lib.wolfSSLv23_client_method()
9092

9193
elif protocol == PROTOCOL_DTLSv1:
94+
if not _lib.OLDTLS_ENABLED:
95+
raise ValueError("wolfSSL not built with old TLS support")
9296
self.native_object = \
9397
_lib.wolfDTLSv1_server_method() if server_side else \
9498
_lib.wolfDTLSv1_client_method()
@@ -98,6 +102,10 @@ def __init__(self, protocol, server_side):
98102
_lib.wolfDTLSv1_2_server_method() if server_side else \
99103
_lib.wolfDTLSv1_2_client_method()
100104

105+
elif protocol == PROTOCOL_DTLSv1_3:
106+
self.native_object = \
107+
_lib.wolfDTLSv1_3_server_method() if server_side else \
108+
_lib.wolfDTLSv1_3_client_method()
101109

102110
if self.native_object == _ffi.NULL:
103111
raise MemoryError("Unnable to allocate method object")

0 commit comments

Comments
 (0)