mirror of
https://github.com/bol-van/zapret.git
synced 2026-01-27 12:50:33 +03:00
AI inspired fixes
This commit is contained in:
@@ -615,24 +615,18 @@ bool IsQUICCryptoHello(const uint8_t *data, size_t len, size_t *hello_offset, si
|
|||||||
uint8_t QUICDraftVersion(uint32_t version)
|
uint8_t QUICDraftVersion(uint32_t version)
|
||||||
{
|
{
|
||||||
/* IETF Draft versions */
|
/* IETF Draft versions */
|
||||||
if ((version >> 8) == 0xff0000) {
|
if ((version >> 8) == 0xff0000)
|
||||||
return (uint8_t)version;
|
return (uint8_t)version;
|
||||||
}
|
|
||||||
/* Facebook mvfst, based on draft -22. */
|
/* Facebook mvfst, based on draft -22. */
|
||||||
if (version == 0xfaceb001) {
|
if (version == 0xfaceb001)
|
||||||
return 22;
|
return 22;
|
||||||
}
|
|
||||||
/* Facebook mvfst, based on draft -27. */
|
/* Facebook mvfst, based on draft -27. */
|
||||||
if (version == 0xfaceb002 || version == 0xfaceb00e) {
|
if (version == 0xfaceb002 || version == 0xfaceb00e)
|
||||||
return 27;
|
return 27;
|
||||||
}
|
|
||||||
/* GQUIC Q050, T050 and T051: they are not really based on any drafts,
|
/* GQUIC Q050, T050 and T051: they are not really based on any drafts,
|
||||||
* but we must return a sensible value */
|
* but we must return a sensible value */
|
||||||
if (version == 0x51303530 ||
|
if (version == 0x51303530 || version == 0x54303530 || version == 0x54303531)
|
||||||
version == 0x54303530 ||
|
|
||||||
version == 0x54303531) {
|
|
||||||
return 27;
|
return 27;
|
||||||
}
|
|
||||||
/* https://tools.ietf.org/html/draft-ietf-quic-transport-32#section-15
|
/* 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
|
"Versions that follow the pattern 0x?a?a?a?a are reserved for use in
|
||||||
forcing version negotiation to be exercised"
|
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
|
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
|
we don't have a real version here! Let's hope that we need to handle
|
||||||
only latest drafts... */
|
only latest drafts... */
|
||||||
if ((version & 0x0F0F0F0F) == 0x0a0a0a0a) {
|
if ((version & 0x0F0F0F0F) == 0x0a0a0a0a)
|
||||||
return 29;
|
return 29;
|
||||||
}
|
|
||||||
/* QUIC (final?) constants for v1 are defined in draft-33, but draft-34 is the
|
/* QUIC (final?) constants for v1 are defined in draft-33, but draft-34 is the
|
||||||
final draft version */
|
final draft version */
|
||||||
if (version == 0x00000001) {
|
if (version == 0x00000001)
|
||||||
return 34;
|
return 34;
|
||||||
}
|
|
||||||
/* QUIC Version 2 */
|
/* QUIC Version 2 */
|
||||||
/* TODO: for the time being use 100 as a number for V2 and let see how v2 drafts evolve */
|
/* 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 100;
|
||||||
}
|
|
||||||
return 0;
|
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)
|
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)
|
static bool quic_hkdf_expand_label(const uint8_t *secret, uint8_t secret_len, const char *label, uint8_t *out, size_t out_len)
|
||||||
|
|||||||
Reference in New Issue
Block a user