]> 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)
committerSergey Kandaurov <s.kandaurov@f5.com>
Thu, 26 Feb 2026 14:05:07 +0000 (18:05 +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 096e8327ffc2ab5a57dfd69b7d59a51c872b9f4f..09ce4b81ebdcb5df2d2e173ab5ed92e616ffbaeb 100644 (file)
@@ -1475,7 +1475,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;
@@ -1514,5 +1514,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 e84e754d8035fc2b6b12eb9bd008eb21bb180e1b..efcb632ca3e430782b2f0c26e84b0e27f24f797f 100644 (file)
@@ -315,7 +315,7 @@ void ngx_quic_discard_ctx(ngx_connection_t *c, ngx_uint_t level);
 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;