Now it accepts an optional salt, to be used in a subsequent change.
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;
ngx_sha1_init(&sha1);
ngx_sha1_update(&sha1, data, len);
+ if (salt) {
+ ngx_sha1_update(&sha1, salt, saltlen);
+ }
+
ngx_sha1_final(buf, &sha1);
}
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);
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;
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;