[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] 15/32: transport (quic): mint_token for generating tokens
From: |
gnunet |
Subject: |
[gnunet] 15/32: transport (quic): mint_token for generating tokens |
Date: |
Tue, 18 Jul 2023 17:16:04 +0200 |
This is an automated email from the git hooks/post-receive script.
marshall pushed a commit to branch master
in repository gnunet.
commit 45d61aeb6ef93edfebfd634bd396ac49a99a235b
Author: marshall <stmr@umich.edu>
AuthorDate: Fri Jun 16 15:36:30 2023 -0400
transport (quic): mint_token for generating tokens
---
src/transport/gnunet-communicator-quic.c | 57 ++++++++++++++++++++++----------
1 file changed, 39 insertions(+), 18 deletions(-)
diff --git a/src/transport/gnunet-communicator-quic.c
b/src/transport/gnunet-communicator-quic.c
index 201f84238..ff5d36b24 100644
--- a/src/transport/gnunet-communicator-quic.c
+++ b/src/transport/gnunet-communicator-quic.c
@@ -109,9 +109,10 @@ gen_cid(uint8_t *cid, size_t cid_len)
/**
* Given a quiche connection and buffer, recv data from streams and store into
buffer
+ * ASSUMES: connection is established to peer
*/
static void
-recv_from_streams(quiche_conn *conn, char buf[])
+recv_from_streams(quiche_conn *conn, char stream_buf[])
{
uint64_t s = 0;
quiche_stream_iter *readable = quiche_conn_readable(conn);
@@ -119,24 +120,36 @@ recv_from_streams(quiche_conn *conn, char buf[])
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "stream %" PRIu64 " is readable\n",
s);
bool fin = false;
ssize_t recv_len = quiche_conn_stream_recv(conn, s,
- (uint8_t *) buf, sizeof(buf),
- &fin);
+ stream_buf, sizeof(stream_buf),
+ &fin);
if (recv_len < 0) {
break;
}
/**
* Received and processed plaintext from peer: send to core/transport
service
*/
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "msg received: %s\n", buf);
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "msg received: %s\n", stream_buf);
if (fin) {
static const char *resp = "byez\n";
- quiche_conn_stream_send(conn, s, (uint8_t *) resp,
+ quiche_conn_stream_send(conn, s, resp,
5, true);
}
}
quiche_stream_iter_free(readable);
}
+static void
+mint_token (const uint8_t *dcid, size_t dcid_len,
+ struct sockaddr_storage *addr, socklen_t addr_len,
+ uint8_t *token, size_t *token_len)
+{
+ GNUNET_memcpy(token, "quiche", sizeof("quiche") - 1);
+ GNUNET_memcpy(token + sizeof("quiche") - 1, addr, addr_len);
+ GNUNET_memcpy(token + sizeof("quiche") - 1 + addr_len, dcid, dcid_len);
+
+ *token_len = sizeof("quiche") - 1 + addr_len + dcid_len;
+}
+
/**
* Shutdown the UNIX communicator.
*
@@ -374,9 +387,9 @@ sock_read (void *cls)
/* look for connection in hashtable */
/* each connection to the peer should have a unique incoming DCID */
/* check against a conn SCID */
- struct GNUNET_HashCode *conn_key;
- GNUNET_CRYPTO_hash(dcid, sizeof(dcid), conn_key);
- conn = GNUNET_CONTAINER_multihashmap_get(conn_map, conn_key);
+ struct GNUNET_HashCode conn_key;
+ GNUNET_CRYPTO_hash(dcid, sizeof(dcid), &conn_key);
+ conn = GNUNET_CONTAINER_multihashmap_get(conn_map, &conn_key);
/**
* New QUIC connection with peer
@@ -411,18 +424,19 @@ sock_read (void *cls)
if (0 == token_len)
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "quic stateless retry\n");
- // mint_token(dcid, dcid_len, &sa, salen,
- // token, &token_len);
+ mint_token(dcid, dcid_len, &sa, salen,
+ token, &token_len);
- // uint8_t new_cid[LOCAL_CONN_ID_LEN];
- // gen_cid(new_cid, LOCAL_CONN_ID_LEN);
+ uint8_t new_cid[LOCAL_CONN_ID_LEN];
+ gen_cid(new_cid, LOCAL_CONN_ID_LEN);
- // ssize_t written = quiche_retry(scid, scid_len,
- // dcid, dcid_len,
- // new_cid, LOCAL_CONN_ID_LEN,
- // token, token_len,
- // version, out, sizeof(out));
+ ssize_t written = quiche_retry(scid, scid_len,
+ dcid, dcid_len,
+ new_cid, LOCAL_CONN_ID_LEN,
+ token, token_len,
+ version, out, sizeof(out));
}
+
} // null connection
char *bindto;
socklen_t in_len;
@@ -465,8 +479,15 @@ sock_read (void *cls)
if (quiche_conn_is_established(conn))
{
// Check for data on all available streams
- recv_from_streams(conn, buf);
+ char stream_buf[UINT16_MAX];
+ recv_from_streams(conn, stream_buf);
}
+
+ /**
+ * Connection cleanup, check for closed connections, delete entries, print
stats
+ */
+
+
// if (rcvd > sizeof(struct UDPRekey))
// {
// const struct UDPRekey *rekey;
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet] 08/32: transport (quic): handle reading data from socket, (continued)
- [gnunet] 08/32: transport (quic): handle reading data from socket, gnunet, 2023/07/18
- [gnunet] 10/32: transport (quic): define max streamid, gnunet, 2023/07/18
- [gnunet] 04/32: transport (quic): UDP listener skeleton, gnunet, 2023/07/18
- [gnunet] 05/32: transport (quic): change configure files/add changes, gnunet, 2023/07/18
- [gnunet] 01/32: transport (QUIC): create starter file and update Makefile, gnunet, 2023/07/18
- [gnunet] 06/32: transport (quic): remove binary, add quic communicator to gitignore, gnunet, 2023/07/18
- [gnunet] 09/32: transport (quic): link quiche w/ quic communicator, gnunet, 2023/07/18
- [gnunet] 12/32: transport (quic): get recv info from incoming data, gnunet, 2023/07/18
- [gnunet] 11/32: transport (quic): conn object implement, gnunet, 2023/07/18
- [gnunet] 14/32: transport (quic): more logic for reading stream, gnunet, 2023/07/18
- [gnunet] 15/32: transport (quic): mint_token for generating tokens,
gnunet <=
- [gnunet] 13/32: transport (quic): establish connection, gnunet, 2023/07/18
- [gnunet] 18/32: transport (quic): check for closed connections, gnunet, 2023/07/18
- [gnunet] 27/32: transport (quic): Add some pointers, gnunet, 2023/07/18
- [gnunet] 17/32: transport (quic): create connection functionality, gnunet, 2023/07/18
- [gnunet] 16/32: transport (quic): mint tokens, gnunet, 2023/07/18
- [gnunet] 20/32: transport (quic): cleanup, create header object, gnunet, 2023/07/18
- [gnunet] 19/32: transport (quic): minor cleanup, remove commented code, gnunet, 2023/07/18
- [gnunet] 22/32: transport (quic): token validation check, gnunet, 2023/07/18
- [gnunet] 23/32: transport (quic): get random block for cid, gnunet, 2023/07/18
- [gnunet] 25/32: transport (quic): comm connect, gnunet, 2023/07/18