Skip to content

Commit 68122f9

Browse files
committed
Conform to line length requirements and batch write to log file
1 parent cc7f339 commit 68122f9

File tree

2 files changed

+47
-29
lines changed

2 files changed

+47
-29
lines changed

tlslite/session.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ def create(self, masterSecret, sessionID, cipherSuite,
109109
sr_app_secret=bytearray(0), exporterMasterSecret=bytearray(0),
110110
resumptionMasterSecret=bytearray(0), tickets=None,
111111
tls_1_0_tickets=None, ec_point_format=None,
112-
cl_handshake_traffic_secret=bytearray(0),
113-
sr_handshake_traffic_secret=bytearray(0)):
112+
cl_hs_traffic_secret=bytearray(0),
113+
sr_hs_traffic_secret=bytearray(0)):
114114
self.masterSecret = masterSecret
115115
self.sessionID = sessionID
116116
self.cipherSuite = cipherSuite
@@ -128,8 +128,8 @@ def create(self, masterSecret, sessionID, cipherSuite,
128128
self.sr_app_secret = sr_app_secret
129129
self.exporterMasterSecret = exporterMasterSecret
130130
self.resumptionMasterSecret = resumptionMasterSecret
131-
self.cl_handshake_traffic_secret = cl_handshake_traffic_secret
132-
self.sr_handshake_traffic_secret = sr_handshake_traffic_secret
131+
self.cl_handshake_traffic_secret = cl_hs_traffic_secret
132+
self.sr_handshake_traffic_secret = sr_hs_traffic_secret
133133
# NOTE we need a reference copy not a copy of object here!
134134
self.tickets = tickets
135135
self.tls_1_0_tickets = tls_1_0_tickets

tlslite/tlsconnection.py

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ def _handshakeClientAsync(self, srpParams=(), certParams=(), anonParams=(),
429429

430430
# Log client random and master secret for version < TLS1.3
431431
if self.sslkeylogfile and self.version < (3, 4):
432-
self._log_session_keys('CLIENT_RANDOM', self._clientRandom, self.session.masterSecret)
432+
self._log_session_keys(('CLIENT_RANDOM', self._clientRandom, self.session.masterSecret))
433433

434434

435435
def _handshakeClientAsyncHelper(self, srpParams, certParams, anonParams,
@@ -1329,10 +1329,12 @@ def _clientTLS13Handshake(self, settings, session, clientHello,
13291329

13301330
# TLS1.3 log Client and Server traffic secrets for SSLKEYLOGFILE
13311331
if self.sslkeylogfile:
1332-
self._log_session_keys('CLIENT_HANDSHAKE_TRAFFIC_SECRET',
1333-
clientHello.random,
1334-
cl_handshake_traffic_secret)
1335-
self._log_session_keys('SERVER_HANDSHAKE_TRAFFIC_SECRET', clientHello.random, sr_handshake_traffic_secret)
1332+
self._log_session_keys([
1333+
('CLIENT_HANDSHAKE_TRAFFIC_SECRET',
1334+
clientHello.random, cl_handshake_traffic_secret),
1335+
('SERVER_HANDSHAKE_TRAFFIC_SECRET',
1336+
clientHello.random, sr_handshake_traffic_secret)
1337+
])
13361338

13371339
# prepare for reading encrypted messages
13381340
self._recordLayer.calcTLS1_3PendingState(
@@ -1625,11 +1627,14 @@ def _clientTLS13Handshake(self, settings, session, clientHello,
16251627
self._handshake_hash, prfName)
16261628

16271629

1628-
# Now that we have all the TLS1.3 secrets during the handshake, log them if necessary
1630+
# Now that we have all the TLS1.3 secrets during the handshake,
1631+
# log them if necessary
16291632
if self.sslkeylogfile:
1630-
self._log_session_keys('EXPORTER_SECRET', clientHello.random, exporter_master_secret)
1631-
self._log_session_keys('CLIENT_TRAFFIC_SECRET_0', clientHello.random, cl_app_traffic)
1632-
self._log_session_keys('SERVER_TRAFFIC_SECRET_0', clientHello.random, sr_app_traffic)
1633+
self._log_session_keys([
1634+
('EXPORTER_SECRET', clientHello.random, exporter_master_secret),
1635+
('CLIENT_TRAFFIC_SECRET_0', clientHello.random, cl_app_traffic),
1636+
('SERVER_TRAFFIC_SECRET_0', clientHello.random, sr_app_traffic)
1637+
])
16331638

16341639
self._recordLayer.calcTLS1_3PendingState(
16351640
serverHello.cipher_suite,
@@ -1727,8 +1732,8 @@ def _clientTLS13Handshake(self, settings, session, clientHello,
17271732
resumptionMasterSecret=resumption_master_secret,
17281733
# NOTE it must be a reference, not a copy!
17291734
tickets=self.tickets,
1730-
cl_handshake_traffic_secret=cl_handshake_traffic_secret,
1731-
sr_handshake_traffic_secret=sr_handshake_traffic_secret)
1735+
cl_hs_traffic_secret=cl_handshake_traffic_secret,
1736+
sr_hs_traffic_secret=sr_handshake_traffic_secret)
17321737

17331738
yield "finished" if not resuming else "resumed_and_finished"
17341739

@@ -2272,7 +2277,9 @@ def handshakeServerAsync(self, verifierDB=None,
22722277

22732278
# Log client random and master secret for version < TLS1.3
22742279
if self.sslkeylogfile and self.version < (3, 4):
2275-
self._log_session_keys('CLIENT_RANDOM', self._clientRandom, self.session.masterSecret)
2280+
self._log_session_keys(('CLIENT_RANDOM',
2281+
self._clientRandom,
2282+
self.session.masterSecret))
22762283

22772284

22782285
def _handshakeServerAsyncHelper(self, verifierDB,
@@ -2983,10 +2990,12 @@ def _serverTLS13Handshake(self, settings, clientHello, cipherSuite,
29832990

29842991
# TLS1.3 log Client and Server traffic secrets for SSLKEYLOGFILE
29852992
if self.sslkeylogfile:
2986-
self._log_session_keys('CLIENT_HANDSHAKE_TRAFFIC_SECRET',
2987-
clientHello.random,
2988-
cl_handshake_traffic_secret)
2989-
self._log_session_keys('SERVER_HANDSHAKE_TRAFFIC_SECRET', clientHello.random, sr_handshake_traffic_secret)
2993+
self._log_session_keys([
2994+
('CLIENT_HANDSHAKE_TRAFFIC_SECRET',
2995+
clientHello.random, cl_handshake_traffic_secret),
2996+
('SERVER_HANDSHAKE_TRAFFIC_SECRET',
2997+
clientHello.random, sr_handshake_traffic_secret)
2998+
])
29902999

29913000
self.version = version
29923001
self._recordLayer.calcTLS1_3PendingState(
@@ -3255,11 +3264,14 @@ def _serverTLS13Handshake(self, settings, clientHello, cipherSuite,
32553264
prf_name)
32563265

32573266

3258-
# Now that we have all the TLS1.3 secrets during the handshake, log them if necessary
3267+
# Now that we have all the TLS1.3 secrets during the handshake,
3268+
# log them if necessary
32593269
if self.sslkeylogfile:
3260-
self._log_session_keys('EXPORTER_SECRET', clientHello.random, exporter_master_secret)
3261-
self._log_session_keys('CLIENT_TRAFFIC_SECRET_0', clientHello.random, cl_app_traffic)
3262-
self._log_session_keys('SERVER_TRAFFIC_SECRET_0', clientHello.random, sr_app_traffic)
3270+
self._log_session_keys([
3271+
('EXPORTER_SECRET', clientHello.random, exporter_master_secret),
3272+
('CLIENT_TRAFFIC_SECRET_0', clientHello.random, cl_app_traffic),
3273+
('SERVER_TRAFFIC_SECRET_0', clientHello.random, sr_app_traffic)
3274+
])
32633275

32643276

32653277
# verify Finished of client
@@ -3326,8 +3338,8 @@ def _serverTLS13Handshake(self, settings, clientHello, cipherSuite,
33263338
resumptionMasterSecret=resumption_master_secret,
33273339
# NOTE it must be a reference, not a copy
33283340
tickets=self.tickets,
3329-
cl_handshake_traffic_secret=cl_handshake_traffic_secret,
3330-
sr_handshake_traffic_secret=sr_handshake_traffic_secret)
3341+
cl_hs_traffic_secret=cl_handshake_traffic_secret,
3342+
sr_hs_traffic_secret=sr_handshake_traffic_secret)
33313343

33323344
# switch to application_traffic_secret for client packets
33333345
self._changeReadState()
@@ -4783,7 +4795,7 @@ def _serverFinished(self, premasterSecret, clientRandom, serverRandom,
47834795
#Log client random and master secret if SSLKEYLOGFILE is set
47844796
if self.sslkeylogfile and self.version < (3, 3):
47854797
print('Logging session keys in serverFinished')
4786-
self._log_session_keys("CLIENT_RANDOM", clientRandom, masterSecret)
4798+
self._log_session_keys(("CLIENT_RANDOM", clientRandom, masterSecret))
47874799

47884800
#Exchange ChangeCipherSpec and Finished messages
47894801
for result in self._getFinished(masterSecret,
@@ -4981,9 +4993,15 @@ def _calculate_master_secret(self, premaster_secret, cipher_suite,
49814993
output_length=48)
49824994
return secret
49834995

4984-
def _log_session_keys(self, secret_label, client_random, secret):
4996+
def _log_session_keys(self, keys):
4997+
if isinstance(keys, tuple):
4998+
keys = [keys]
4999+
49855000
with open(self.sslkeylogfile, 'a') as ssl_key_log_file:
4986-
ssl_key_log_file.write(f"{secret_label} {client_random.hex()} {secret.hex()}\n")
5001+
ssl_key_log_file.writelines(
5002+
f"{label} {client_random.hex()} {secret.hex()}\n"
5003+
for label, client_random, secret in keys
5004+
)
49875005

49885006
@staticmethod
49895007
def _pickServerKeyExchangeSig(settings, clientHello, certList=None,

0 commit comments

Comments
 (0)