read SHLOs in cryptoSetupCleint

This commit is contained in:
Marten Seemann
2016-11-08 17:40:03 +07:00
parent 17c5147aa4
commit 1031ad5288

View File

@@ -17,7 +17,7 @@ type cryptoSetupClient struct {
cryptoStream utils.Stream
hasServerConfig bool
serverConfig *serverConfigClient
}
var _ crypto.AEAD = &cryptoSetupClient{}
@@ -43,13 +43,25 @@ func (h *cryptoSetupClient) HandleCryptoStream() error {
}
for {
var chloData bytes.Buffer
messageTag, cryptoData, err := ParseHandshakeMessage(io.TeeReader(h.cryptoStream, &chloData))
_ = cryptoData
utils.Debugf("Received message on Crypto Stream. MessageTag: %#v", messageTag)
var shloData bytes.Buffer
messageTag, cryptoData, err := ParseHandshakeMessage(io.TeeReader(h.cryptoStream, &shloData))
if err != nil {
return qerr.HandshakeFailed
}
if messageTag == TagSHLO {
utils.Debugf("Got SHLO:\n%s", printHandshakeMessage(cryptoData))
} else if messageTag == TagREJ {
utils.Debugf("Got REJ:\n%s", printHandshakeMessage(cryptoData))
if scfg, ok := cryptoData[TagSCFG]; ok {
h.serverConfig, err = parseServerConfig(scfg)
if err != nil {
return err
}
}
} else {
return qerr.InvalidCryptoMessageType
}
}
}