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

Method establishKeys

handshake_server.go:786–809  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

784}
785
786func (hs *serverHandshakeState) establishKeys() error {
787 c := hs.c
788
789 clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV :=
790 keysFromMasterSecret(c.vers, hs.suite, hs.masterSecret, hs.clientHello.random, hs.hello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen)
791
792 var clientCipher, serverCipher any
793 var clientHash, serverHash hash.Hash
794
795 if hs.suite.aead == nil {
796 clientCipher = hs.suite.cipher(clientKey, clientIV, true /* for reading */)
797 clientHash = hs.suite.mac(clientMAC)
798 serverCipher = hs.suite.cipher(serverKey, serverIV, false /* not for reading */)
799 serverHash = hs.suite.mac(serverMAC)
800 } else {
801 clientCipher = hs.suite.aead(clientKey, clientIV)
802 serverCipher = hs.suite.aead(serverKey, serverIV)
803 }
804
805 c.in.prepareCipherSpec(c.vers, clientCipher, clientHash)
806 c.out.prepareCipherSpec(c.vers, serverCipher, serverHash)
807
808 return nil
809}
810
811func (hs *serverHandshakeState) readFinished(out []byte) error {
812 c := hs.c

Callers 1

handshakeMethod · 0.95

Calls 2

keysFromMasterSecretFunction · 0.85
prepareCipherSpecMethod · 0.80

Tested by

no test coverage detected