MCPcopy Index your code
hub / github.com/XTLS/Go / establishKeys

Method establishKeys

handshake_server.go:678–701  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

676}
677
678func (hs *serverHandshakeState) establishKeys() error {
679 c := hs.c
680
681 clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV :=
682 keysFromMasterSecret(c.vers, hs.suite, hs.masterSecret, hs.clientHello.random, hs.hello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen)
683
684 var clientCipher, serverCipher any
685 var clientHash, serverHash hash.Hash
686
687 if hs.suite.aead == nil {
688 clientCipher = hs.suite.cipher(clientKey, clientIV, true /* for reading */)
689 clientHash = hs.suite.mac(clientMAC)
690 serverCipher = hs.suite.cipher(serverKey, serverIV, false /* not for reading */)
691 serverHash = hs.suite.mac(serverMAC)
692 } else {
693 clientCipher = hs.suite.aead(clientKey, clientIV)
694 serverCipher = hs.suite.aead(serverKey, serverIV)
695 }
696
697 c.in.prepareCipherSpec(c.vers, clientCipher, clientHash)
698 c.out.prepareCipherSpec(c.vers, serverCipher, serverHash)
699
700 return nil
701}
702
703func (hs *serverHandshakeState) readFinished(out []byte) error {
704 c := hs.c

Callers 1

handshakeMethod · 0.95

Calls 2

keysFromMasterSecretFunction · 0.85
prepareCipherSpecMethod · 0.80

Tested by

no test coverage detected