Add comments in pattern xx
This commit is contained in:
parent
d0290d2b5a
commit
6ea96e9313
|
@ -75,10 +75,10 @@ class PatternXX(BasePattern):
|
||||||
noise_state = self.create_noise_state()
|
noise_state = self.create_noise_state()
|
||||||
noise_state.set_as_responder()
|
noise_state.set_as_responder()
|
||||||
noise_state.start_handshake()
|
noise_state.start_handshake()
|
||||||
state = noise_state.noise_protocol.handshake_state
|
handshake_state = noise_state.noise_protocol.handshake_state
|
||||||
read_writer = NoiseHandshakeReadWriter(conn, noise_state)
|
read_writer = NoiseHandshakeReadWriter(conn, noise_state)
|
||||||
|
|
||||||
# Consume msg#1
|
# Consume msg#1.
|
||||||
await read_writer.read_msg()
|
await read_writer.read_msg()
|
||||||
|
|
||||||
# Send msg#2, which should include our handshake payload.
|
# Send msg#2, which should include our handshake payload.
|
||||||
|
@ -86,13 +86,18 @@ class PatternXX(BasePattern):
|
||||||
msg_2 = our_payload.serialize()
|
msg_2 = our_payload.serialize()
|
||||||
await read_writer.write_msg(msg_2)
|
await read_writer.write_msg(msg_2)
|
||||||
|
|
||||||
# Receive msg#3
|
# Receive and consume msg#3.
|
||||||
msg_3 = await read_writer.read_msg()
|
msg_3 = await read_writer.read_msg()
|
||||||
peer_handshake_payload = NoiseHandshakePayload.deserialize(msg_3)
|
peer_handshake_payload = NoiseHandshakePayload.deserialize(msg_3)
|
||||||
|
|
||||||
if state.rs is None:
|
if handshake_state.rs is None:
|
||||||
raise NoiseStateError
|
raise NoiseStateError(
|
||||||
remote_pubkey = Ed25519PublicKey.from_bytes(state.rs.public_bytes)
|
"something is wrong in the underlying noise `handshake_state`: "
|
||||||
|
"we received and consumed msg#3, which should have included the"
|
||||||
|
" remote static public key, but it is not present in the handshake_state"
|
||||||
|
)
|
||||||
|
# Use `Ed25519PublicKey` since 25519 is used in our pattern.
|
||||||
|
remote_pubkey = Ed25519PublicKey.from_bytes(handshake_state.rs.public_bytes)
|
||||||
if not verify_handshake_payload_sig(peer_handshake_payload, remote_pubkey):
|
if not verify_handshake_payload_sig(peer_handshake_payload, remote_pubkey):
|
||||||
raise InvalidSignature
|
raise InvalidSignature
|
||||||
remote_peer_id_from_pubkey = ID.from_pubkey(peer_handshake_payload.id_pubkey)
|
remote_peer_id_from_pubkey = ID.from_pubkey(peer_handshake_payload.id_pubkey)
|
||||||
|
@ -118,16 +123,24 @@ class PatternXX(BasePattern):
|
||||||
read_writer = NoiseHandshakeReadWriter(conn, noise_state)
|
read_writer = NoiseHandshakeReadWriter(conn, noise_state)
|
||||||
noise_state.set_as_initiator()
|
noise_state.set_as_initiator()
|
||||||
noise_state.start_handshake()
|
noise_state.start_handshake()
|
||||||
state = noise_state.noise_protocol.handshake_state
|
handshake_state = noise_state.noise_protocol.handshake_state
|
||||||
|
|
||||||
|
# Send msg#1, which is *not* encrypted.
|
||||||
msg_1 = b""
|
msg_1 = b""
|
||||||
await read_writer.write_msg(msg_1)
|
await read_writer.write_msg(msg_1)
|
||||||
|
|
||||||
|
# Read msg#2 from the remote, which contains the public key of the peer.
|
||||||
msg_2 = await read_writer.read_msg()
|
msg_2 = await read_writer.read_msg()
|
||||||
peer_handshake_payload = NoiseHandshakePayload.deserialize(msg_2)
|
peer_handshake_payload = NoiseHandshakePayload.deserialize(msg_2)
|
||||||
if state.rs is None:
|
|
||||||
raise NoiseStateError
|
if handshake_state.rs is None:
|
||||||
remote_pubkey = Ed25519PublicKey.from_bytes(state.rs.public_bytes)
|
raise NoiseStateError(
|
||||||
|
"something is wrong in the underlying noise `handshake_state`: "
|
||||||
|
"we received and consumed msg#3, which should have included the"
|
||||||
|
" remote static public key, but it is not present in the handshake_state"
|
||||||
|
)
|
||||||
|
# Use `Ed25519PublicKey` since 25519 is used in our pattern.
|
||||||
|
remote_pubkey = Ed25519PublicKey.from_bytes(handshake_state.rs.public_bytes)
|
||||||
if not verify_handshake_payload_sig(peer_handshake_payload, remote_pubkey):
|
if not verify_handshake_payload_sig(peer_handshake_payload, remote_pubkey):
|
||||||
raise InvalidSignature
|
raise InvalidSignature
|
||||||
remote_peer_id_from_pubkey = ID.from_pubkey(peer_handshake_payload.id_pubkey)
|
remote_peer_id_from_pubkey = ID.from_pubkey(peer_handshake_payload.id_pubkey)
|
||||||
|
@ -138,6 +151,7 @@ class PatternXX(BasePattern):
|
||||||
f"remote_peer_id_from_pubkey={remote_peer_id_from_pubkey}"
|
f"remote_peer_id_from_pubkey={remote_peer_id_from_pubkey}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Send msg#3, which includes our encrypted payload and our noise static key.
|
||||||
our_payload = self.make_handshake_payload()
|
our_payload = self.make_handshake_payload()
|
||||||
msg_3 = our_payload.serialize()
|
msg_3 = our_payload.serialize()
|
||||||
await read_writer.write_msg(msg_3)
|
await read_writer.write_msg(msg_3)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user