7
7
)
8
8
from tarantool .const import (
9
9
DEFAULT_TRANSPORT ,
10
- SSL_TRANSPORT
10
+ SSL_TRANSPORT ,
11
+ AUTH_TYPE_CHAP_SHA1 ,
12
+ AUTH_TYPE_PAP_SHA256 ,
11
13
)
12
14
import tarantool
13
15
from .lib .tarantool_server import TarantoolServer
@@ -60,26 +62,34 @@ class SslTestCase:
60
62
def __init__ (self ,
61
63
name = "" ,
62
64
ok = False ,
65
+ expected_error = tarantool .error .SslError ,
63
66
server_transport = SSL_TRANSPORT ,
64
67
server_key_file = None ,
65
68
server_cert_file = None ,
66
69
server_ca_file = None ,
67
70
server_ciphers = None ,
71
+ server_auth_type = None ,
72
+ client_transport = SSL_TRANSPORT ,
68
73
client_cert_file = None ,
69
74
client_key_file = None ,
70
75
client_ca_file = None ,
71
- client_ciphers = None ):
76
+ client_ciphers = None ,
77
+ client_auth_type = None ):
72
78
self .name = name
73
79
self .ok = ok
80
+ self .expected_error = expected_error
74
81
self .server_transport = server_transport
75
82
self .server_key_file = server_key_file
76
83
self .server_cert_file = server_cert_file
77
84
self .server_ca_file = server_ca_file
78
85
self .server_ciphers = server_ciphers
86
+ self .server_auth_type = server_auth_type
87
+ self .client_transport = client_transport
79
88
self .client_cert_file = client_cert_file
80
89
self .client_key_file = client_key_file
81
90
self .client_ca_file = client_ca_file
82
91
self .client_ciphers = client_ciphers
92
+ self .client_auth_type = client_auth_type
83
93
84
94
# Requirements from Tarantool Enterprise Edition manual:
85
95
# https://www.tarantool.io/en/enterprise_doc/security/#configuration
@@ -239,6 +249,35 @@ def __init__(self,
239
249
client_cert_file = self .cert_file ,
240
250
client_ca_file = self .ca_file ,
241
251
client_ciphers = "TLS_AES_128_GCM_SHA256" ),
252
+ SslTestCase (
253
+ name = "pap-sha256_auth_no_ssl" ,
254
+ ok = False ,
255
+ expected_error = tarantool .error .ConfigurationError ,
256
+ client_auth_type = AUTH_TYPE_PAP_SHA256 ,
257
+ client_transport = DEFAULT_TRANSPORT ),
258
+ SslTestCase (
259
+ name = "pap-sha256_auth_client_mismatch" ,
260
+ ok = True ,
261
+ expected_error = tarantool .error .DatabaseError ,
262
+ client_auth_type = AUTH_TYPE_CHAP_SHA1 ,
263
+ server_key_file = self .key_file ,
264
+ server_cert_file = self .cert_file ,
265
+ server_auth_type = AUTH_TYPE_PAP_SHA256 ),
266
+ SslTestCase (
267
+ name = "pap-sha256_auth_server_mismatch" ,
268
+ ok = True ,
269
+ expected_error = tarantool .error .DatabaseError ,
270
+ client_auth_type = AUTH_TYPE_PAP_SHA256 ,
271
+ server_key_file = self .key_file ,
272
+ server_cert_file = self .cert_file ,
273
+ server_auth_type = AUTH_TYPE_CHAP_SHA1 ),
274
+ SslTestCase (
275
+ name = "pap-sha256_auth" ,
276
+ ok = True ,
277
+ client_auth_type = AUTH_TYPE_PAP_SHA256 ,
278
+ server_key_file = self .key_file ,
279
+ server_cert_file = self .cert_file ,
280
+ server_auth_type = AUTH_TYPE_PAP_SHA256 ),
242
281
]
243
282
for t in testcases :
244
283
with self .subTest (msg = t .name ):
@@ -250,7 +289,8 @@ def __init__(self,
250
289
ssl_key_file = t .server_key_file ,
251
290
ssl_cert_file = t .server_cert_file ,
252
291
ssl_ca_file = t .server_ca_file ,
253
- ssl_ciphers = t .server_ciphers )
292
+ ssl_ciphers = t .server_ciphers ,
293
+ auth_type = t .server_auth_type )
254
294
srv .script = 'test/suites/box.lua'
255
295
srv .start ()
256
296
srv .admin ("box.schema.create_space('space_1')" )
@@ -271,18 +311,19 @@ def __init__(self,
271
311
srv .host , srv .args ['primary' ],
272
312
user = "test" ,
273
313
password = "test" ,
274
- transport = "ssl" ,
314
+ transport = t . client_transport ,
275
315
ssl_key_file = t .client_key_file ,
276
316
ssl_cert_file = t .client_cert_file ,
277
317
ssl_ca_file = t .client_ca_file ,
278
318
ssl_ciphers = t .client_ciphers ,
319
+ auth_type = t .client_auth_type ,
279
320
connection_timeout = 0.5 ,
280
321
socket_timeout = 0.5 )
281
322
282
323
self .assertEqual (con .insert ('space_1' , [1 ])[0 ], [1 ])
283
324
self .assertEqual (len (con .select ('space_1' )), 1 )
284
325
self .assertTrue (t .ok )
285
- except tarantool . error . SslError :
326
+ except t . expected_error :
286
327
self .assertFalse (t .ok )
287
328
finally :
288
329
self .stop_srv (srv )
@@ -375,3 +416,14 @@ def test_mesh(self):
375
416
servers [i ].stop ()
376
417
finally :
377
418
self .stop_mesh (con )
419
+
420
+ def test_sha_256_client_setting ():
421
+ srv = TarantoolServer (
422
+ transport = t .server_transport ,
423
+ ssl_key_file = t .server_key_file ,
424
+ ssl_cert_file = t .server_cert_file ,
425
+ ssl_ca_file = t .server_ca_file ,
426
+ ssl_ciphers = t .server_ciphers ,
427
+ auth_type = "pap-sha256" )
428
+ srv .script = 'test/suites/box.lua'
429
+ srv .start ()
0 commit comments