}
/* quic-tls: 5.4.1. Header Protection Application */
- ad.data[0] ^= mask[0] & 0x0f;
+ ad.data[0] ^= mask[0] & ngx_quic_pkt_hp_mask(pkt->flags);
for (i = 0; i < pkt->num_len; i++) {
pnp[i] ^= mask[i + 1];
}
/* quic-tls: 5.4.1. Header Protection Application */
- ad.data[0] ^= mask[0] & 0x1f;
+ ad.data[0] ^= mask[0] & ngx_quic_pkt_hp_mask(pkt->flags);
for (i = 0; i < pkt->num_len; i++) {
pnp[i] ^= mask[i + 1];
return NGX_DECLINED;
}
- if (ngx_quic_long_pkt(pkt->flags)) {
- clearflags = pkt->flags ^ (mask[0] & 0x0f);
+ clearflags = pkt->flags ^ (mask[0] & ngx_quic_pkt_hp_mask(pkt->flags));
- } else {
- clearflags = pkt->flags ^ (mask[0] & 0x1f);
+ if (ngx_quic_short_pkt(pkt->flags)) {
key_phase = (clearflags & NGX_QUIC_PKT_KPHASE) != 0;
if (key_phase != pkt->key_phase) {
in.data = p;
in.len = len - pnl;
- if (ngx_quic_long_pkt(pkt->flags)) {
- badflags = clearflags & NGX_QUIC_PKT_LONG_RESERVED_BIT;
-
- } else {
- badflags = clearflags & NGX_QUIC_PKT_SHORT_RESERVED_BIT;
- }
+ badflags = clearflags & ngx_quic_pkt_rb_mask(pkt->flags);
ad.len = p - pkt->data;
ad.data = pkt->plaintext;
#define NGX_QUIC_PKT_TYPE 0x30 /* in long packet */
#define NGX_QUIC_PKT_KPHASE 0x04 /* in short packet */
-#define NGX_QUIC_PKT_LONG_RESERVED_BIT 0x0C
-#define NGX_QUIC_PKT_SHORT_RESERVED_BIT 0x18
-
#define ngx_quic_long_pkt(flags) ((flags) & NGX_QUIC_PKT_LONG)
#define ngx_quic_short_pkt(flags) (((flags) & NGX_QUIC_PKT_LONG) == 0)
#define ngx_quic_pkt_retry(flags) \
(((flags) & NGX_QUIC_PKT_TYPE) == NGX_QUIC_PKT_RETRY)
+#define ngx_quic_pkt_rb_mask(flags) \
+ (ngx_quic_long_pkt(flags) ? 0x0C : 0x18)
+#define ngx_quic_pkt_hp_mask(flags) \
+ (ngx_quic_long_pkt(flags) ? 0x0F : 0x1F)
+
#define ngx_quic_level_name(lvl) \
(lvl == ssl_encryption_application) ? "app" \
: (lvl == ssl_encryption_initial) ? "init" \