Lines Matching full:hdr

189                                   QUIC_PKT_HDR *hdr,  in ossl_quic_wire_decode_pkt_hdr()  argument
211 hdr->partial = partial; in ossl_quic_wire_decode_pkt_hdr()
212 hdr->unused = 0; in ossl_quic_wire_decode_pkt_hdr()
213 hdr->reserved = 0; in ossl_quic_wire_decode_pkt_hdr()
224 hdr->type = QUIC_PKT_TYPE_1RTT; in ossl_quic_wire_decode_pkt_hdr()
225 hdr->fixed = 1; in ossl_quic_wire_decode_pkt_hdr()
226 hdr->spin_bit = (b0 & 0x20) != 0; in ossl_quic_wire_decode_pkt_hdr()
228 hdr->key_phase = 0; /* protected, zero for now */ in ossl_quic_wire_decode_pkt_hdr()
229 hdr->pn_len = 0; /* protected, zero for now */ in ossl_quic_wire_decode_pkt_hdr()
230 hdr->reserved = 0; /* protected, zero for now */ in ossl_quic_wire_decode_pkt_hdr()
232 hdr->key_phase = (b0 & 0x04) != 0; in ossl_quic_wire_decode_pkt_hdr()
233 hdr->pn_len = (b0 & 0x03) + 1; in ossl_quic_wire_decode_pkt_hdr()
234 hdr->reserved = (b0 & 0x18) >> 3; in ossl_quic_wire_decode_pkt_hdr()
238 if (!PACKET_copy_bytes(pkt, hdr->dst_conn_id.id, short_conn_id_len)) in ossl_quic_wire_decode_pkt_hdr()
241 hdr->dst_conn_id.id_len = (unsigned char)short_conn_id_len; in ossl_quic_wire_decode_pkt_hdr()
249 memset(hdr->pn, 0, sizeof(hdr->pn)); in ossl_quic_wire_decode_pkt_hdr()
252 if (!PACKET_forward(pkt, sizeof(hdr->pn))) in ossl_quic_wire_decode_pkt_hdr()
255 if (!PACKET_copy_bytes(pkt, hdr->pn, hdr->pn_len)) in ossl_quic_wire_decode_pkt_hdr()
260 hdr->version = 0; in ossl_quic_wire_decode_pkt_hdr()
261 hdr->src_conn_id.id_len = 0; in ossl_quic_wire_decode_pkt_hdr()
262 hdr->token = NULL; in ossl_quic_wire_decode_pkt_hdr()
263 hdr->token_len = 0; in ossl_quic_wire_decode_pkt_hdr()
269 hdr->len = PACKET_remaining(pkt); in ossl_quic_wire_decode_pkt_hdr()
270 hdr->data = PACKET_data(pkt); in ossl_quic_wire_decode_pkt_hdr()
277 if (!PACKET_forward(pkt, hdr->len)) in ossl_quic_wire_decode_pkt_hdr()
296 || !PACKET_copy_bytes(pkt, hdr->dst_conn_id.id, dst_conn_id_len) in ossl_quic_wire_decode_pkt_hdr()
299 || !PACKET_copy_bytes(pkt, hdr->src_conn_id.id, src_conn_id_len)) in ossl_quic_wire_decode_pkt_hdr()
302 hdr->version = (uint32_t)version; in ossl_quic_wire_decode_pkt_hdr()
303 hdr->dst_conn_id.id_len = (unsigned char)dst_conn_id_len; in ossl_quic_wire_decode_pkt_hdr()
304 hdr->src_conn_id.id_len = (unsigned char)src_conn_id_len; in ossl_quic_wire_decode_pkt_hdr()
312 hdr->type = QUIC_PKT_TYPE_VERSION_NEG; in ossl_quic_wire_decode_pkt_hdr()
313 hdr->fixed = (b0 & 0x40) != 0; in ossl_quic_wire_decode_pkt_hdr()
315 hdr->data = PACKET_data(pkt); in ossl_quic_wire_decode_pkt_hdr()
316 hdr->len = PACKET_remaining(pkt); in ossl_quic_wire_decode_pkt_hdr()
322 if ((hdr->len % 4) != 0) in ossl_quic_wire_decode_pkt_hdr()
326 hdr->partial = 0; in ossl_quic_wire_decode_pkt_hdr()
329 hdr->pn_len = 0; in ossl_quic_wire_decode_pkt_hdr()
330 hdr->spin_bit = 0; in ossl_quic_wire_decode_pkt_hdr()
331 hdr->key_phase = 0; in ossl_quic_wire_decode_pkt_hdr()
332 hdr->token = NULL; in ossl_quic_wire_decode_pkt_hdr()
333 hdr->token_len = 0; in ossl_quic_wire_decode_pkt_hdr()
334 memset(hdr->pn, 0, sizeof(hdr->pn)); in ossl_quic_wire_decode_pkt_hdr()
336 if (!PACKET_forward(pkt, hdr->len)) in ossl_quic_wire_decode_pkt_hdr()
352 hdr->type = QUIC_PKT_TYPE_INITIAL; in ossl_quic_wire_decode_pkt_hdr()
355 hdr->type = QUIC_PKT_TYPE_0RTT; in ossl_quic_wire_decode_pkt_hdr()
358 hdr->type = QUIC_PKT_TYPE_HANDSHAKE; in ossl_quic_wire_decode_pkt_hdr()
361 hdr->type = QUIC_PKT_TYPE_RETRY; in ossl_quic_wire_decode_pkt_hdr()
365 hdr->pn_len = 0; in ossl_quic_wire_decode_pkt_hdr()
366 hdr->fixed = 1; in ossl_quic_wire_decode_pkt_hdr()
369 hdr->spin_bit = 0; in ossl_quic_wire_decode_pkt_hdr()
370 hdr->key_phase = 0; in ossl_quic_wire_decode_pkt_hdr()
372 if (hdr->type == QUIC_PKT_TYPE_INITIAL) { in ossl_quic_wire_decode_pkt_hdr()
378 || !PACKET_get_bytes(pkt, &hdr->token, (size_t)token_len)) in ossl_quic_wire_decode_pkt_hdr()
381 hdr->token_len = (size_t)token_len; in ossl_quic_wire_decode_pkt_hdr()
383 hdr->token = NULL; in ossl_quic_wire_decode_pkt_hdr()
385 hdr->token = NULL; in ossl_quic_wire_decode_pkt_hdr()
386 hdr->token_len = 0; in ossl_quic_wire_decode_pkt_hdr()
389 if (hdr->type == QUIC_PKT_TYPE_RETRY) { in ossl_quic_wire_decode_pkt_hdr()
391 hdr->data = PACKET_data(pkt); in ossl_quic_wire_decode_pkt_hdr()
392 hdr->len = PACKET_remaining(pkt); in ossl_quic_wire_decode_pkt_hdr()
395 hdr->partial = 0; in ossl_quic_wire_decode_pkt_hdr()
398 hdr->unused = b0 & 0x0f; in ossl_quic_wire_decode_pkt_hdr()
401 memset(hdr->pn, 0, sizeof(hdr->pn)); in ossl_quic_wire_decode_pkt_hdr()
403 if (!PACKET_forward(pkt, hdr->len)) in ossl_quic_wire_decode_pkt_hdr()
409 hdr->pn_len = partial ? 0 : ((b0 & 0x03) + 1); in ossl_quic_wire_decode_pkt_hdr()
410 hdr->reserved = partial ? 0 : ((b0 & 0x0C) >> 2); in ossl_quic_wire_decode_pkt_hdr()
413 || len < sizeof(hdr->pn)) in ossl_quic_wire_decode_pkt_hdr()
426 memset(hdr->pn, 0, sizeof(hdr->pn)); in ossl_quic_wire_decode_pkt_hdr()
428 if (!PACKET_forward(pkt, sizeof(hdr->pn))) in ossl_quic_wire_decode_pkt_hdr()
431 hdr->len = (size_t)(len - sizeof(hdr->pn)); in ossl_quic_wire_decode_pkt_hdr()
433 if (!PACKET_copy_bytes(pkt, hdr->pn, hdr->pn_len)) in ossl_quic_wire_decode_pkt_hdr()
436 hdr->len = (size_t)(len - hdr->pn_len); in ossl_quic_wire_decode_pkt_hdr()
440 hdr->data = NULL; in ossl_quic_wire_decode_pkt_hdr()
442 hdr->data = PACKET_data(pkt); in ossl_quic_wire_decode_pkt_hdr()
445 if (!PACKET_forward(pkt, hdr->len)) in ossl_quic_wire_decode_pkt_hdr()
471 const QUIC_PKT_HDR *hdr, in ossl_quic_wire_encode_pkt_hdr() argument
492 if (hdr->partial in ossl_quic_wire_encode_pkt_hdr()
493 || (hdr->type == QUIC_PKT_TYPE_1RTT in ossl_quic_wire_encode_pkt_hdr()
494 && hdr->dst_conn_id.id_len != short_conn_id_len)) in ossl_quic_wire_encode_pkt_hdr()
497 if (hdr->type == QUIC_PKT_TYPE_1RTT) { in ossl_quic_wire_encode_pkt_hdr()
504 if (hdr->dst_conn_id.id_len != short_conn_id_len in ossl_quic_wire_encode_pkt_hdr()
506 || hdr->pn_len < 1 || hdr->pn_len > 4) in ossl_quic_wire_encode_pkt_hdr()
509 b0 = (hdr->spin_bit << 5) in ossl_quic_wire_encode_pkt_hdr()
510 | (hdr->key_phase << 2) in ossl_quic_wire_encode_pkt_hdr()
511 | (hdr->pn_len - 1) in ossl_quic_wire_encode_pkt_hdr()
512 | (hdr->reserved << 3) in ossl_quic_wire_encode_pkt_hdr()
516 || !WPACKET_memcpy(pkt, hdr->dst_conn_id.id, short_conn_id_len) in ossl_quic_wire_encode_pkt_hdr()
518 || !WPACKET_memcpy(pkt, hdr->pn, hdr->pn_len)) in ossl_quic_wire_encode_pkt_hdr()
524 if (hdr->dst_conn_id.id_len > QUIC_MAX_CONN_ID_LEN in ossl_quic_wire_encode_pkt_hdr()
525 || hdr->src_conn_id.id_len > QUIC_MAX_CONN_ID_LEN) in ossl_quic_wire_encode_pkt_hdr()
528 if (ossl_quic_pkt_type_has_pn(hdr->type) in ossl_quic_wire_encode_pkt_hdr()
529 && (hdr->pn_len < 1 || hdr->pn_len > 4)) in ossl_quic_wire_encode_pkt_hdr()
532 switch (hdr->type) { in ossl_quic_wire_encode_pkt_hdr()
534 if (hdr->version != 0) in ossl_quic_wire_encode_pkt_hdr()
550 if (hdr->type != QUIC_PKT_TYPE_VERSION_NEG || hdr->fixed) in ossl_quic_wire_encode_pkt_hdr()
552 if (ossl_quic_pkt_type_has_pn(hdr->type)) { in ossl_quic_wire_encode_pkt_hdr()
553 b0 |= hdr->pn_len - 1; in ossl_quic_wire_encode_pkt_hdr()
554 b0 |= (hdr->reserved << 2); in ossl_quic_wire_encode_pkt_hdr()
556 if (hdr->type == QUIC_PKT_TYPE_RETRY) in ossl_quic_wire_encode_pkt_hdr()
557 b0 |= hdr->unused; in ossl_quic_wire_encode_pkt_hdr()
560 || !WPACKET_put_bytes_u32(pkt, hdr->version) in ossl_quic_wire_encode_pkt_hdr()
561 || !WPACKET_put_bytes_u8(pkt, hdr->dst_conn_id.id_len) in ossl_quic_wire_encode_pkt_hdr()
562 || !WPACKET_memcpy(pkt, hdr->dst_conn_id.id, in ossl_quic_wire_encode_pkt_hdr()
563 hdr->dst_conn_id.id_len) in ossl_quic_wire_encode_pkt_hdr()
564 || !WPACKET_put_bytes_u8(pkt, hdr->src_conn_id.id_len) in ossl_quic_wire_encode_pkt_hdr()
565 || !WPACKET_memcpy(pkt, hdr->src_conn_id.id, in ossl_quic_wire_encode_pkt_hdr()
566 hdr->src_conn_id.id_len)) in ossl_quic_wire_encode_pkt_hdr()
569 if (hdr->type == QUIC_PKT_TYPE_VERSION_NEG) { in ossl_quic_wire_encode_pkt_hdr()
570 if (hdr->len > 0 && !WPACKET_reserve_bytes(pkt, hdr->len, NULL)) in ossl_quic_wire_encode_pkt_hdr()
576 if (hdr->type == QUIC_PKT_TYPE_INITIAL) { in ossl_quic_wire_encode_pkt_hdr()
577 if (!WPACKET_quic_write_vlint(pkt, hdr->token_len) in ossl_quic_wire_encode_pkt_hdr()
578 || !WPACKET_memcpy(pkt, hdr->token, hdr->token_len)) in ossl_quic_wire_encode_pkt_hdr()
582 if (hdr->type == QUIC_PKT_TYPE_RETRY) { in ossl_quic_wire_encode_pkt_hdr()
583 if (!WPACKET_memcpy(pkt, hdr->token, hdr->token_len)) in ossl_quic_wire_encode_pkt_hdr()
588 if (!WPACKET_quic_write_vlint(pkt, hdr->len + hdr->pn_len) in ossl_quic_wire_encode_pkt_hdr()
590 || !WPACKET_memcpy(pkt, hdr->pn, hdr->pn_len)) in ossl_quic_wire_encode_pkt_hdr()
594 if (hdr->len > 0 && !WPACKET_reserve_bytes(pkt, hdr->len, NULL)) in ossl_quic_wire_encode_pkt_hdr()
603 = WPACKET_get_curr(pkt) + hdr->len - ptrs->raw_sample; in ossl_quic_wire_encode_pkt_hdr()
611 const QUIC_PKT_HDR *hdr) in ossl_quic_wire_get_encoded_pkt_hdr_len() argument
616 if (hdr->partial in ossl_quic_wire_get_encoded_pkt_hdr_len()
617 || (hdr->type == QUIC_PKT_TYPE_1RTT in ossl_quic_wire_get_encoded_pkt_hdr_len()
618 && hdr->dst_conn_id.id_len != short_conn_id_len)) in ossl_quic_wire_get_encoded_pkt_hdr_len()
621 if (hdr->type == QUIC_PKT_TYPE_1RTT) { in ossl_quic_wire_get_encoded_pkt_hdr_len()
628 if (hdr->dst_conn_id.id_len != short_conn_id_len in ossl_quic_wire_get_encoded_pkt_hdr_len()
630 || hdr->pn_len < 1 || hdr->pn_len > 4) in ossl_quic_wire_get_encoded_pkt_hdr_len()
633 return 1 + short_conn_id_len + hdr->pn_len; in ossl_quic_wire_get_encoded_pkt_hdr_len()
636 if (hdr->dst_conn_id.id_len > QUIC_MAX_CONN_ID_LEN in ossl_quic_wire_get_encoded_pkt_hdr_len()
637 || hdr->src_conn_id.id_len > QUIC_MAX_CONN_ID_LEN) in ossl_quic_wire_get_encoded_pkt_hdr_len()
641 + 1 + hdr->dst_conn_id.id_len /* DCID Len, DCID */ in ossl_quic_wire_get_encoded_pkt_hdr_len()
642 + 1 + hdr->src_conn_id.id_len /* SCID Len, SCID */ in ossl_quic_wire_get_encoded_pkt_hdr_len()
645 if (ossl_quic_pkt_type_has_pn(hdr->type)) { in ossl_quic_wire_get_encoded_pkt_hdr_len()
646 if (hdr->pn_len < 1 || hdr->pn_len > 4) in ossl_quic_wire_get_encoded_pkt_hdr_len()
649 len += hdr->pn_len; in ossl_quic_wire_get_encoded_pkt_hdr_len()
652 if (hdr->type == QUIC_PKT_TYPE_INITIAL) { in ossl_quic_wire_get_encoded_pkt_hdr_len()
653 enclen = ossl_quic_vlint_encode_len(hdr->token_len); in ossl_quic_wire_get_encoded_pkt_hdr_len()
657 len += enclen + hdr->token_len; in ossl_quic_wire_get_encoded_pkt_hdr_len()
660 if (!ossl_quic_pkt_type_must_be_last(hdr->type)) { in ossl_quic_wire_get_encoded_pkt_hdr_len()
661 enclen = ossl_quic_vlint_encode_len(hdr->len + hdr->pn_len); in ossl_quic_wire_get_encoded_pkt_hdr_len()
821 const QUIC_PKT_HDR *hdr, in ossl_quic_validate_retry_integrity_tag() argument
827 if (hdr == NULL || hdr->len < QUIC_RETRY_INTEGRITY_TAG_LEN) in ossl_quic_validate_retry_integrity_tag()
831 hdr, client_initial_dcid, in ossl_quic_validate_retry_integrity_tag()
835 actual_tag = hdr->data + hdr->len - QUIC_RETRY_INTEGRITY_TAG_LEN; in ossl_quic_validate_retry_integrity_tag()
854 const QUIC_PKT_HDR *hdr, in ossl_quic_calculate_retry_integrity_tag() argument
867 if (hdr->type != QUIC_PKT_TYPE_RETRY || hdr->version == 0 in ossl_quic_calculate_retry_integrity_tag()
868 || hdr->len < QUIC_RETRY_INTEGRITY_TAG_LEN in ossl_quic_calculate_retry_integrity_tag()
869 || hdr->data == NULL in ossl_quic_calculate_retry_integrity_tag()
881 hdr2 = *hdr; in ossl_quic_calculate_retry_integrity_tag()
935 if (EVP_CipherUpdate(cctx, NULL, &l, hdr->data, in ossl_quic_calculate_retry_integrity_tag()
936 hdr->len - QUIC_RETRY_INTEGRITY_TAG_LEN) != 1) { in ossl_quic_calculate_retry_integrity_tag()