From ded045cf23fc2ed328d7d55ef66fca4fd2006172 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Tue, 25 Oct 2022 10:56:20 -0500 Subject: [PATCH 1/5] Check for more required fields --- .../beacon/discovery/pipeline/handler/MessageHandler.java | 3 +++ .../beacon/discovery/pipeline/handler/NextTaskHandler.java | 3 +++ .../discovery/pipeline/handler/WhoAreYouPacketHandler.java | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java index f55aff52d..14d5965d7 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java @@ -40,6 +40,9 @@ public void handle(Envelope envelope) { if (!HandlerUtil.requireField(Field.MESSAGE, envelope)) { return; } + if (!HandlerUtil.requireField(Field.SESSION, envelope)) { + return; + } if (!HandlerUtil.requireNodeRecord(envelope)) { return; } diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java index e9145be1b..046477701 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java @@ -47,6 +47,9 @@ public static void tryToSendAwaitTaskIfAny( @Override public void handle(Envelope envelope) { + if (!HandlerUtil.requireField(Field.SESSION, envelope)) { + return; + } if (!HandlerUtil.requireNodeRecord(envelope)) { return; } diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java index 10ca99409..d953bf44e 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java @@ -50,6 +50,12 @@ public void handle(final Envelope envelope) { if (!HandlerUtil.requireField(Field.PACKET_WHOAREYOU, envelope)) { return; } + if (!HandlerUtil.requireField(Field.MASKING_IV, envelope)) { + return; + } + if (!HandlerUtil.requireField(Field.SESSION, envelope)) { + return; + } logger.trace( () -> String.format( From 35c38d6ea06b079cb8a9b887de2cc7d968558aa8 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Tue, 25 Oct 2022 11:16:40 -0500 Subject: [PATCH 2/5] Update some "requirements are satistfied" trace messages --- .../beacon/discovery/pipeline/handler/BadPacketHandler.java | 2 +- .../pipeline/handler/HandshakeMessagePacketHandler.java | 2 +- .../beacon/discovery/pipeline/handler/NodeSessionManager.java | 2 +- .../discovery/pipeline/handler/PacketDispatcherHandler.java | 2 +- .../pipeline/handler/UnauthorizedMessagePacketHandler.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/BadPacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/BadPacketHandler.java index ce81dd69b..613cdef02 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/BadPacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/BadPacketHandler.java @@ -23,7 +23,7 @@ public void handle(Envelope envelope) { logger.trace( () -> String.format( - "Envelope %s in BadPacketLogger, requirements are satisfied!", + "Envelope %s in BadPacketHandler, requirements are satisfied!", envelope.getIdString())); logger.debug( diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/HandshakeMessagePacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/HandshakeMessagePacketHandler.java index 687728fb2..cd49c9353 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/HandshakeMessagePacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/HandshakeMessagePacketHandler.java @@ -58,7 +58,7 @@ public void handle(Envelope envelope) { logger.trace( () -> String.format( - "Envelope %s in AuthHeaderMessagePacketHandler, requirements are satisfied!", + "Envelope %s in HandshakeMessagePacketHandler, requirements are satisfied!", envelope.getIdString())); HandshakeMessagePacket packet = envelope.get(Field.PACKET_HANDSHAKE); diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NodeSessionManager.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NodeSessionManager.java index 2136be0bc..80e5e8b68 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NodeSessionManager.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NodeSessionManager.java @@ -75,7 +75,7 @@ public void handle(final Envelope envelope) { return; } logger.trace( - "Envelope {} in NodeIdToSession, requirements are satisfied!", envelope.getIdString()); + "Envelope {} in NodeSessionManager, requirements are satisfied!", envelope.getIdString()); SessionLookup sessionRequest = envelope.get(Field.SESSION_LOOKUP); envelope.remove(Field.SESSION_LOOKUP); diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/PacketDispatcherHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/PacketDispatcherHandler.java index 13435b947..65051ac55 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/PacketDispatcherHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/PacketDispatcherHandler.java @@ -34,7 +34,7 @@ public void handle(Envelope envelope) { logger.trace( () -> String.format( - "Envelope %s in UnknownPacketTypeByStatus, requirements are satisfied!", + "Envelope %s in PacketDispatcherHandler, requirements are satisfied!", envelope.getIdString())); Packet packet = envelope.get(Field.PACKET); diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/UnauthorizedMessagePacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/UnauthorizedMessagePacketHandler.java index 5dc472e90..d7b27a4fc 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/UnauthorizedMessagePacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/UnauthorizedMessagePacketHandler.java @@ -37,7 +37,7 @@ public void handle(Envelope envelope) { logger.trace( () -> String.format( - "Envelope %s in NotExpectedIncomingPacketHandler, requirements are satisfied!", + "Envelope %s in UnauthorizedMessagePacketHandler, requirements are satisfied!", envelope.getIdString())); NodeSession session = envelope.get(Field.SESSION); From 8c19c673907cbd2a98629e65194d230ac75f42bb Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 31 Oct 2022 09:57:17 -0500 Subject: [PATCH 3/5] Rename method to requireSessionWithNodeRecord --- .../org/ethereum/beacon/discovery/pipeline/HandlerUtil.java | 2 +- .../beacon/discovery/pipeline/handler/MessageHandler.java | 2 +- .../beacon/discovery/pipeline/handler/NextTaskHandler.java | 2 +- .../discovery/pipeline/handler/WhoAreYouPacketHandler.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/HandlerUtil.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/HandlerUtil.java index 3debe1030..c5bd913f2 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/HandlerUtil.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/HandlerUtil.java @@ -24,7 +24,7 @@ public static boolean requireField(Field field, Envelope envelope) { } } - public static boolean requireNodeRecord(Envelope envelope) { + public static boolean requireSessionWithNodeRecord(Envelope envelope) { if (!requireField(Field.SESSION, envelope)) { return false; } diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java index 14d5965d7..98cf145cd 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java @@ -43,7 +43,7 @@ public void handle(Envelope envelope) { if (!HandlerUtil.requireField(Field.SESSION, envelope)) { return; } - if (!HandlerUtil.requireNodeRecord(envelope)) { + if (!HandlerUtil.requireSessionWithNodeRecord(envelope)) { return; } logger.trace( diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java index 046477701..9a20a9ad5 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java @@ -50,7 +50,7 @@ public void handle(Envelope envelope) { if (!HandlerUtil.requireField(Field.SESSION, envelope)) { return; } - if (!HandlerUtil.requireNodeRecord(envelope)) { + if (!HandlerUtil.requireSessionWithNodeRecord(envelope)) { return; } logger.trace( diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java index d953bf44e..ba4fd7f8a 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java @@ -44,7 +44,7 @@ public WhoAreYouPacketHandler(final Pipeline outgoingPipeline, final Scheduler s @Override public void handle(final Envelope envelope) { - if (!HandlerUtil.requireNodeRecord(envelope)) { + if (!HandlerUtil.requireSessionWithNodeRecord(envelope)) { return; } if (!HandlerUtil.requireField(Field.PACKET_WHOAREYOU, envelope)) { From 4e9aafac0a1b48e5795c16318efa583944a51652 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 31 Oct 2022 10:00:03 -0500 Subject: [PATCH 4/5] Throw exception earlier --- .../discovery/pipeline/handler/WhoAreYouPacketHandler.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java index ba4fd7f8a..2ea3e186a 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java @@ -51,7 +51,7 @@ public void handle(final Envelope envelope) { return; } if (!HandlerUtil.requireField(Field.MASKING_IV, envelope)) { - return; + throw new IllegalStateException("Internal error: No MASKING_IV field for WhoAreYou packet"); } if (!HandlerUtil.requireField(Field.SESSION, envelope)) { return; @@ -88,9 +88,6 @@ public void handle(final Envelope envelope) { // The handshake uses the unmasked WHOAREYOU challenge as an input: // challenge-data = masking-iv || static-header || authdata - if (!envelope.contains(Field.MASKING_IV)) { - throw new IllegalStateException("Internal error: No MASKING_IV field for WhoAreYou packet"); - } Bytes16 whoAreYouMaskingIV = envelope.get(Field.MASKING_IV); Bytes challengeData = Bytes.wrap( From 163cadfd3173f746173b850c2b859e87a37f52f2 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 31 Oct 2022 10:05:44 -0500 Subject: [PATCH 5/5] Remove duplicate requireField call --- .../beacon/discovery/pipeline/handler/MessageHandler.java | 3 --- .../beacon/discovery/pipeline/handler/NextTaskHandler.java | 3 --- .../discovery/pipeline/handler/WhoAreYouPacketHandler.java | 3 --- 3 files changed, 9 deletions(-) diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java index 483e65e78..9c2074d78 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/MessageHandler.java @@ -40,9 +40,6 @@ public void handle(Envelope envelope) { if (!HandlerUtil.requireField(Field.MESSAGE, envelope)) { return; } - if (!HandlerUtil.requireField(Field.SESSION, envelope)) { - return; - } if (!HandlerUtil.requireSessionWithNodeRecord(envelope)) { return; } diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java index 0786f4a3b..041599713 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/NextTaskHandler.java @@ -47,9 +47,6 @@ public static void tryToSendAwaitTaskIfAny( @Override public void handle(Envelope envelope) { - if (!HandlerUtil.requireField(Field.SESSION, envelope)) { - return; - } if (!HandlerUtil.requireSessionWithNodeRecord(envelope)) { return; } diff --git a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java index b9eb59067..e0cdb3066 100644 --- a/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java +++ b/src/main/java/org/ethereum/beacon/discovery/pipeline/handler/WhoAreYouPacketHandler.java @@ -53,9 +53,6 @@ public void handle(final Envelope envelope) { if (!HandlerUtil.requireField(Field.MASKING_IV, envelope)) { throw new IllegalStateException("Internal error: No MASKING_IV field for WhoAreYou packet"); } - if (!HandlerUtil.requireField(Field.SESSION, envelope)) { - return; - } LOG.trace( () -> String.format(