gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet] 22/32: transport (quic): token validation check


From: gnunet
Subject: [gnunet] 22/32: transport (quic): token validation check
Date: Tue, 18 Jul 2023 17:16:11 +0200

This is an automated email from the git hooks/post-receive script.

marshall pushed a commit to branch master
in repository gnunet.

commit 63a18f014bfff83463b85498ca299e5e9a5edefc
Author: marshall <stmr@umich.edu>
AuthorDate: Mon Jun 26 09:12:20 2023 -0400

    transport (quic): token validation check
---
 src/transport/gnunet-communicator-quic.c | 47 ++++++++++++++++++++++++++++----
 1 file changed, 41 insertions(+), 6 deletions(-)

diff --git a/src/transport/gnunet-communicator-quic.c 
b/src/transport/gnunet-communicator-quic.c
index 8bd8deca7..dc6cca01c 100644
--- a/src/transport/gnunet-communicator-quic.c
+++ b/src/transport/gnunet-communicator-quic.c
@@ -176,6 +176,40 @@ mint_token (const uint8_t *dcid, size_t dcid_len,
 }
 
 
+static bool
+validate_token (const uint8_t *token, size_t token_len,
+                struct sockaddr_storage *addr, socklen_t addr_len,
+                uint8_t *odcid, size_t *odcid_len)
+{
+  if ((token_len < sizeof("quiche") - 1) ||
+      memcmp (token, "quiche", sizeof("quiche") - 1))
+  {
+    return false;
+  }
+
+  token += sizeof("quiche") - 1;
+  token_len -= sizeof("quiche") - 1;
+
+  if ((token_len < addr_len) || memcmp (token, addr, addr_len))
+  {
+    return false;
+  }
+
+  token += addr_len;
+  token_len -= addr_len;
+
+  if (*odcid_len < token_len)
+  {
+    return false;
+  }
+
+  memcpy (odcid, token, token_len);
+  *odcid_len = token_len;
+
+  return true;
+}
+
+
 static struct quic_conn*
 create_conn (uint8_t *scid, size_t scid_len,
              uint8_t *odcid, size_t odcid_len,
@@ -580,12 +614,13 @@ sock_read (void *cls)
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "sent %zd bytes\n", sent);
     }
 
-    // if (0 == validate_token (token, token_len, (struct sockaddr*) &sa, 
salen,
-    //                          odcid, &odcid_len))
-    // {
-    //   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-    //               "invalid address validation token created\n");
-    // }
+    if (0 == validate_token (quic_header.token, quic_header.token_len,
+                             &sa, salen,
+                             quic_header.odcid, &quic_header.odcid_len))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "invalid address validation token created\n");
+    }
 
     conn = create_conn (quic_header.dcid, quic_header.dcid_len,
                         quic_header.odcid, quic_header.odcid_len,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]