Commit a775aa7a authored by bol-van's avatar bol-van
Browse files

AI inspired fixes

parent 0cdbf089
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -615,24 +615,18 @@ bool IsQUICCryptoHello(const uint8_t *data, size_t len, size_t *hello_offset, si
uint8_t QUICDraftVersion(uint32_t version)
{
	/* IETF Draft versions */
	if ((version >> 8) == 0xff0000) {
	if ((version >> 8) == 0xff0000)
		return (uint8_t)version;
	}
	/* Facebook mvfst, based on draft -22. */
	if (version == 0xfaceb001) {
	if (version == 0xfaceb001)
		return 22;
	}
	/* Facebook mvfst, based on draft -27. */
	if (version == 0xfaceb002 || version == 0xfaceb00e) {
	if (version == 0xfaceb002 || version == 0xfaceb00e)
		return 27;
	}
	/* GQUIC Q050, T050 and T051: they are not really based on any drafts,
	 * but we must return a sensible value */
	if (version == 0x51303530 ||
		version == 0x54303530 ||
		version == 0x54303531) {
	if (version == 0x51303530 || version == 0x54303530 || version == 0x54303531)
		return 27;
	}
	/* https://tools.ietf.org/html/draft-ietf-quic-transport-32#section-15
	   "Versions that follow the pattern 0x?a?a?a?a are reserved for use in
	   forcing version negotiation to be exercised"
@@ -640,19 +634,17 @@ uint8_t QUICDraftVersion(uint32_t version)
	   used to select a proper salt (which depends on the version itself), but
	   we don't have a real version here! Let's hope that we need to handle
	   only latest drafts... */
	if ((version & 0x0F0F0F0F) == 0x0a0a0a0a) {
	if ((version & 0x0F0F0F0F) == 0x0a0a0a0a)
		return 29;
	}
	/* QUIC (final?) constants for v1 are defined in draft-33, but draft-34 is the
	   final draft version */
	if (version == 0x00000001) {
	if (version == 0x00000001)
		return 34;
	}
	/* QUIC Version 2 */
	/* TODO: for the time being use 100 as a number for V2 and let see how v2 drafts evolve */
	if (version == 0x709A50C4) {
	if ((version == 0x709A50C4) || (version == 0x6b3343cf))
		return 100;
	}

	return 0;
}

@@ -662,7 +654,7 @@ static bool is_quic_draft_max(uint32_t draft_version, uint8_t max_version)
}
static bool is_quic_v2(uint32_t version)
{
    return version == 0x6b3343cf;
    return (version == 0x709A50C4) || (version == 0x6b3343cf);
}

static bool quic_hkdf_expand_label(const uint8_t *secret, uint8_t secret_len, const char *label, uint8_t *out, size_t out_len)