1+ """
2+ Development code for SSL compatibility investigations
3+ """
14import os
25import select
36import socket
912PORT = 8912
1013
1114
15+ # pylint: disable=no-member
1216def sslProtocolVersion ():
13- # sslProtocolVersion
17+ """
18+ Find a protocol version value with compatibility across
19+ different python versions
20+ """
1421 if sys .version_info >= (2 , 7 , 13 ):
1522 # this means TLSv1 or higher
1623 # in the future change to
@@ -26,26 +33,42 @@ def sslProtocolVersion():
2633
2734
2835def sslProtocolCiphers ():
36+ """
37+ Find protocol cipher that is compatible for PyBitmessage across
38+ different python and OpenSSL versions
39+ """
2940 if ssl .OPENSSL_VERSION_NUMBER >= 0x10100000 :
3041 return "AECDH-AES256-SHA@SECLEVEL=0"
3142 else :
3243 return "AECDH-AES256-SHA"
3344
3445
46+ # pylint: disable=redefined-outer-name
3547def connect ():
48+ """
49+ Connect a socket
50+ """
3651 sock = socket .create_connection ((HOST , PORT ))
3752 return sock
3853
3954
55+ # pylint: disable=redefined-outer-name
4056def listen ():
57+ """
58+ Listen on a socket
59+ """
4160 sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
4261 sock .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
4362 sock .bind ((HOST , PORT ))
4463 sock .listen (0 )
4564 return sock
4665
4766
67+ # pylint: disable=redefined-outer-name
4868def sslHandshake (sock , server = False ):
69+ """
70+ Perform SSL hadnshake
71+ """
4972 if sys .version_info >= (2 , 7 , 9 ):
5073 context = ssl .SSLContext (sslProtocolVersion ())
5174 context .set_ciphers (sslProtocolCiphers ())
@@ -54,12 +77,19 @@ def sslHandshake(sock, server=False):
5477 context .verify_mode = ssl .CERT_NONE
5578 context .options = ssl .OP_ALL | ssl .OP_NO_SSLv2 | ssl .OP_NO_SSLv3 \
5679 | ssl .OP_SINGLE_ECDH_USE | ssl .OP_CIPHER_SERVER_PREFERENCE
57- sslSock = context .wrap_socket (sock , server_side = server , do_handshake_on_connect = False )
80+ sslSock = context .wrap_socket (sock , server_side = server ,
81+ do_handshake_on_connect = False )
5882 else :
59- sslSock = ssl .wrap_socket (sock , keyfile = os .path .join ('src' , 'sslkeys' , 'key.pem' ),
60- certfile = os .path .join ('src' , 'sslkeys' , 'cert.pem' ),
61- server_side = server , ssl_version = sslProtocolVersion (),
62- do_handshake_on_connect = False , ciphers = 'AECDH-AES256-SHA' )
83+ sslSock = ssl .wrap_socket (sock , keyfile = os .path .join ('src' ,
84+ 'sslkeys' ,
85+ 'key.pem' ),
86+ certfile = os .path .join ('src' ,
87+ 'sslkeys' ,
88+ 'cert.pem' ),
89+ server_side = server ,
90+ ssl_version = sslProtocolVersion (),
91+ do_handshake_on_connect = False ,
92+ ciphers = 'AECDH-AES256-SHA' )
6393
6494 while True :
6595 try :
0 commit comments