Loading nfq/protocol.c +9 −17 Original line number Diff line number Diff line Loading @@ -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" Loading @@ -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; } Loading @@ -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) Loading Loading
nfq/protocol.c +9 −17 Original line number Diff line number Diff line Loading @@ -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" Loading @@ -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; } Loading @@ -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) Loading