Rod Hynes 5 лет назад
Родитель
Сommit
dc72a27b74
3 измененных файлов с 24 добавлено и 18 удалено
  1. 12 10
      psiphon/common/protocol/protocol.go
  2. 8 7
      psiphon/common/quic/quic.go
  3. 4 1
      psiphon/dialParameters.go

+ 12 - 10
psiphon/common/protocol/protocol.go

@@ -370,12 +370,13 @@ func (labeledProfiles LabeledTLSProfiles) PruneInvalid(customTLSProfiles []strin
 }
 
 const (
-	QUIC_VERSION_GQUIC39                 = "gQUICv39"
-	QUIC_VERSION_GQUIC43                 = "gQUICv43"
-	QUIC_VERSION_GQUIC44                 = "gQUICv44"
-	QUIC_VERSION_OBFUSCATED              = "OBFUSCATED"
-	QUIC_VERSION_IETF_DRAFT29            = "IETF-draft-29"
-	QUIC_VERSION_RANDOMIZED_IETF_DRAFT29 = "Randomized-IETF-draft-29"
+	QUIC_VERSION_GQUIC39           = "gQUICv39"
+	QUIC_VERSION_GQUIC43           = "gQUICv43"
+	QUIC_VERSION_GQUIC44           = "gQUICv44"
+	QUIC_VERSION_OBFUSCATED        = "OBFUSCATED"
+	QUIC_VERSION_IETF29            = "IETFv29"
+	QUIC_VERSION_RANDOMIZED_IETF29 = "RANDOMIZED-IETFv29"
+	QUIC_VERSION_OBFUSCATED_IETF29 = "OBFUSCATED-IETFv29"
 )
 
 var SupportedQUICVersions = QUICVersions{
@@ -383,8 +384,9 @@ var SupportedQUICVersions = QUICVersions{
 	QUIC_VERSION_GQUIC43,
 	QUIC_VERSION_GQUIC44,
 	QUIC_VERSION_OBFUSCATED,
-	QUIC_VERSION_IETF_DRAFT29,
-	QUIC_VERSION_RANDOMIZED_IETF_DRAFT29,
+	QUIC_VERSION_IETF29,
+	QUIC_VERSION_RANDOMIZED_IETF29,
+	QUIC_VERSION_OBFUSCATED_IETF29,
 }
 
 var legacyQUICVersions = QUICVersions{
@@ -392,11 +394,11 @@ var legacyQUICVersions = QUICVersions{
 }
 
 func QUICVersionHasRandomizedClientHello(version string) bool {
-	return version == QUIC_VERSION_RANDOMIZED_IETF_DRAFT29
+	return version == QUIC_VERSION_RANDOMIZED_IETF29
 }
 
 func QUICVersionIsObfuscated(version string) bool {
-	return version == QUIC_VERSION_OBFUSCATED
+	return version == QUIC_VERSION_OBFUSCATED || version == QUIC_VERSION_OBFUSCATED_IETF29
 }
 
 type QUICVersions []string

+ 8 - 7
psiphon/common/quic/quic.go

@@ -80,12 +80,13 @@ func Enabled() bool {
 const ietfQUICDraft29VersionNumber = 0xff00001d
 
 var supportedVersionNumbers = map[string]uint32{
-	protocol.QUIC_VERSION_GQUIC39:                 uint32(gquic.VersionGQUIC39),
-	protocol.QUIC_VERSION_GQUIC43:                 uint32(gquic.VersionGQUIC43),
-	protocol.QUIC_VERSION_GQUIC44:                 uint32(gquic.VersionGQUIC44),
-	protocol.QUIC_VERSION_OBFUSCATED:              uint32(gquic.VersionGQUIC43),
-	protocol.QUIC_VERSION_IETF_DRAFT29:            ietfQUICDraft29VersionNumber,
-	protocol.QUIC_VERSION_RANDOMIZED_IETF_DRAFT29: ietfQUICDraft29VersionNumber,
+	protocol.QUIC_VERSION_GQUIC39:           uint32(gquic.VersionGQUIC39),
+	protocol.QUIC_VERSION_GQUIC43:           uint32(gquic.VersionGQUIC43),
+	protocol.QUIC_VERSION_GQUIC44:           uint32(gquic.VersionGQUIC44),
+	protocol.QUIC_VERSION_OBFUSCATED:        uint32(gquic.VersionGQUIC43),
+	protocol.QUIC_VERSION_IETF29:            ietfQUICDraft29VersionNumber,
+	protocol.QUIC_VERSION_RANDOMIZED_IETF29: ietfQUICDraft29VersionNumber,
+	protocol.QUIC_VERSION_OBFUSCATED_IETF29: uint32(ietfQUICDraft29VersionNumber),
 }
 
 func isObfuscated(quicVersion string) bool {
@@ -93,7 +94,7 @@ func isObfuscated(quicVersion string) bool {
 }
 
 func isClientHelloRandomized(quicVersion string) bool {
-	return quicVersion == protocol.QUIC_VERSION_RANDOMIZED_IETF_DRAFT29
+	return quicVersion == protocol.QUIC_VERSION_RANDOMIZED_IETF29
 }
 
 func isIETFVersion(versionNumber uint32) bool {

+ 4 - 1
psiphon/dialParameters.go

@@ -992,7 +992,10 @@ func selectQUICVersion(
 	if isFronted {
 		if frontingProviderID == "" {
 			// Legacy server entry case
-			disableQUICVersions = protocol.QUICVersions{protocol.QUIC_VERSION_IETF_DRAFT29}
+			disableQUICVersions = protocol.QUICVersions{
+				protocol.QUIC_VERSION_IETF29,
+				protocol.QUIC_VERSION_RANDOMIZED_IETF29,
+			}
 		} else {
 			disableQUICVersions = p.LabeledQUICVersions(
 				parameters.DisableFrontingProviderQUICVersions, frontingProviderID)