forked from quic-go/quic-go
simplify the crypto setup constructors
This commit is contained in:
@@ -95,12 +95,6 @@ type cryptoSetup struct {
|
|||||||
var _ qtls.RecordLayer = &cryptoSetup{}
|
var _ qtls.RecordLayer = &cryptoSetup{}
|
||||||
var _ CryptoSetup = &cryptoSetup{}
|
var _ CryptoSetup = &cryptoSetup{}
|
||||||
|
|
||||||
type versionInfo struct {
|
|
||||||
initialVersion protocol.VersionNumber
|
|
||||||
supportedVersions []protocol.VersionNumber
|
|
||||||
currentVersion protocol.VersionNumber
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewCryptoSetupClient creates a new crypto setup for the client
|
// NewCryptoSetupClient creates a new crypto setup for the client
|
||||||
func NewCryptoSetupClient(
|
func NewCryptoSetupClient(
|
||||||
initialStream io.Writer,
|
initialStream io.Writer,
|
||||||
@@ -115,18 +109,21 @@ func NewCryptoSetupClient(
|
|||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
perspective protocol.Perspective,
|
perspective protocol.Perspective,
|
||||||
) (CryptoSetup, <-chan struct{} /* ClientHello written */, error) {
|
) (CryptoSetup, <-chan struct{} /* ClientHello written */, error) {
|
||||||
|
extHandler, receivedTransportParams := newExtensionHandlerClient(
|
||||||
|
params,
|
||||||
|
initialVersion,
|
||||||
|
supportedVersions,
|
||||||
|
currentVersion,
|
||||||
|
logger,
|
||||||
|
)
|
||||||
return newCryptoSetup(
|
return newCryptoSetup(
|
||||||
initialStream,
|
initialStream,
|
||||||
handshakeStream,
|
handshakeStream,
|
||||||
connID,
|
connID,
|
||||||
params,
|
extHandler,
|
||||||
|
receivedTransportParams,
|
||||||
handleParams,
|
handleParams,
|
||||||
tlsConf,
|
tlsConf,
|
||||||
versionInfo{
|
|
||||||
currentVersion: currentVersion,
|
|
||||||
initialVersion: initialVersion,
|
|
||||||
supportedVersions: supportedVersions,
|
|
||||||
},
|
|
||||||
logger,
|
logger,
|
||||||
perspective,
|
perspective,
|
||||||
)
|
)
|
||||||
@@ -145,17 +142,20 @@ func NewCryptoSetupServer(
|
|||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
perspective protocol.Perspective,
|
perspective protocol.Perspective,
|
||||||
) (CryptoSetup, error) {
|
) (CryptoSetup, error) {
|
||||||
|
extHandler, receivedTransportParams := newExtensionHandlerServer(
|
||||||
|
params,
|
||||||
|
supportedVersions,
|
||||||
|
currentVersion,
|
||||||
|
logger,
|
||||||
|
)
|
||||||
cs, _, err := newCryptoSetup(
|
cs, _, err := newCryptoSetup(
|
||||||
initialStream,
|
initialStream,
|
||||||
handshakeStream,
|
handshakeStream,
|
||||||
connID,
|
connID,
|
||||||
params,
|
extHandler,
|
||||||
|
receivedTransportParams,
|
||||||
handleParams,
|
handleParams,
|
||||||
tlsConf,
|
tlsConf,
|
||||||
versionInfo{
|
|
||||||
currentVersion: currentVersion,
|
|
||||||
supportedVersions: supportedVersions,
|
|
||||||
},
|
|
||||||
logger,
|
logger,
|
||||||
perspective,
|
perspective,
|
||||||
)
|
)
|
||||||
@@ -166,10 +166,10 @@ func newCryptoSetup(
|
|||||||
initialStream io.Writer,
|
initialStream io.Writer,
|
||||||
handshakeStream io.Writer,
|
handshakeStream io.Writer,
|
||||||
connID protocol.ConnectionID,
|
connID protocol.ConnectionID,
|
||||||
params *TransportParameters,
|
extHandler tlsExtensionHandler,
|
||||||
|
transportParamChan <-chan TransportParameters,
|
||||||
handleParams func(*TransportParameters),
|
handleParams func(*TransportParameters),
|
||||||
tlsConf *tls.Config,
|
tlsConf *tls.Config,
|
||||||
versionInfo versionInfo,
|
|
||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
perspective protocol.Perspective,
|
perspective protocol.Perspective,
|
||||||
) (CryptoSetup, <-chan struct{} /* ClientHello written */, error) {
|
) (CryptoSetup, <-chan struct{} /* ClientHello written */, error) {
|
||||||
@@ -178,40 +178,23 @@ func newCryptoSetup(
|
|||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
cs := &cryptoSetup{
|
cs := &cryptoSetup{
|
||||||
initialStream: initialStream,
|
initialStream: initialStream,
|
||||||
initialAEAD: initialAEAD,
|
initialAEAD: initialAEAD,
|
||||||
handshakeStream: handshakeStream,
|
handshakeStream: handshakeStream,
|
||||||
readEncLevel: protocol.EncryptionInitial,
|
readEncLevel: protocol.EncryptionInitial,
|
||||||
writeEncLevel: protocol.EncryptionInitial,
|
writeEncLevel: protocol.EncryptionInitial,
|
||||||
handleParamsCallback: handleParams,
|
handleParamsCallback: handleParams,
|
||||||
logger: logger,
|
receivedTransportParams: transportParamChan,
|
||||||
perspective: perspective,
|
logger: logger,
|
||||||
handshakeDone: make(chan struct{}),
|
perspective: perspective,
|
||||||
handshakeErrChan: make(chan struct{}),
|
handshakeDone: make(chan struct{}),
|
||||||
messageErrChan: make(chan error, 1),
|
handshakeErrChan: make(chan struct{}),
|
||||||
clientHelloWrittenChan: make(chan struct{}),
|
messageErrChan: make(chan error, 1),
|
||||||
messageChan: make(chan []byte, 100),
|
clientHelloWrittenChan: make(chan struct{}),
|
||||||
receivedReadKey: make(chan struct{}),
|
messageChan: make(chan []byte, 100),
|
||||||
receivedWriteKey: make(chan struct{}),
|
receivedReadKey: make(chan struct{}),
|
||||||
closeChan: make(chan struct{}),
|
receivedWriteKey: make(chan struct{}),
|
||||||
}
|
closeChan: make(chan struct{}),
|
||||||
var extHandler tlsExtensionHandler
|
|
||||||
switch perspective {
|
|
||||||
case protocol.PerspectiveClient:
|
|
||||||
extHandler, cs.receivedTransportParams = newExtensionHandlerClient(
|
|
||||||
params,
|
|
||||||
versionInfo.initialVersion,
|
|
||||||
versionInfo.supportedVersions,
|
|
||||||
versionInfo.currentVersion,
|
|
||||||
logger,
|
|
||||||
)
|
|
||||||
case protocol.PerspectiveServer:
|
|
||||||
extHandler, cs.receivedTransportParams = newExtensionHandlerServer(
|
|
||||||
params,
|
|
||||||
versionInfo.supportedVersions,
|
|
||||||
versionInfo.currentVersion,
|
|
||||||
logger,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
qtlsConf := tlsConfigToQtlsConfig(tlsConf)
|
qtlsConf := tlsConfigToQtlsConfig(tlsConf)
|
||||||
qtlsConf.AlternativeRecordLayer = cs
|
qtlsConf.AlternativeRecordLayer = cs
|
||||||
|
|||||||
Reference in New Issue
Block a user