]> git.kaiwu.me - nginx.git/commitdiff
QUIC: refactored ngx_quic_address_hash().
authorSergey Kandaurov <pluknet@nginx.com>
Wed, 25 Feb 2026 17:07:01 +0000 (21:07 +0400)
committerRoman Arutyunyan <arutyunyan.roman@gmail.com>
Tue, 24 Mar 2026 18:33:23 +0000 (22:33 +0400)
Now it accepts an optional salt, to be used in a subsequent change.

src/event/quic/ngx_event_quic.c
src/event/quic/ngx_event_quic_connection.h
src/event/quic/ngx_event_quic_tokens.c

index 4b27a8e22d516e47676a35ede91d4066ed453c86..fc2d53a537db12d5cbaa58102ca5fd613890e714 100644 (file)
@@ -1470,7 +1470,7 @@ ngx_quic_shutdown_quic(ngx_connection_t *c)
 
 void
 ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen,
-    ngx_uint_t no_port, u_char buf[20])
+    ngx_uint_t no_port, u_char *salt, size_t saltlen, u_char buf[20])
 {
     size_t                len;
     u_char               *data;
@@ -1509,5 +1509,9 @@ ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen,
     ngx_sha1_init(&sha1);
     ngx_sha1_update(&sha1, data, len);
 
+    if (salt) {
+        ngx_sha1_update(&sha1, salt, saltlen);
+    }
+
     ngx_sha1_final(buf, &sha1);
 }
index 8561654e5e10f489d43e4243e15f22186e559184..5532c8ce27e816c80b1ffc59075f3b751f38465f 100644 (file)
@@ -304,7 +304,7 @@ void ngx_quic_discard_ctx(ngx_connection_t *c,
 void ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc);
 void ngx_quic_shutdown_quic(ngx_connection_t *c);
 void ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen,
-    ngx_uint_t no_port, u_char buf[20]);
+    ngx_uint_t no_port, u_char *salt, size_t saltlen, u_char buf[20]);
 
 #if (NGX_DEBUG)
 void ngx_quic_connstate_dbg(ngx_connection_t *c);
index 89d31815716fedc1bacf4e9a19ae78f682ef0cb8..6c94d5c18a99b88d455e5698da85b9dd61c74b81 100644 (file)
@@ -46,7 +46,7 @@ ngx_quic_new_token(ngx_log_t *log, struct sockaddr *sockaddr,
 
     u_char             in[NGX_QUIC_MAX_TOKEN_SIZE];
 
-    ngx_quic_address_hash(sockaddr, socklen, !is_retry, in);
+    ngx_quic_address_hash(sockaddr, socklen, !is_retry, NULL, 0, in);
 
     p = in + 20;
 
@@ -207,7 +207,8 @@ ngx_quic_validate_token(ngx_connection_t *c, u_char *key,
 
     pkt->retried = (*p++ == 1);
 
-    ngx_quic_address_hash(c->sockaddr, c->socklen, !pkt->retried, addr_hash);
+    ngx_quic_address_hash(c->sockaddr, c->socklen, !pkt->retried, NULL, 0,
+                          addr_hash);
 
     if (ngx_memcmp(tdec, addr_hash, 20) != 0) {
         goto bad_token;