qtls.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package handshake
  2. import (
  3. "crypto/tls"
  4. "v2ray.com/core/external/github.com/marten-seemann/qtls"
  5. )
  6. func tlsConfigToQtlsConfig(c *tls.Config) *qtls.Config {
  7. if c == nil {
  8. c = &tls.Config{}
  9. }
  10. // QUIC requires TLS 1.3 or newer
  11. minVersion := c.MinVersion
  12. if minVersion < qtls.VersionTLS13 {
  13. minVersion = qtls.VersionTLS13
  14. }
  15. maxVersion := c.MaxVersion
  16. if maxVersion < qtls.VersionTLS13 {
  17. maxVersion = qtls.VersionTLS13
  18. }
  19. return &qtls.Config{
  20. Rand: c.Rand,
  21. Time: c.Time,
  22. Certificates: c.Certificates,
  23. NameToCertificate: c.NameToCertificate,
  24. // TODO: make GetCertificate work
  25. // GetCertificate: c.GetCertificate,
  26. GetClientCertificate: c.GetClientCertificate,
  27. // TODO: make GetConfigForClient work
  28. // GetConfigForClient: c.GetConfigForClient,
  29. VerifyPeerCertificate: c.VerifyPeerCertificate,
  30. RootCAs: c.RootCAs,
  31. NextProtos: c.NextProtos,
  32. ServerName: c.ServerName,
  33. ClientAuth: c.ClientAuth,
  34. ClientCAs: c.ClientCAs,
  35. InsecureSkipVerify: c.InsecureSkipVerify,
  36. CipherSuites: c.CipherSuites,
  37. PreferServerCipherSuites: c.PreferServerCipherSuites,
  38. SessionTicketsDisabled: c.SessionTicketsDisabled,
  39. SessionTicketKey: c.SessionTicketKey,
  40. MinVersion: minVersion,
  41. MaxVersion: maxVersion,
  42. CurvePreferences: c.CurvePreferences,
  43. DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled,
  44. Renegotiation: c.Renegotiation,
  45. KeyLogWriter: c.KeyLogWriter,
  46. }
  47. }