Skip to content

Commit af7b8ec

Browse files
committed
tls: Rearrange handshake test more logically
1 parent 1b0f267 commit af7b8ec

File tree

1 file changed

+39
-37
lines changed

1 file changed

+39
-37
lines changed

tests/test_tls.py

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -514,66 +514,68 @@ def do_io(*, src, dst, amt=1024):
514514
src.consume_outgoing(len(in_transit))
515515
dst.receive_from_network(in_transit)
516516

517-
def do_handshake(*end_state_pair):
518-
for end, state in end_state_pair:
517+
def do_handshake(end, states):
518+
while end._handshake_state is not states[0]:
519+
# The backend goes through every state for both
520+
# ends. This is not relevant.
521+
end.do_handshake()
522+
523+
for state in states:
524+
assert end._handshake_state is state
525+
if state is HandshakeStep.HANDSHAKE_OVER:
526+
break
519527
with suppress(WantReadError, WantWriteError):
520528
end.do_handshake()
521-
assert end._handshake_state is state
522529

523530
do_handshake(
524-
(server, HandshakeStep.CLIENT_HELLO),
525-
(client, HandshakeStep.CLIENT_HELLO),
526-
(client, HandshakeStep.SERVER_HELLO),
531+
client,
532+
(
533+
HandshakeStep.HELLO_REQUEST,
534+
HandshakeStep.CLIENT_HELLO,
535+
),
527536
)
528537

529538
do_io(src=client, dst=server)
530539
do_handshake(
531-
(server, HandshakeStep.SERVER_HELLO),
532-
(server, HandshakeStep.SERVER_CERTIFICATE),
533-
(server, HandshakeStep.SERVER_KEY_EXCHANGE),
534-
(server, HandshakeStep.CERTIFICATE_REQUEST),
535-
(server, HandshakeStep.SERVER_HELLO_DONE),
536-
(server, HandshakeStep.CLIENT_CERTIFICATE),
537-
(server, HandshakeStep.CLIENT_KEY_EXCHANGE),
540+
server,
541+
(
542+
HandshakeStep.SERVER_HELLO,
543+
HandshakeStep.SERVER_CERTIFICATE,
544+
HandshakeStep.SERVER_KEY_EXCHANGE,
545+
HandshakeStep.CERTIFICATE_REQUEST,
546+
HandshakeStep.SERVER_HELLO_DONE,
547+
),
538548
)
539549
assert client.negotiated_protocol() == server.negotiated_protocol()
540550

541551
do_io(src=server, dst=client)
542552
do_handshake(
543-
(client, HandshakeStep.SERVER_CERTIFICATE),
544-
(client, HandshakeStep.SERVER_KEY_EXCHANGE),
545-
(client, HandshakeStep.CERTIFICATE_REQUEST),
546-
(client, HandshakeStep.SERVER_HELLO_DONE),
547-
(client, HandshakeStep.CLIENT_CERTIFICATE),
548-
(client, HandshakeStep.CLIENT_KEY_EXCHANGE),
549-
(client, HandshakeStep.CERTIFICATE_VERIFY),
550-
(client, HandshakeStep.CLIENT_CHANGE_CIPHER_SPEC),
551-
(client, HandshakeStep.CLIENT_FINISHED),
552-
(client, HandshakeStep.SERVER_CHANGE_CIPHER_SPEC),
553+
client,
554+
(
555+
HandshakeStep.CLIENT_KEY_EXCHANGE,
556+
HandshakeStep.CERTIFICATE_VERIFY,
557+
HandshakeStep.CLIENT_CHANGE_CIPHER_SPEC,
558+
HandshakeStep.CLIENT_FINISHED,
559+
),
553560
)
554561
assert (
555562
client.negotiated_tls_version() == server.negotiated_tls_version()
556563
)
557564

558565
do_io(src=client, dst=server)
559566
do_handshake(
560-
(server, HandshakeStep.CERTIFICATE_VERIFY),
561-
(server, HandshakeStep.CLIENT_CHANGE_CIPHER_SPEC),
562-
(server, HandshakeStep.CLIENT_FINISHED),
563-
(server, HandshakeStep.SERVER_CHANGE_CIPHER_SPEC),
564-
(server, HandshakeStep.SERVER_FINISHED),
565-
(server, HandshakeStep.FLUSH_BUFFERS),
566-
(server, HandshakeStep.HANDSHAKE_WRAPUP),
567-
(server, HandshakeStep.HANDSHAKE_OVER),
567+
server,
568+
(
569+
HandshakeStep.SERVER_CHANGE_CIPHER_SPEC,
570+
HandshakeStep.SERVER_FINISHED,
571+
HandshakeStep.FLUSH_BUFFERS,
572+
HandshakeStep.HANDSHAKE_WRAPUP,
573+
HandshakeStep.HANDSHAKE_OVER,
574+
),
568575
)
569576

570577
do_io(src=server, dst=client)
571-
do_handshake(
572-
(client, HandshakeStep.SERVER_FINISHED),
573-
(client, HandshakeStep.FLUSH_BUFFERS),
574-
(client, HandshakeStep.HANDSHAKE_WRAPUP),
575-
(client, HandshakeStep.HANDSHAKE_OVER),
576-
)
578+
do_handshake(client, (HandshakeStep.HANDSHAKE_OVER,))
577579
assert client.cipher() == server.cipher()
578580

579581
secret = b"a very secret message"

0 commit comments

Comments
 (0)