offer an option to disable session resumption

pull/1524/head^2
Darien Raymond 2018-07-24 15:12:09 +02:00
parent cd7a8595d9
commit 896db7c50c
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
3 changed files with 51 additions and 36 deletions

View File

@ -143,8 +143,9 @@ func getGetCertificateFunc(c *tls.Config, ca []*Certificate) func(hello *tls.Cli
// GetTLSConfig converts this Config into tls.Config. // GetTLSConfig converts this Config into tls.Config.
func (c *Config) GetTLSConfig(opts ...Option) *tls.Config { func (c *Config) GetTLSConfig(opts ...Option) *tls.Config {
config := &tls.Config{ config := &tls.Config{
ClientSessionCache: globalSessionCache, ClientSessionCache: globalSessionCache,
RootCAs: c.getCertPool(), RootCAs: c.getCertPool(),
SessionTicketsDisabled: c.DisableSessionResumption,
} }
if c == nil { if c == nil {
return config return config

View File

@ -38,7 +38,7 @@ func (x Certificate_Usage) String() string {
return proto.EnumName(Certificate_Usage_name, int32(x)) return proto.EnumName(Certificate_Usage_name, int32(x))
} }
func (Certificate_Usage) EnumDescriptor() ([]byte, []int) { func (Certificate_Usage) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_config_e641ddfb53ec9d25, []int{0, 0} return fileDescriptor_config_257f0631bcf0ff71, []int{0, 0}
} }
type Certificate struct { type Certificate struct {
@ -56,7 +56,7 @@ func (m *Certificate) Reset() { *m = Certificate{} }
func (m *Certificate) String() string { return proto.CompactTextString(m) } func (m *Certificate) String() string { return proto.CompactTextString(m) }
func (*Certificate) ProtoMessage() {} func (*Certificate) ProtoMessage() {}
func (*Certificate) Descriptor() ([]byte, []int) { func (*Certificate) Descriptor() ([]byte, []int) {
return fileDescriptor_config_e641ddfb53ec9d25, []int{0} return fileDescriptor_config_257f0631bcf0ff71, []int{0}
} }
func (m *Certificate) XXX_Unmarshal(b []byte) error { func (m *Certificate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Certificate.Unmarshal(m, b) return xxx_messageInfo_Certificate.Unmarshal(m, b)
@ -107,17 +107,19 @@ type Config struct {
// Override server name. // Override server name.
ServerName string `protobuf:"bytes,3,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` ServerName string `protobuf:"bytes,3,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"`
// Lists of string as ALPN values. // Lists of string as ALPN values.
NextProtocol []string `protobuf:"bytes,4,rep,name=next_protocol,json=nextProtocol,proto3" json:"next_protocol,omitempty"` NextProtocol []string `protobuf:"bytes,4,rep,name=next_protocol,json=nextProtocol,proto3" json:"next_protocol,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` // Whether or not to disable session (ticket) resumption.
XXX_unrecognized []byte `json:"-"` DisableSessionResumption bool `protobuf:"varint,6,opt,name=disable_session_resumption,json=disableSessionResumption,proto3" json:"disable_session_resumption,omitempty"`
XXX_sizecache int32 `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *Config) Reset() { *m = Config{} } func (m *Config) Reset() { *m = Config{} }
func (m *Config) String() string { return proto.CompactTextString(m) } func (m *Config) String() string { return proto.CompactTextString(m) }
func (*Config) ProtoMessage() {} func (*Config) ProtoMessage() {}
func (*Config) Descriptor() ([]byte, []int) { func (*Config) Descriptor() ([]byte, []int) {
return fileDescriptor_config_e641ddfb53ec9d25, []int{1} return fileDescriptor_config_257f0631bcf0ff71, []int{1}
} }
func (m *Config) XXX_Unmarshal(b []byte) error { func (m *Config) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Config.Unmarshal(m, b) return xxx_messageInfo_Config.Unmarshal(m, b)
@ -172,6 +174,13 @@ func (m *Config) GetNextProtocol() []string {
return nil return nil
} }
func (m *Config) GetDisableSessionResumption() bool {
if m != nil {
return m.DisableSessionResumption
}
return false
}
func init() { func init() {
proto.RegisterType((*Certificate)(nil), "v2ray.core.transport.internet.tls.Certificate") proto.RegisterType((*Certificate)(nil), "v2ray.core.transport.internet.tls.Certificate")
proto.RegisterType((*Config)(nil), "v2ray.core.transport.internet.tls.Config") proto.RegisterType((*Config)(nil), "v2ray.core.transport.internet.tls.Config")
@ -179,33 +188,35 @@ func init() {
} }
func init() { func init() {
proto.RegisterFile("v2ray.com/core/transport/internet/tls/config.proto", fileDescriptor_config_e641ddfb53ec9d25) proto.RegisterFile("v2ray.com/core/transport/internet/tls/config.proto", fileDescriptor_config_257f0631bcf0ff71)
} }
var fileDescriptor_config_e641ddfb53ec9d25 = []byte{ var fileDescriptor_config_257f0631bcf0ff71 = []byte{
// 376 bytes of a gzipped FileDescriptorProto // 413 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0x51, 0x8f, 0x93, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xd1, 0x6e, 0xd3, 0x30,
0x10, 0x80, 0x05, 0xec, 0xc5, 0x1b, 0x7a, 0x27, 0x59, 0x2f, 0x86, 0x37, 0xb9, 0x9a, 0x26, 0x3c, 0x14, 0x86, 0x49, 0x42, 0x2b, 0x76, 0xda, 0x8d, 0xc8, 0x4c, 0x28, 0xe2, 0x86, 0xac, 0x68, 0x52,
0x2d, 0x09, 0xf6, 0x0f, 0x28, 0x62, 0x8a, 0xc6, 0x4a, 0xb6, 0xb4, 0x49, 0x7d, 0x21, 0xeb, 0x66, 0xaf, 0x1c, 0x29, 0xec, 0x92, 0x1b, 0x08, 0x41, 0x0b, 0x88, 0x52, 0xb9, 0xe9, 0xa4, 0x71, 0x13,
0x5b, 0x49, 0x80, 0x6d, 0x76, 0xb7, 0xd5, 0xfe, 0x25, 0xff, 0x8e, 0xbf, 0xc7, 0xc4, 0x00, 0x6d, 0x79, 0xe6, 0x6c, 0x58, 0x4a, 0xec, 0xca, 0x76, 0x07, 0x7d, 0x25, 0x5e, 0x81, 0xc7, 0xe0, 0x85,
0x2d, 0x4f, 0x8d, 0x6f, 0xcc, 0x37, 0xdf, 0xcc, 0x30, 0xb3, 0x10, 0xee, 0x43, 0x49, 0x0f, 0x98, 0x50, 0x93, 0xb6, 0xb4, 0x57, 0x13, 0x77, 0x3e, 0xff, 0xf9, 0xce, 0xb1, 0xff, 0xdf, 0x90, 0xde,
0x89, 0x2a, 0x60, 0x42, 0xf2, 0x40, 0x4b, 0x5a, 0xab, 0xad, 0x90, 0x3a, 0x28, 0x6a, 0xcd, 0x65, 0xa7, 0x86, 0xaf, 0xa8, 0xd0, 0x4d, 0x22, 0xb4, 0xc1, 0xc4, 0x19, 0xae, 0xec, 0x42, 0x1b, 0x97,
0xcd, 0x75, 0xa0, 0x4b, 0x15, 0x30, 0x51, 0xaf, 0x8b, 0x0d, 0xde, 0x4a, 0xa1, 0x05, 0x7a, 0x3c, 0x48, 0xe5, 0xd0, 0x28, 0x74, 0x89, 0xab, 0x6d, 0x22, 0xb4, 0xba, 0x95, 0x77, 0x74, 0x61, 0xb4,
0xd5, 0x48, 0x8e, 0xcf, 0x3e, 0x3e, 0xf9, 0x58, 0x97, 0x6a, 0xf4, 0xdb, 0x00, 0x3b, 0xe2, 0x52, 0xd3, 0xe4, 0x6c, 0x3b, 0x63, 0x90, 0xee, 0x78, 0xba, 0xe5, 0xa9, 0xab, 0xed, 0xe8, 0x8f, 0x07,
0x17, 0xeb, 0x82, 0x51, 0xcd, 0x91, 0xd7, 0x0b, 0x5d, 0xc3, 0x33, 0xfc, 0x21, 0xe9, 0x19, 0x0e, 0x83, 0x0c, 0x8d, 0x93, 0xb7, 0x52, 0x70, 0x87, 0x24, 0x3e, 0x28, 0x23, 0x2f, 0xf6, 0xc6, 0x43,
0x58, 0x9f, 0xf8, 0xc1, 0x35, 0xdb, 0x4c, 0xf3, 0x89, 0x3e, 0xc2, 0x60, 0xa7, 0xe8, 0x86, 0xbb, 0x76, 0x40, 0x84, 0x10, 0x7c, 0xc2, 0x55, 0xe4, 0xb7, 0x9d, 0xf5, 0x91, 0x7c, 0x84, 0xde, 0xd2,
0x96, 0x67, 0xf8, 0xf7, 0xe1, 0x04, 0x5f, 0x1d, 0x8b, 0x2f, 0x1a, 0xe2, 0x45, 0x53, 0x4b, 0xba, 0xf2, 0x3b, 0x8c, 0x82, 0xd8, 0x1b, 0x9f, 0xa4, 0x17, 0xf4, 0xc1, 0x6b, 0xe9, 0xde, 0x42, 0x3a,
0x16, 0xa3, 0xf7, 0x30, 0x68, 0x63, 0xe4, 0xc0, 0x30, 0x9e, 0x45, 0x49, 0x3a, 0x8d, 0xc9, 0xe7, 0x5f, 0xcf, 0xb2, 0x6e, 0xc5, 0xe8, 0x3d, 0xf4, 0xda, 0x9a, 0x84, 0x30, 0xcc, 0x27, 0x59, 0x31,
0x78, 0x96, 0x39, 0x4f, 0xd0, 0x03, 0x38, 0x6f, 0x17, 0xd9, 0xf4, 0x0b, 0x49, 0xb2, 0x55, 0xbe, 0xbd, 0xcc, 0xd9, 0xe7, 0x7c, 0x52, 0x86, 0x8f, 0xc8, 0x29, 0x84, 0x6f, 0xe7, 0xe5, 0xe5, 0x17,
0x8c, 0x49, 0xf2, 0x61, 0xe5, 0x18, 0xe8, 0x05, 0x3c, 0xff, 0x47, 0x93, 0xf9, 0x7c, 0x11, 0x3b, 0x56, 0x94, 0xd7, 0xd5, 0x55, 0xce, 0x8a, 0x0f, 0xd7, 0xa1, 0x47, 0x9e, 0xc1, 0xd3, 0x7f, 0x6a,
0xe6, 0xe8, 0x8f, 0x01, 0x37, 0x51, 0x7b, 0x09, 0x34, 0x86, 0x7b, 0x5a, 0x96, 0xe2, 0x47, 0x5e, 0x31, 0x9b, 0xcd, 0xf3, 0xd0, 0x1f, 0xfd, 0xf6, 0xa1, 0x9f, 0xb5, 0x49, 0x90, 0x73, 0x38, 0xe1,
0xd4, 0x8a, 0xb3, 0x9d, 0xec, 0x76, 0x7a, 0x46, 0xee, 0x5a, 0x9a, 0x1c, 0x21, 0x9a, 0xc0, 0xcb, 0x75, 0xad, 0x7f, 0x54, 0x52, 0x59, 0x14, 0x4b, 0xd3, 0x79, 0x7a, 0xc2, 0x8e, 0x5b, 0xb5, 0xd8,
0xbe, 0x96, 0xb3, 0x62, 0xfb, 0x9d, 0x4b, 0xe5, 0x0e, 0x5a, 0xfd, 0xa1, 0xa7, 0x47, 0x5d, 0x0e, 0x88, 0xe4, 0x02, 0x9e, 0x1f, 0x62, 0x95, 0x90, 0x8b, 0xef, 0x68, 0x6c, 0xd4, 0x6b, 0xf1, 0xd3,
0xa5, 0x60, 0xb3, 0x8b, 0x6b, 0x99, 0x9e, 0xe5, 0xdb, 0x21, 0xfe, 0xbf, 0xfd, 0xc9, 0x65, 0x0b, 0x03, 0x3c, 0xeb, 0x7a, 0x64, 0x0a, 0x03, 0xb1, 0x97, 0x96, 0x1f, 0x07, 0xe3, 0x41, 0x4a, 0xff,
0xf4, 0x0a, 0x6c, 0xc5, 0xe5, 0x9e, 0xcb, 0xbc, 0xa6, 0x55, 0x77, 0xd1, 0x5b, 0x02, 0x1d, 0x9a, 0xcf, 0x3f, 0xdb, 0x5f, 0x41, 0x5e, 0xc2, 0xc0, 0xa2, 0xb9, 0x47, 0x53, 0x29, 0xde, 0x74, 0x89,
0xd1, 0x8a, 0xa3, 0xd7, 0x70, 0x57, 0xf3, 0x9f, 0x3a, 0x6f, 0x5f, 0x98, 0x89, 0xd2, 0x7d, 0xea, 0x1e, 0x31, 0xe8, 0xa4, 0x09, 0x6f, 0x90, 0xbc, 0x82, 0x63, 0x85, 0x3f, 0x5d, 0xd5, 0xfe, 0xb0,
0x59, 0xfe, 0x2d, 0x19, 0x36, 0x30, 0x3d, 0xb2, 0x77, 0x04, 0xc6, 0x4c, 0x54, 0xd7, 0xff, 0x23, 0xd0, 0x75, 0xf4, 0x38, 0x0e, 0xc6, 0x47, 0x6c, 0xb8, 0x16, 0xa7, 0x1b, 0x8d, 0xbc, 0x81, 0x17,
0x35, 0xbe, 0x5a, 0xba, 0x54, 0xbf, 0xcc, 0xc7, 0x65, 0x48, 0xe8, 0x01, 0x47, 0x8d, 0x9a, 0x9d, 0xdf, 0xa4, 0xe5, 0x37, 0x35, 0x56, 0x16, 0xad, 0x95, 0x5a, 0x55, 0x06, 0xed, 0xb2, 0x59, 0x38,
0xd5, 0xe4, 0xa4, 0x66, 0xa5, 0xfa, 0x76, 0xd3, 0x4e, 0x7c, 0xf3, 0x37, 0x00, 0x00, 0xff, 0xff, 0xa9, 0x55, 0xd4, 0x6f, 0x1d, 0x45, 0x1b, 0x62, 0xd6, 0x01, 0x6c, 0xd7, 0x7f, 0xc7, 0xe0, 0x5c,
0xd1, 0x3b, 0xdd, 0x37, 0x89, 0x02, 0x00, 0x00, 0xe8, 0xe6, 0x61, 0x17, 0x53, 0xef, 0x6b, 0xe0, 0x6a, 0xfb, 0xcb, 0x3f, 0xbb, 0x4a, 0x19, 0x5f,
0xd1, 0x6c, 0x8d, 0x96, 0x3b, 0xb4, 0xd8, 0xa2, 0x65, 0x6d, 0x6f, 0xfa, 0xed, 0x7b, 0x5f, 0xff,
0x0d, 0x00, 0x00, 0xff, 0xff, 0x80, 0x63, 0x12, 0xa7, 0xc7, 0x02, 0x00, 0x00,
} }

View File

@ -37,4 +37,7 @@ message Config {
// Lists of string as ALPN values. // Lists of string as ALPN values.
repeated string next_protocol = 4; repeated string next_protocol = 4;
// Whether or not to disable session (ticket) resumption.
bool disable_session_resumption = 6;
} }